Production vlaues #140
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: Docker Publish | |
| on: | |
| pull_request: | |
| branches: [main] | |
| paths: | |
| - "backend/**" | |
| - "frontend/**" | |
| - "genai/**" | |
| - "api/**" | |
| - "keycloak/**" | |
| - "helm/**" | |
| - ".github/workflows/docker-publish.yml" | |
| - "!**/*.md" | |
| push: | |
| branches: [main] | |
| tags: ["v*"] | |
| paths: | |
| - "backend/**" | |
| - "frontend/**" | |
| - "genai/**" | |
| - "api/**" | |
| - "keycloak/**" | |
| - "helm/**" | |
| - ".github/workflows/docker-publish.yml" | |
| - "!**/*.md" | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| packages: write | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
| jobs: | |
| build: | |
| name: Build ${{ matrix.service }} | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - service: frontend | |
| context: ./frontend | |
| dockerfile: ./frontend/Dockerfile | |
| image: team-drops-frontend | |
| description: Team Drops frontend | |
| - service: user-service | |
| context: . | |
| dockerfile: ./backend/user-service/Dockerfile | |
| image: team-drops-user-service | |
| description: Team Drops user service | |
| - service: learning-service | |
| context: . | |
| dockerfile: ./backend/learning-service/Dockerfile | |
| image: team-drops-learning-service | |
| description: Team Drops learning service | |
| - service: progress-feedback-service | |
| context: . | |
| dockerfile: ./backend/progress-feedback-service/Dockerfile | |
| image: team-drops-progress-feedback-service | |
| description: Team Drops progress and feedback service | |
| - service: genai-service | |
| context: . | |
| dockerfile: ./genai/Dockerfile | |
| image: team-drops-genai-service | |
| description: Team Drops GenAI service | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Normalize owner name to lowercase | |
| id: owner | |
| run: echo "name=${GITHUB_REPOSITORY_OWNER,,}" >> "$GITHUB_OUTPUT" | |
| - name: Set up Docker Buildx | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Log in to GHCR | |
| if: github.event_name != 'pull_request' | |
| uses: docker/login-action@v3 | |
| with: | |
| registry: ghcr.io | |
| username: ${{ github.actor }} | |
| password: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Compute image metadata | |
| id: meta | |
| uses: docker/metadata-action@v5 | |
| with: | |
| images: ghcr.io/${{ steps.owner.outputs.name }}/${{ matrix.image }} | |
| tags: | | |
| type=ref,event=branch | |
| type=ref,event=pr | |
| type=semver,pattern={{version}} | |
| type=semver,pattern={{major}}.{{minor}} | |
| type=sha,prefix=sha-,format=long | |
| type=raw,value=latest,enable={{is_default_branch}} | |
| labels: | | |
| org.opencontainers.image.title=${{ matrix.image }} | |
| org.opencontainers.image.description=${{ matrix.description }} | |
| org.opencontainers.image.source=https://github.com/${{ github.repository }} | |
| - name: Build${{ github.event_name != 'pull_request' && ' and push' || '' }} image | |
| uses: docker/build-push-action@v6 | |
| with: | |
| context: ${{ matrix.context }} | |
| file: ${{ matrix.dockerfile }} | |
| platforms: linux/amd64 | |
| push: ${{ github.event_name != 'pull_request' }} | |
| tags: ${{ steps.meta.outputs.tags }} | |
| labels: ${{ steps.meta.outputs.labels }} | |
| cache-from: type=gha,scope=${{ matrix.service }} | |
| cache-to: type=gha,mode=max,scope=${{ matrix.service }} |