feat: add workflow for promoting master to production with testing and deployment steps
All checks were successful
Chore App Build, Test, and Push Docker Images / build-and-push (push) Successful in 2m18s
All checks were successful
Chore App Build, Test, and Push Docker Images / build-and-push (push) Successful in 2m18s
This commit is contained in:
@@ -20,6 +20,10 @@ on:
|
|||||||
description: "Run Playwright E2E gate"
|
description: "Run Playwright E2E gate"
|
||||||
required: true
|
required: true
|
||||||
default: "true"
|
default: "true"
|
||||||
|
skip_tests:
|
||||||
|
description: "Skip the entire tests stage"
|
||||||
|
required: true
|
||||||
|
default: "false"
|
||||||
deploy:
|
deploy:
|
||||||
description: "Run production deploy over SSH"
|
description: "Run production deploy over SSH"
|
||||||
required: true
|
required: true
|
||||||
@@ -96,31 +100,36 @@ jobs:
|
|||||||
timeout-minutes: 120
|
timeout-minutes: 120
|
||||||
needs: prepare
|
needs: prepare
|
||||||
steps:
|
steps:
|
||||||
|
- name: Skip tests stage
|
||||||
|
if: ${{ github.event.inputs.skip_tests == 'true' }}
|
||||||
|
run: echo "Skipping tests stage because skip_tests=true"
|
||||||
|
|
||||||
- name: Check out promoted ref
|
- name: Check out promoted ref
|
||||||
|
if: ${{ github.event.inputs.skip_tests != 'true' }}
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
ref: ${{ needs.prepare.outputs.target_ref }}
|
ref: ${{ needs.prepare.outputs.target_ref }}
|
||||||
|
|
||||||
- name: Set up Python for backend tests
|
- name: Set up Python for backend tests
|
||||||
if: ${{ github.event.inputs.run_backend_tests != 'false' || github.event.inputs.run_playwright_tests != 'false' }}
|
if: ${{ github.event.inputs.skip_tests != 'true' && (github.event.inputs.run_backend_tests != 'false' || github.event.inputs.run_playwright_tests != 'false') }}
|
||||||
uses: actions/setup-python@v4
|
uses: actions/setup-python@v4
|
||||||
with:
|
with:
|
||||||
python-version: "3.11"
|
python-version: "3.11"
|
||||||
|
|
||||||
- name: Install backend dependencies (runner python)
|
- name: Install backend dependencies (runner python)
|
||||||
if: ${{ github.event.inputs.run_backend_tests != 'false' }}
|
if: ${{ github.event.inputs.skip_tests != 'true' && github.event.inputs.run_backend_tests != 'false' }}
|
||||||
run: |
|
run: |
|
||||||
python -m pip install --upgrade pip
|
python -m pip install --upgrade pip
|
||||||
pip install -r backend/requirements.txt
|
pip install -r backend/requirements.txt
|
||||||
|
|
||||||
- name: Run backend unit tests
|
- name: Run backend unit tests
|
||||||
if: ${{ github.event.inputs.run_backend_tests != 'false' }}
|
if: ${{ github.event.inputs.skip_tests != 'true' && github.event.inputs.run_backend_tests != 'false' }}
|
||||||
run: |
|
run: |
|
||||||
cd backend
|
cd backend
|
||||||
pytest -q
|
pytest -q
|
||||||
|
|
||||||
- name: Set up Node.js
|
- name: Set up Node.js
|
||||||
if: ${{ github.event.inputs.run_frontend_tests != 'false' || github.event.inputs.run_playwright_tests != 'false' }}
|
if: ${{ github.event.inputs.skip_tests != 'true' && (github.event.inputs.run_frontend_tests != 'false' || github.event.inputs.run_playwright_tests != 'false') }}
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: "20.19.0"
|
node-version: "20.19.0"
|
||||||
@@ -128,29 +137,29 @@ jobs:
|
|||||||
cache-dependency-path: frontend/package-lock.json
|
cache-dependency-path: frontend/package-lock.json
|
||||||
|
|
||||||
- name: Install frontend dependencies
|
- name: Install frontend dependencies
|
||||||
if: ${{ github.event.inputs.run_frontend_tests != 'false' || github.event.inputs.run_playwright_tests != 'false' }}
|
if: ${{ github.event.inputs.skip_tests != 'true' && (github.event.inputs.run_frontend_tests != 'false' || github.event.inputs.run_playwright_tests != 'false') }}
|
||||||
run: npm ci
|
run: npm ci
|
||||||
working-directory: frontend
|
working-directory: frontend
|
||||||
|
|
||||||
- name: Run frontend unit tests
|
- name: Run frontend unit tests
|
||||||
if: ${{ github.event.inputs.run_frontend_tests != 'false' }}
|
if: ${{ github.event.inputs.skip_tests != 'true' && github.event.inputs.run_frontend_tests != 'false' }}
|
||||||
run: npm run test:unit --if-present
|
run: npm run test:unit --if-present
|
||||||
working-directory: frontend
|
working-directory: frontend
|
||||||
|
|
||||||
- name: Create backend venv for Playwright webServer
|
- name: Create backend venv for Playwright webServer
|
||||||
if: ${{ github.event.inputs.run_playwright_tests != 'false' }}
|
if: ${{ github.event.inputs.skip_tests != 'true' && github.event.inputs.run_playwright_tests != 'false' }}
|
||||||
run: |
|
run: |
|
||||||
python -m venv backend/.venv
|
python -m venv backend/.venv
|
||||||
backend/.venv/bin/python -m pip install --upgrade pip
|
backend/.venv/bin/python -m pip install --upgrade pip
|
||||||
backend/.venv/bin/python -m pip install -r backend/requirements.txt
|
backend/.venv/bin/python -m pip install -r backend/requirements.txt
|
||||||
|
|
||||||
- name: Install Playwright browsers
|
- name: Install Playwright browsers
|
||||||
if: ${{ github.event.inputs.run_playwright_tests != 'false' }}
|
if: ${{ github.event.inputs.skip_tests != 'true' && github.event.inputs.run_playwright_tests != 'false' }}
|
||||||
run: npx playwright install --with-deps
|
run: npx playwright install --with-deps
|
||||||
working-directory: frontend
|
working-directory: frontend
|
||||||
|
|
||||||
- name: Run Playwright tests
|
- name: Run Playwright tests
|
||||||
if: ${{ github.event.inputs.run_playwright_tests != 'false' }}
|
if: ${{ github.event.inputs.skip_tests != 'true' && github.event.inputs.run_playwright_tests != 'false' }}
|
||||||
run: npx playwright test --reporter=line
|
run: npx playwright test --reporter=line
|
||||||
working-directory: frontend
|
working-directory: frontend
|
||||||
env:
|
env:
|
||||||
|
|||||||
Reference in New Issue
Block a user