diff --git a/.github/workflows/docker-release.yml b/.github/workflows/docker-release.yml deleted file mode 100644 index 18e5616..0000000 --- a/.github/workflows/docker-release.yml +++ /dev/null @@ -1,41 +0,0 @@ -name: Docker Release - -on: - push: - tags: - - "v*" - -jobs: - build: - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: 'Login to GitHub Container Registry' - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{github.actor}} - password: ${{secrets.GITHUB_TOKEN}} - - - name: Extract version from package.json - id: extract_version - run: | - VERSION=$(jq -r '.version' package.json) - echo "Version extracted: $VERSION" - echo "VERSION=$VERSION" >> $GITHUB_ENV - - - name: Build and push Docker image - run: | - docker build --build-arg VERSION=${{ env.VERSION }} \ - -t ghcr.io/${{ github.repository }}:${{ env.VERSION }} \ - -t ghcr.io/${{ github.repository }}:latest . - docker push ghcr.io/${{ github.repository }}:latest - docker push ghcr.io/${{ github.repository }}:${{ env.VERSION }} \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..3619923 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,45 @@ +name: ci + +on: + push: + branches: + - main + +jobs: + release: + runs-on: ubuntu-latest + outputs: + new-release-published: ${{ steps.release.outputs.new-release-published }} + new-release-version: ${{ steps.release.outputs.new-release-version }} + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 20 + - name: Run semantic-release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + id: release + run: | + npm install + npx semantic-release + + build: + runs-on: ubuntu-latest + needs: release + if: needs.release.outputs.new-release-published == 'true' + steps: + - uses: actions/checkout@v3 + - uses: docker/setup-buildx-action@v3 + - uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Build and push Docker image + run: | + docker build --build-arg VERSION=${{ needs.release.outputs.new-release-version }} \ + -t ghcr.io/${{ github.repository }}:${{ needs.release.outputs.new-release-version }} \ + -t ghcr.io/${{ github.repository }}:latest . + docker push ghcr.io/${{ github.repository }}:latest + docker push ghcr.io/${{ github.repository }}:${{ needs.release.outputs.new-release-version }} diff --git a/.releaserc b/.releaserc new file mode 100644 index 0000000..a9f94dd --- /dev/null +++ b/.releaserc @@ -0,0 +1,49 @@ +{ + "branches": ["main"], + "plugins": [ + [ + "@semantic-release/commit-analyzer", + { + "preset": "angular", + "releaseRules": [ + { "type": "docs", "release": false }, + { "type": "refactor", "release": false}, + { "type": "feat", "release": "minor" }, + { "type": "fix", "release": "patch" }, + { "type": "perf", "release": "patch" }, + { "type": "chore", "release": false } + ] + } + ], + [ + "@semantic-release/release-notes-generator", + { + "preset": "angular", + "writerOpts":{ + "headerPartial":"## {{#if isPatch~}} {{~/if~}} 🚀 **Immich Power Tools** {{version}}{{~#if isPatch~}} {{~/if}}" + } + } + ], + [ + "@semantic-release/npm", + { + "npmPublish": false + } + ], + [ + "@semantic-release/github", + { + "assets": [] + } + ], + [ + "@semantic-release/git", + { + "assets": ["package.json"], + "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}" + } + ], + ["semantic-release-export-data"] + + ] +} diff --git a/package.json b/package.json index 0a8de1b..caca509 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "immich-power-tools", - "version": "0.1.5", + "version": "0.2.0", "private": true, "scripts": { "dev": "next dev", @@ -50,6 +50,11 @@ "yet-another-react-lightbox": "^3.21.4" }, "devDependencies": { + "@semantic-release/commit-analyzer": "^13.0.0", + "@semantic-release/git": "^10.0.1", + "@semantic-release/github": "^10.1.7", + "@semantic-release/npm": "^12.0.1", + "@semantic-release/release-notes-generator": "^14.0.1", "@types/node": "^20", "@types/pg": "^8.11.6", "@types/react": "^18", @@ -59,6 +64,7 @@ "eslint": "^8", "eslint-config-next": "14.2.5", "postcss": "^8.4.41", + "semantic-release-export-data": "^1.1.0", "tailwindcss": "^3.4.10", "typescript": "^5" }