diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 3af25bcf6..359ce74f1 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -25,14 +25,36 @@ concurrency: cancel-in-progress: true jobs: - deploy-freight: - name: Build and deploy freight stack + deploy: + name: Deploy ${{ matrix.service }} runs-on: self-hosted + strategy: + fail-fast: false + matrix: + include: + - project: edr-freight + build_env_file: freight-web.build.env + service: freight-api + - project: edr-freight + build_env_file: freight-web.build.env + service: freight-portal + - project: edr-freight + build_env_file: freight-web.build.env + service: freight-backoffice + - project: edr-passenger + build_env_file: passenger-web.build.env + service: passenger-api + - project: edr-passenger + build_env_file: passenger-web.build.env + service: passenger-portal + - project: edr-passenger + build_env_file: passenger-web.build.env + service: passenger-backoffice env: - PROJECT: edr-freight + PROJECT: ${{ matrix.project }} BRANCH: ${{ github.ref_name }} DEPLOY_USER: tria - BUILD_ENV_FILE: freight-web.build.env + BUILD_ENV_FILE: ${{ matrix.build_env_file }} DOCKER_BUILDKIT: "1" COMPOSE_DOCKER_CLI_BUILD: "1" steps: @@ -42,10 +64,7 @@ jobs: - name: Sync environment from server run: | chmod +x scripts/deploy/*.sh - ./scripts/deploy/sync-env-from-server.sh \ - freight-api \ - freight-portal \ - freight-backoffice + ./scripts/deploy/sync-env-from-server.sh "${{ matrix.service }}" - name: Set compose project name run: | @@ -58,74 +77,15 @@ jobs: NPM_TOKEN: ${{ secrets.NPM_TOKEN }} run: ./scripts/deploy/create-npmrc.sh - - name: Build images + - name: Build ${{ matrix.service }} run: | set -euo pipefail - docker compose --project-name "${COMPOSE_PROJECT_NAME}" build \ - freight-api \ - freight-portal \ - freight-backoffice + docker compose --project-name "${COMPOSE_PROJECT_NAME}" build "${{ matrix.service }}" - - name: Deploy containers + - name: Deploy ${{ matrix.service }} run: | set -euo pipefail - docker compose --project-name "${COMPOSE_PROJECT_NAME}" up -d \ - freight-api \ - freight-portal \ - freight-backoffice - - - name: Remove npm credentials from workspace - if: always() - run: rm -f .npmrc .npmrc_temp - - deploy-passenger: - name: Build and deploy passenger stack - runs-on: self-hosted - env: - PROJECT: edr-passenger - BRANCH: ${{ github.ref_name }} - DEPLOY_USER: tria - BUILD_ENV_FILE: passenger-web.build.env - DOCKER_BUILDKIT: "1" - COMPOSE_DOCKER_CLI_BUILD: "1" - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Sync environment from server - run: | - chmod +x scripts/deploy/*.sh - ./scripts/deploy/sync-env-from-server.sh \ - passenger-api \ - passenger-portal \ - passenger-backoffice - - - name: Set compose project name - run: | - set -euo pipefail - branch_slug=$(echo "${BRANCH}" | tr "[:upper:]" "[:lower:]" | sed -E "s/[^a-z0-9]+/-/g; s/^-+//; s/-+$//") - echo "COMPOSE_PROJECT_NAME=${PROJECT}-${branch_slug}" >> "${GITHUB_ENV}" - - - name: Configure npm auth for Docker builds - env: - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} - run: ./scripts/deploy/create-npmrc.sh - - - name: Build images - run: | - set -euo pipefail - docker compose --project-name "${COMPOSE_PROJECT_NAME}" build \ - passenger-api \ - passenger-portal \ - passenger-backoffice - - - name: Deploy containers - run: | - set -euo pipefail - docker compose --project-name "${COMPOSE_PROJECT_NAME}" up -d \ - passenger-api \ - passenger-portal \ - passenger-backoffice + docker compose --project-name "${COMPOSE_PROJECT_NAME}" up -d "${{ matrix.service }}" - name: Remove npm credentials from workspace if: always()