name: Deploy Stacks on: push: branches: - main - develop - staging - feat/improve-buid-pipeline paths: - "apps/edr-freight-api/**" - "apps/edr-freight-web/**" - "apps/edr-passenger-api/**" - "apps/edr-passenger-web/**" - "packages/**" - "infrastructure/docker/Dockerfile.web" - "infrastructure/nginx/**" - "docker-compose.yaml" - "pnpm-lock.yaml" - "scripts/deploy/**" - ".github/workflows/deploy.yml" workflow_dispatch: concurrency: group: deploy-${{ github.ref_name }} cancel-in-progress: true jobs: deploy-freight: name: Build and deploy freight stack runs-on: self-hosted env: PROJECT: edr-freight BRANCH: ${{ github.ref_name }} DEPLOY_USER: user BUILD_ENV_FILE: freight-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 \ freight-api \ freight-portal \ freight-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 \ freight-api \ freight-portal \ freight-backoffice # - name: Deploy containers # 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: user 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 - name: Remove npm credentials from workspace if: always() run: rm -f .npmrc .npmrc_temp