name: Build and Push Docker Images on: push: branches: - main - develop paths: - "auth_api/**" - "employee_api/**" - "transit_api/**" - "error_log_api/**" - "admin_ui/**" - ".gitea/workflows/docker-build.yml" pull_request: branches: - main - develop env: REGISTRY: gitea.testinstance.nl IMAGE_NAMESPACE: sven/the-transit-project jobs: build-and-push: runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: - name: auth_api context: ./auth_api - name: employee_api context: ./employee_api - name: transit_api context: ./transit_api - name: error_log_api context: ./error_log_api - name: admin_ui context: ./admin_ui steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to Gitea Container Registry uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY }} username: ${{ secrets.REGISTRY_USERNAME }} password: ${{ secrets.REGISTRY_PASSWORD }} - name: Set image tags id: tags shell: bash run: | image_base="${{ env.REGISTRY }}/${{ env.IMAGE_NAMESPACE }}/${{ matrix.name }}" image_tags="${image_base}:${{ gitea.sha }}" if [[ "${{ gitea.event_name }}" == "push" && "${{ gitea.ref_name }}" == "main" ]]; then image_tags+=$'\n'"${image_base}:latest" fi { echo 'tags<> "$GITHUB_OUTPUT" - name: Build and push uses: docker/build-push-action@v6 with: context: ${{ matrix.context }} push: ${{ gitea.event_name == 'push' }} tags: ${{ steps.tags.outputs.tags }} deploy-test-node: needs: build-and-push if: ${{ gitea.event_name == 'push' && gitea.ref_name == 'main' }} runs-on: ubuntu-latest steps: - name: Redeploy Portainer stack shell: bash run: curl --fail --silent --show-error --retry 3 --max-time 30 -X POST "$PORTAINER_WEBHOOK_URL" env: PORTAINER_WEBHOOK_URL: ${{ secrets.PORTAINER_WEBHOOK_URL }}