name: Build and Push Docker Image on: workflow_run: workflows: - Run E2E Tests types: - completed jobs: build-and-push: if: ${{ github.event_name != 'workflow_run' || (github.event.workflow_run.conclusion == 'success' && (github.event.workflow_run.head_branch == 'main' || github.event.workflow_run.head_branch == 'refs/heads/main')) }} runs-on: ubuntu-latest env: DEFAULT_BRANCH: main REGISTRY_ORG: allucanget REGISTRY_IMAGE_NAME: calminer REGISTRY_URL: ${{ secrets.REGISTRY_URL }} REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }} REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }} WORKFLOW_RUN_HEAD_BRANCH: ${{ github.event.workflow_run.head_branch }} WORKFLOW_RUN_HEAD_SHA: ${{ github.event.workflow_run.head_sha }} steps: - name: Checkout code uses: actions/checkout@v4 - name: Collect workflow metadata id: meta shell: bash run: | ref_name="${GITHUB_REF_NAME:-${GITHUB_REF##*/}}" event_name="${GITHUB_EVENT_NAME:-}" sha="${GITHUB_SHA:-}" if [ -z "$ref_name" ] && [ -n "${WORKFLOW_RUN_HEAD_BRANCH:-}" ]; then ref_name="${WORKFLOW_RUN_HEAD_BRANCH}" fi if [ -z "$sha" ] && [ -n "${WORKFLOW_RUN_HEAD_SHA:-}" ]; then sha="${WORKFLOW_RUN_HEAD_SHA}" fi if [[ "$ref_name" == refs/heads/* ]]; then ref_name="${ref_name#refs/heads/}" fi if [ "$ref_name" = "${DEFAULT_BRANCH:-main}" ]; then echo "on_default=true" >> "$GITHUB_OUTPUT" else echo "on_default=false" >> "$GITHUB_OUTPUT" fi echo "ref_name=$ref_name" >> "$GITHUB_OUTPUT" echo "event_name=$event_name" >> "$GITHUB_OUTPUT" echo "sha=$sha" >> "$GITHUB_OUTPUT" - name: Set up QEMU and Buildx uses: docker/setup-buildx-action@v3 with: install: false - name: Log in to Gitea registry if: ${{ steps.meta.outputs.on_default == 'true' }} uses: docker/login-action@v3 continue-on-error: true with: registry: ${{ env.REGISTRY_URL }} username: ${{ env.REGISTRY_USERNAME }} password: ${{ env.REGISTRY_PASSWORD }} - name: Build and push Docker image uses: docker/build-push-action@v4 with: context: . file: Dockerfile push: ${{ steps.meta.outputs.on_default == 'true' && steps.meta.outputs.event_name != 'pull_request' && (env.REGISTRY_URL != '' && env.REGISTRY_USERNAME != '' && env.REGISTRY_PASSWORD != '') }} tags: | ${{ env.REGISTRY_URL }}/${{ env.REGISTRY_ORG }}/${{ env.REGISTRY_IMAGE_NAME }}:latest ${{ env.REGISTRY_URL }}/${{ env.REGISTRY_ORG }}/${{ env.REGISTRY_IMAGE_NAME }}:${{ steps.meta.outputs.sha }} cache-from: type=gha cache-to: type=gha,mode=max