diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index 22a97bd..97f3536 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -36,6 +36,7 @@ jobs: run: | echo "DOCKERHUB_REPO=${{ secrets.DOCKERHUB_REPO }}" >> $GITHUB_ENV echo "DOCKERHUB_IMG=${{ secrets.DOCKERHUB_IMG }}" >> $GITHUB_ENV + echo "RELEASE_VERSION=${GITHUB_REF##refs/heads/}" | sed 's/\//-/g' >> $GITHUB_ENV echo "HUGGINGFACE_ACCESS_TOKEN=${{ secrets.HUGGINGFACE_ACCESS_TOKEN }}" >> $GITHUB_ENV - name: Build and push the images to Docker Hub @@ -45,4 +46,5 @@ jobs: set: | *.args.DOCKERHUB_REPO=${{ env.DOCKERHUB_REPO }} *.args.DOCKERHUB_IMG=${{ env.DOCKERHUB_IMG }} + *.args.RELEASE_VERSION=${{ env.RELEASE_VERSION }} *.args.HUGGINGFACE_ACCESS_TOKEN=${{ env.HUGGINGFACE_ACCESS_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/production.yml b/.github/workflows/production.yml new file mode 100644 index 0000000..c131b47 --- /dev/null +++ b/.github/workflows/production.yml @@ -0,0 +1,80 @@ +name: Release + +on: + workflow_dispatch: + push: + branches: + - "main" + +jobs: + release: + runs-on: ubuntu-latest-l + if: ${{ !contains(github.event.head_commit.message, 'chore(release)') }} + permissions: + contents: write # to be able to publish a GitHub release + issues: write # to be able to comment on released issues + pull-requests: write # to be able to comment on released pull requests + + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + persist-credentials: false + + - name: Clear space to remove unused folders + run: | + rm -rf /usr/share/dotnet + rm -rf /opt/ghc + rm -rf "/usr/local/share/boost" + rm -rf "$AGENT_TOOLSDIRECTORY" + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Update the ToC in the README.md + run: npx markdown-toc README.md -i + + - name: Semantic release + uses: codfish/semantic-release-action@v3 + id: semanticrelease + with: + additional-packages: | + ['@semantic-release/git', '@semantic-release/changelog'] + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN_SEMANTIC_RELEASE }} + + - name: Set environment variables + if: steps.semanticrelease.outputs.new-release-published == 'true' + run: | + echo "DOCKERHUB_REPO=${{ secrets.DOCKERHUB_REPO }}" >> $GITHUB_ENV + echo "DOCKERHUB_IMG=${{ secrets.DOCKERHUB_IMG }}" >> $GITHUB_ENV + echo "HUGGINGFACE_ACCESS_TOKEN=${{ secrets.HUGGINGFACE_ACCESS_TOKEN }}" >> $GITHUB_ENV + echo "RELEASE_VERSION=${{ steps.semanticrelease.outputs.release-version }}" >> $GITHUB_ENV + + - name: Build and push the images to Docker Hub + if: steps.semanticrelease.outputs.new-release-published == 'true' + uses: docker/bake-action@v2 + with: + push: true + set: | + *.args.DOCKERHUB_REPO=${{ env.DOCKERHUB_REPO }} + *.args.DOCKERHUB_IMG=${{ env.DOCKERHUB_IMG }} + *.args.RELEASE_VERSION=${{ env.RELEASE_VERSION }} + *.args.HUGGINGFACE_ACCESS_TOKEN=${{ env.HUGGINGFACE_ACCESS_TOKEN }} + + - name: Update description on Docker Hub + if: steps.semanticrelease.outputs.new-release-published == 'true' + uses: peter-evans/dockerhub-description@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + repository: ${{ env.DOCKERHUB_REPO }}/${{ env.DOCKERHUB_IMG }} diff --git a/docker-bake.hcl b/docker-bake.hcl index 0323a50..ddae7f4 100644 --- a/docker-bake.hcl +++ b/docker-bake.hcl @@ -20,7 +20,7 @@ target "development" { args = { ENVIRONMENT = "development" } - tags = ["${DOCKERHUB_REPO}/${DOCKERHUB_IMG}:dev"] + tags = ["${DOCKERHUB_REPO}/${DOCKERHUB_IMG}:${RELEASE_VERSION}-dev"] } target "production" { @@ -29,5 +29,5 @@ target "production" { args = { ENVIRONMENT = "production" } - tags = ["${DOCKERHUB_REPO}/${DOCKERHUB_IMG}:latest"] + tags = ["${DOCKERHUB_REPO}/${DOCKERHUB_IMG}:${RELEASE_VERSION}"] }