4.3.0 #38
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 | |
| - name: downcase repo-owner | |
| run: | | |
| echo "REPO_OWNER_LOWER=${GITHUB_REPOSITORY_OWNER,,}" >>${GITHUB_ENV} | |
| # 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_LOWER }}/${{ env.app-name }}/frontend | |
| tag: edge | |
| - uses: tyriis/docker-image-tag-exists@71a750a41aa78e4efb0842f538140c5df5b8166f # v2.1.0 | |
| with: | |
| registry: ${{ env.registry }} | |
| repository: ${{ env.REPO_OWNER_LOWER }}/${{ env.app-name }}/backend | |
| tag: edge | |
| - uses: tyriis/docker-image-tag-exists@71a750a41aa78e4efb0842f538140c5df5b8166f # v2.1.0 | |
| with: | |
| registry: ${{ env.registry }} | |
| repository: ${{ env.REPO_OWNER_LOWER }}/${{ 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_LOWER }}/${{ 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 for frontend | |
| - name: Docker Metadata action - Frontend | |
| id: meta-frontend | |
| uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804 # v5.7.0 | |
| with: | |
| images: ${{ env.registry }}/${{ env.REPO_OWNER_LOWER }}/${{ env.app-name }}/frontend | |
| tags: | | |
| type=semver,pattern={{version}} | |
| type=semver,pattern={{major}} | |
| type=semver,pattern={{major}}.{{minor}} | |
| # Use metadata action to generate tags for backend | |
| - name: Docker Metadata action - Backend | |
| id: meta-backend | |
| uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804 # v5.7.0 | |
| with: | |
| images: ${{ env.registry }}/${{ env.REPO_OWNER_LOWER }}/${{ env.app-name }}/backend | |
| tags: | | |
| type=semver,pattern={{version}} | |
| type=semver,pattern={{major}} | |
| type=semver,pattern={{major}}.{{minor}} | |
| # Use metadata action to generate tags for airflow-webserver | |
| - name: Docker Metadata action - Airflow Webserver | |
| id: meta-airflow-webserver | |
| uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804 # v5.7.0 | |
| with: | |
| images: ${{ env.registry }}/${{ env.REPO_OWNER_LOWER }}/${{ env.app-name }}/airflow-webserver | |
| tags: | | |
| type=semver,pattern={{version}} | |
| type=semver,pattern={{major}} | |
| type=semver,pattern={{major}}.{{minor}} | |
| # Use metadata action to generate tags for airflow-scheduler | |
| - name: Docker Metadata action - Airflow Scheduler | |
| id: meta-airflow-scheduler | |
| uses: docker/metadata-action@902fa8ec7d6ecbf8d84d538b9b233a880e428804 # v5.7.0 | |
| with: | |
| images: ${{ env.registry }}/${{ env.REPO_OWNER_LOWER }}/${{ 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_LOWER }}/${{ env.app-name }}/frontend:edge | |
| dst: ${{ steps.meta-frontend.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_LOWER }}/${{ env.app-name }}/backend:edge | |
| dst: ${{ steps.meta-backend.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_LOWER }}/${{ env.app-name }}/airflow-webserver:edge | |
| dst: ${{ steps.meta-airflow-webserver.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_LOWER }}/${{ env.app-name }}/airflow-scheduler:edge | |
| dst: ${{ steps.meta-airflow-scheduler.outputs.tags }} | |
| - name: Release Summary | |
| run: | | |
| echo "✅ Successfully retagged edge images for version: ${{ github.event.release.tag_name }}" | |
| echo "📦 Frontend image tagged with: ${{ steps.meta-frontend.outputs.tags }}" | |
| echo "📦 Backend image tagged with: ${{ steps.meta-backend.outputs.tags }}" | |
| echo "📦 Airflow webserver image tagged with: ${{ steps.meta-airflow-webserver.outputs.tags }}" | |
| echo "📦 Airflow scheduler image tagged with: ${{ steps.meta-airflow-scheduler.outputs.tags }}" | |
| echo "🔗 Release URL: ${{ github.event.release.html_url }}" | |
| echo "📅 Release time: $(date -u)" |