Create Release Images #27
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Create Release Images | |
| on: | |
| release: | |
| types: [released] | |
| env: | |
| app-name: carrot | |
| repo-owner: ${{ github.repository_owner }} | |
| registry: ghcr.io | |
| jobs: | |
| publish: | |
| runs-on: ubuntu-latest | |
| permissions: | |
| packages: write | |
| steps: | |
| - name: Check out the repo | |
| uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| # Read source version from pyproject.toml | |
| - uses: SebRollen/toml-action@b1b3628f55fc3a28208d4203ada8b737e9687876 # v1.2.0 | |
| id: read_version | |
| with: | |
| file: app/api/pyproject.toml | |
| field: project.version | |
| # Parse version from release tag | |
| - name: Parse version from tag | |
| id: version | |
| uses: release-kit/semver@97491c46500b6e758ced599794164a234b8aa08c # v2.0.7 | |
| # Fail on Version Mismatch | |
| - name: Fail on Version Mismatch | |
| if: ${{ steps.read_version.outputs.value != steps.version.outputs.full }} | |
| run: | | |
| echo "::error::Release tag version '${{ steps.version.outputs.full }}' doesn't match source version '${{ steps.read_version.outputs.value }}'" | |
| exit 1 | |
| # Check that edge images exist | |
| - uses: tyriis/docker-image-tag-exists@71a750a41aa78e4efb0842f538140c5df5b8166f # v2.1.0 | |
| with: | |
| registry: ${{ env.registry }} | |
| repository: ${{ env.repo-owner }}/${{ env.app-name }}/frontend | |
| tag: edge | |
| - uses: tyriis/docker-image-tag-exists@71a750a41aa78e4efb0842f538140c5df5b8166f # v2.1.0 | |
| with: | |
| registry: ${{ env.registry }} | |
| repository: ${{ env.repo-owner }}/${{ env.app-name }}/backend | |
| tag: edge | |
| - uses: tyriis/docker-image-tag-exists@71a750a41aa78e4efb0842f538140c5df5b8166f # v2.1.0 | |
| with: | |
| registry: ${{ env.registry }} | |
| repository: ${{ env.repo-owner }}/${{ env.app-name }}/airflow-webserver | |
| tag: edge | |
| - uses: tyriis/docker-image-tag-exists@71a750a41aa78e4efb0842f538140c5df5b8166f # v2.1.0 | |
| with: | |
| registry: ${{ env.registry }} | |
| repository: ${{ env.repo-owner }}/${{ env.app-name }}/airflow-scheduler | |
| tag: edge | |
| # Docker Login | |
| - name: Docker Login | |
| uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # v3.0.0 | |
| with: | |
| registry: ${{ env.registry }} | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| # Use metadata action to generate tags | |
| - name: Docker Metadata action | |
| id: meta | |
| uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804 # v5.7.0 | |
| with: | |
| images: | | |
| ${{ env.registry }}/${{ env.repo-owner }}/${{ env.app-name }}/frontend | |
| ${{ env.registry }}/${{ env.repo-owner }}/${{ env.app-name }}/backend | |
| ${{ env.registry }}/${{ env.repo-owner }}/${{ env.app-name }}/airflow-webserver | |
| ${{ env.registry }}/${{ env.repo-owner }}/${{ env.app-name }}/airflow-scheduler | |
| tags: | | |
| type=semver,pattern={{version}} | |
| type=semver,pattern={{major}} | |
| type=semver,pattern={{major}}.{{minor}} | |
| # Retag frontend edge image with release version | |
| - name: Push frontend image tags | |
| uses: akhilerm/tag-push-action@f35ff2cb99d407368b5c727adbcc14a2ed81d509 # v2.2.0 | |
| with: | |
| src: ${{ env.registry }}/${{ env.repo-owner }}/${{ env.app-name }}/frontend:edge | |
| dst: ${{ steps.meta.outputs.tags }} | |
| # Retag backend edge image with release version | |
| - name: Push backend image tags | |
| uses: akhilerm/tag-push-action@f35ff2cb99d407368b5c727adbcc14a2ed81d509 # v2.2.0 | |
| with: | |
| src: ${{ env.registry }}/${{ env.repo-owner }}/${{ env.app-name }}/backend:edge | |
| dst: ${{ steps.meta.outputs.tags }} | |
| # Retag Airflow webserver edge image with release version | |
| - name: Push Airflow webserver image tags | |
| uses: akhilerm/tag-push-action@f35ff2cb99d407368b5c727adbcc14a2ed81d509 # v2.2.0 | |
| with: | |
| src: ${{ env.registry }}/${{ env.repo-owner }}/${{ env.app-name }}/airflow-webserver:edge | |
| dst: ${{ steps.meta.outputs.tags }} | |
| # Retag Airflow scheduler edge image with release version | |
| - name: Push Airflow scheduler image tags | |
| uses: akhilerm/tag-push-action@f35ff2cb99d407368b5c727adbcc14a2ed81d509 # v2.2.0 | |
| with: | |
| src: ${{ env.registry }}/${{ env.repo-owner }}/${{ env.app-name }}/airflow-scheduler:edge | |
| dst: ${{ steps.meta.outputs.tags }} | |
| - name: Release Summary | |
| run: | | |
| echo "✅ Successfully retagged edge images for version: ${{ github.event.release.tag_name }}" | |
| echo "📦 Images tagged with: ${{ steps.meta.outputs.tags }}" | |
| echo "🔗 Release URL: ${{ github.event.release.html_url }}" | |
| echo "📅 Release time: $(date -u)" |