name: Docker Hub Workflow run-name: Docker Hub Workflow on: workflow_dispatch: push: branches: - "main" tags: - "v*" pull_request: branches: - "main" env: DOCKER_USER: 1001:127 SHOULD_PUSH: ${{ github.event_name != 'pull_request' }} jobs: build-and-push-backend: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v6 - name: Set up QEMU if: env.SHOULD_PUSH == 'true' uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx if: env.SHOULD_PUSH == 'true' uses: docker/setup-buildx-action@v3 - name: Docker meta id: meta uses: docker/metadata-action@v5 with: images: lasuite/drive-backend - name: Login to DockerHub if: env.SHOULD_PUSH == 'true' uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_HUB_USER }} password: ${{ secrets.DOCKER_HUB_PASSWORD }} - name: Run trivy scan uses: numerique-gouv/action-trivy-cache@main with: docker-build-args: "--target backend-production -f Dockerfile" docker-image-name: "docker.io/lasuite/drive-backend:${{ github.sha }}" - name: Build and push if: env.SHOULD_PUSH == 'true' uses: docker/build-push-action@v6 with: context: . target: backend-production platforms: linux/amd64,linux/arm64 build-args: DOCKER_USER=${{ env.DOCKER_USER }} push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} build-and-push-frontend: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v6 - name: Set up QEMU if: env.SHOULD_PUSH == 'true' uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx if: env.SHOULD_PUSH == 'true' uses: docker/setup-buildx-action@v3 - name: Docker meta id: meta uses: docker/metadata-action@v5 with: images: lasuite/drive-frontend - name: Login to DockerHub if: env.SHOULD_PUSH == 'true' uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_HUB_USER }} password: ${{ secrets.DOCKER_HUB_PASSWORD }} - name: Run trivy scan uses: numerique-gouv/action-trivy-cache@main with: docker-build-args: "-f src/frontend/Dockerfile --target frontend-production" docker-image-name: "docker.io/lasuite/drive-frontend:${{ github.sha }}" - name: Build and push if: env.SHOULD_PUSH == 'true' uses: docker/build-push-action@v6 with: context: . file: ./src/frontend/Dockerfile target: frontend-production platforms: linux/amd64,linux/arm64 build-args: DOCKER_USER=${{ env.DOCKER_USER }} push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} notify-argocd: needs: - build-and-push-frontend - build-and-push-backend runs-on: ubuntu-latest if: github.event_name != 'pull_request' steps: - uses: numerique-gouv/action-argocd-webhook-notification@main id: notify with: deployment_repo_path: "${{ secrets.DEPLOYMENT_REPO_URL }}" argocd_webhook_secret: "${{ secrets.ARGOCD_PREPROD_WEBHOOK_SECRET }}" argocd_url: "${{ vars.ARGOCD_PREPROD_WEBHOOK_URL }}"