name: ci on: push: branches: - main jobs: release: # Only run on the original repository, not forks if: ${{ github.repository_owner == 'varun-raj' }} runs-on: ubuntu-latest permissions: contents: write 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 permissions: contents: read packages: write needs: release if: always() && !failure() steps: - uses: actions/checkout@v3 - uses: docker/metadata-action@v5 name: Docker meta id: meta with: images: | ghcr.io/${{ github.repository }} tags: | type=raw,value=latest,enable=${{ github.repository_owner != 'varun-raj' || needs.release.outputs.new-release-published == 'true' }} type=semver,pattern={{major}}.{{minor}}.{{patch}},enable=${{ github.repository_owner == 'varun-raj' && needs.release.outputs.new-release-published == 'true' }} type=raw,value=${{ needs.release.outputs.new-release-version }},enable=${{ needs.release.outputs.new-release-version != '' }} - 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 id: docker-build uses: docker/build-push-action@v6 with: context: . platforms: linux/amd64,linux/arm64 push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} cache-from: type=gha cache-to: type=gha,mode=max build-args: | VERSION=${{ needs.release.outputs.new-release-version || 'dev' }}