name: CI on: pull_request: branches: [main, hotfix/**, release/**] merge_group: push: branches: [hotfix/**, release/**] permissions: contents: read jobs: autofix: if: github.event_name == 'pull_request' && !github.event.pull_request.head.repo.fork uses: Sea-Haven-Industries/.github/.github/workflows/ci-autofix.yaml@2e2b3a282fbd148352a2b7433b58668a47e6bfeb # v1.0.16 permissions: contents: write secrets: inherit with: presets: ruff,terraform terraform-version: "1.9.8" node-version: "24.19.0" format-command: npm run format:templates:write lint-fix-command: npx eslint "src/server/templates/*.js" --fix lint: needs: autofix if: always() && !cancelled() && (needs.autofix.result == 'skipped' || needs.autofix.outputs.committed != 'true') uses: Sea-Haven-Industries/.github/.github/workflows/ci-python-app.yaml@2e2b3a282fbd148352a2b7433b58668a47e6bfeb # v1.0.16 with: python-version: "3.12.14" template-js: needs: autofix if: always() && !cancelled() && (needs.autofix.result == 'skipped' || needs.autofix.outputs.committed != 'true') runs-on: ubuntu-latest timeout-minutes: 5 steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1.x with: persist-credentials: false - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: node-version: "24.19.0" cache: npm - name: Install JavaScript tooling run: npm ci - name: Check template JavaScript run: npm run check:templates - name: Lint OpenAPI run: npm run openapi:lint test: needs: autofix if: always() && !cancelled() && (needs.autofix.result == 'skipped' || needs.autofix.outputs.committed != 'true') runs-on: ubuntu-latest timeout-minutes: 15 steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1.x with: persist-credentials: false - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.x with: python-version: "3.12.14" - name: Install Python dependencies shell: bash run: | pip install pytest pip install -r requirements-api.txt while IFS= read -r -d '' req; do pip install -r "$req" done < <(find . -name requirements.txt -not -path './.aws-sam/*' -print0) - name: Install Playwright Chromium run: playwright install --with-deps chromium - name: Run tests run: pytest terraform: needs: autofix if: always() && !cancelled() && (needs.autofix.result == 'skipped' || needs.autofix.outputs.committed != 'true') uses: Sea-Haven-Industries/.github/.github/workflows/ci-terraform.yaml@2e2b3a282fbd148352a2b7433b58668a47e6bfeb # v1.0.16 with: terraform-version: "1.9.8" ci-complete: name: ci-complete needs: [autofix, lint, template-js, test, terraform] if: always() && !cancelled() && (needs.autofix.result == 'skipped' || needs.autofix.outputs.committed != 'true') runs-on: ubuntu-latest timeout-minutes: 5 steps: - name: Require portions env: LINT: ${{ needs.lint.result }} TEMPLATE_JS: ${{ needs.template-js.result }} TEST: ${{ needs.test.result }} TERRAFORM: ${{ needs.terraform.result }} run: | set -euo pipefail test "${LINT}" = success test "${TEMPLATE_JS}" = success test "${TEST}" = success test "${TERRAFORM}" = success