Merge pull request #289 from Capstone-STEMify/feature/STEM-ai-integra… #569
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: Build and Push Docker Images | |
| on: | |
| workflow_dispatch: | |
| push: | |
| branches: ['dev'] | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| env: | |
| continue: 'false' | |
| strategy: | |
| matrix: | |
| service: | |
| - name: ${{ vars.DOCKERHUB_USERNAME }}/${{ vars.DOCKERHUB_REPONAME }}:${{ vars.DOCKERHUB_REPOTAG1 }} | |
| path: ${{ vars.DOCKERHUB_DOCKERFILEPATH1 }} | |
| check_path: src/Services/ClassroomService | |
| - name: ${{ vars.DOCKERHUB_USERNAME }}/${{ vars.DOCKERHUB_REPONAME }}:${{ vars.DOCKERHUB_REPOTAG2 }} | |
| path: ${{ vars.DOCKERHUB_DOCKERFILEPATH2 }} | |
| check_path: src/Services/Resource | |
| - name: ${{ vars.DOCKERHUB_USERNAME }}/${{ vars.DOCKERHUB_REPONAME }}:${{ vars.DOCKERHUB_REPOTAG3 }} | |
| path: ${{ vars.DOCKERHUB_DOCKERFILEPATH3 }} | |
| check_path: src/Services/ApiGateways/ApiGateway | |
| - name: ${{ vars.DOCKERHUB_USERNAME }}/${{ vars.DOCKERHUB_REPONAME }}:${{ vars.DOCKERHUB_REPOTAG4 }} | |
| path: ${{ vars.DOCKERHUB_DOCKERFILEPATH4 }} | |
| check_path: src/Services/Identity | |
| - name: ${{ vars.DOCKERHUB_USERNAME }}/${{ vars.DOCKERHUB_REPONAME }}:${{ vars.DOCKERHUB_REPOTAG5 }} | |
| path: ${{ vars.DOCKERHUB_DOCKERFILEPATH5 }} | |
| check_path: src/Services/Identity | |
| - name: ${{ vars.DOCKERHUB_USERNAME }}/${{ vars.DOCKERHUB_REPONAME }}:${{ vars.DOCKERHUB_REPOTAG6 }} | |
| path: ${{ vars.DOCKERHUB_DOCKERFILEPATH6 }} | |
| check_path: src/Services/Notification | |
| - name: ${{ vars.DOCKERHUB_USERNAME }}/${{ vars.DOCKERHUB_REPONAME }}:${{ vars.DOCKERHUB_REPOTAG7 }} | |
| path: ${{ vars.DOCKERHUB_DOCKERFILEPATH7 }} | |
| check_path: src/Services/ProductService | |
| - name: ${{ vars.DOCKERHUB_USERNAME }}/${{ vars.DOCKERHUB_REPONAME }}:${{ vars.DOCKERHUB_REPOTAG8 }} | |
| path: ${{ vars.DOCKERHUB_DOCKERFILEPATH8 }} | |
| check_path: src/Services/OrderService | |
| # - name: ${{ vars.DOCKERHUB_USERNAME }}/${{ vars.DOCKERHUB_REPONAME }}:${{ vars.DOCKERHUB_REPOTAG9 }} | |
| # path: ${{ vars.DOCKERHUB_DOCKERFILEPATH9 }} | |
| # check_path: src/Services/CartService | |
| # - name: ${{ vars.DOCKERHUB_USERNAME }}/${{ vars.DOCKERHUB_REPONAME }}:${{ vars.DOCKERHUB_REPOTAG10 }} | |
| # path: ${{ vars.DOCKERHUB_DOCKERFILEPATH10 }} | |
| # check_path: src/Services/PaymentService | |
| - name: ${{ vars.DOCKERHUB_USERNAME }}/${{ vars.DOCKERHUB_REPONAME }}:${{ vars.DOCKERHUB_REPOTAG11 }} | |
| path: ${{ vars.DOCKERHUB_DOCKERFILEPATH11 }} | |
| check_path: src/Services/EmulatorService | |
| - name: ${{ vars.DOCKERHUB_USERNAME }}/${{ vars.DOCKERHUB_REPONAME }}:${{ vars.DOCKERHUB_REPOTAG12 }} | |
| path: ${{ vars.DOCKERHUB_DOCKERFILEPATH12 }} | |
| check_path: src/Services/AIService | |
| steps: | |
| # Step 1: Checkout repository for source code | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| # Step 2: Check for changes | |
| - name: Check for changes in service path | |
| run: | | |
| RANGE="" | |
| if [ -n "${{ github.event.before }}" ] && [ "${{ github.event.before }}" != "0000000000000000000000000000000000000000" ]; then | |
| RANGE="${{ github.event.before }}..${{ github.sha }}" | |
| else | |
| RANGE="HEAD~1..HEAD" | |
| fi | |
| echo "Diff range: $RANGE" | |
| if git diff --quiet $RANGE -- "${{ matrix.service.check_path }}/"; then | |
| echo "No changes in ${{ matrix.service.check_path }}. Skipping build" | |
| echo "continue=false" >> $GITHUB_ENV | |
| else | |
| echo "Changes detected in ${{ matrix.service.check_path }}. Proceeding with build" | |
| echo "continue=true" >> $GITHUB_ENV | |
| fi | |
| # Step 3: Log in to Docker Hub | |
| - name: Log in to Docker Hub | |
| if: env.continue == 'true' | |
| uses: docker/login-action@v3 | |
| with: | |
| username: ${{ vars.DOCKERHUB_USERNAME }} | |
| password: ${{ secrets.DOCKERHUB_TOKEN }} | |
| # Step 4: Set up Docker Buildx (for building multi-platform images) | |
| - name: Set up Docker Buildx | |
| if: env.continue == 'true' | |
| uses: docker/setup-buildx-action@v3 | |
| - name: Build and push docker image (AIService) | |
| if: env.continue == 'true' && matrix.service.check_path == 'src/Services/AIService' | |
| uses: docker/build-push-action@v6 | |
| with: | |
| context: src/Services/AIService | |
| file: ${{ matrix.service.path }}/Dockerfile | |
| push: true | |
| tags: ${{ matrix.service.name }} | |
| - name: Build and push docker image (Others) | |
| if: env.continue == 'true' && matrix.service.check_path != 'src/Services/AIService' | |
| uses: docker/build-push-action@v6 | |
| with: | |
| context: . | |
| file: ${{ matrix.service.path }}/Dockerfile | |
| push: true | |
| tags: ${{ matrix.service.name }} |