| name: Build Docker image and publish | |
| permissions: {} | |
| on: | |
| push: | |
| branches: [ main ] | |
| jobs: | |
| push_to_registry: | |
| name: Push Docker image to Docker Hub | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check out the repo | |
| uses: actions/checkout@v6 | |
| with: | |
| persist-credentials: false | |
| - name: Log in to Docker Hub | |
| uses: docker/login-action@v3 | |
| with: | |
| username: ${{ secrets.DOCKER_USERNAME }} | |
| password: ${{ secrets.DOCKER_PASSWORD }} | |
| - name: Extract metadata (tags, labels) for Docker | |
| id: meta | |
| uses: docker/metadata-action@v5 | |
| with: | |
| images: mozilla/blurts-server | |
| tags: | | |
| type=semver,pattern={{raw}} | |
| type=raw,value={{sha}},event=tag | |
| - name: Create version.json | |
| run: | | |
| echo "{\"commit\":\"$GITHUB_SHA\",\"version\":\"$GITHUB_REF_NAME\",\"source\":\"https://github.com/$GITHUB_REPOSITORY\",\"build\":\"$GITHUB_RUN_ID\"}" > version.json | |
| - name: Check Docker Version | |
| run: docker --version | |
| - name: Install Latest Docker | |
| run: | | |
| curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - | |
| sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | |
| sudo apt-get update | |
| sudo apt-get install docker-ce | |
| - name: Build Docker image | |
| env: | |
| UPLOAD_SENTRY_SOURCEMAPS: true | |
| SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }} | |
| SENTRY_RELEASE: ${{ github.ref_name }} | |
| NEXT_PUBLIC_SENTRY_DSN: ${{ secrets.SENTRY_DSN }} | |
| run: | | |
| docker build --tag blurts-server \ | |
| --build-arg SENTRY_RELEASE="$SENTRY_RELEASE" \ | |
| --build-arg NEXT_PUBLIC_SENTRY_DSN="$NEXT_PUBLIC_SENTRY_DSN" \ | |
| --secret id=SENTRY_AUTH_TOKEN \ | |
| . | |
| - name: Deploy to Dockerhub | |
| env: | |
| DOCKERHUB_REPO: ${{ env.DOCKERHUB_REPO }} | |
| TAGS: ${{ steps.meta.outputs.tags }} | |
| run: | | |
| # deploy main | |
| docker tag blurts-server $TAGS | |
| docker push $TAGS | |