# GENERATED by peptide-e2e/tools/gitea-pipeline/render.py from repos.json. # Do not edit by hand: change repos.json or the template and re-render. name: CI / Deploy on: push: branches: [main] pull_request: {} workflow_dispatch: {} concurrency: group: pipeline-peptide-reconstitution-calculator-${{ github.ref }} cancel-in-progress: false jobs: lint-php: name: PHP Lint (${{ matrix.php }}) runs-on: ubuntu-latest strategy: fail-fast: false matrix: php: ["8.1", "8.2", "8.3"] steps: - uses: actions/checkout@v4 - uses: https://git.protopeer.com/peptide-repo/peptide-e2e/.gitea/actions/ci-lint-php@main with: php: ${{ matrix.php }} phpcs: name: PHPCS (WordPress standards) runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: ref: ${{ github.head_ref || github.ref_name }} token: ${{ secrets.GITHUB_TOKEN }} - uses: https://git.protopeer.com/peptide-repo/peptide-e2e/.gitea/actions/ci-phpcs@main with: autofix: 'true' file-size: name: 300-line rule (includes) runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: https://git.protopeer.com/peptide-repo/peptide-e2e/.gitea/actions/ci-file-size@main with: paths: includes phpunit: name: PHPUnit - stubs (PHP ${{ matrix.php }}) runs-on: ubuntu-latest strategy: fail-fast: false matrix: php: ["8.1", "8.2", "8.3"] steps: - uses: actions/checkout@v4 - uses: https://git.protopeer.com/peptide-repo/peptide-e2e/.gitea/actions/ci-phpunit@main with: php: ${{ matrix.php }} tests: stubs lint-js: name: JS Lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: https://git.protopeer.com/peptide-repo/peptide-e2e/.gitea/actions/ci-lint-js@main deploy-staging: name: Deploy to staging needs: ["lint-php", "phpcs", "file-size", "phpunit", "lint-js"] if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} runs-on: peptide-vps steps: - uses: actions/checkout@v4 - uses: https://git.protopeer.com/peptide-repo/peptide-e2e/.gitea/actions/deploy@main with: stage: staging target_path: wp-content/plugins/peptide-reconstitution-calculator ssh_private_key: ${{ secrets.SSH_PRIVATE_KEY }} ssh_host: ${{ secrets.SSH_HOST }} ssh_port: ${{ secrets.SSH_PORT }} ssh_username: ${{ secrets.SSH_USERNAME }} smoke: name: Smoke tests (staging) needs: deploy-staging runs-on: peptide-vps timeout-minutes: 15 steps: - uses: https://git.protopeer.com/peptide-repo/peptide-e2e/.gitea/actions/smoke@main with: wp_admin_user: ${{ secrets.STAGING_WP_ADMIN_USER }} wp_admin_password: ${{ secrets.STAGING_WP_ADMIN_PASSWORD }} deploy-production: name: Deploy to production # Smoke is a gate: production runs only if staging deploy AND smoke succeeded. # PROD_DEPLOY_ENABLED (org variable) is the cutover switch / kill switch. needs: [deploy-staging, smoke] if: ${{ vars.PROD_DEPLOY_ENABLED == 'true' && github.event_name == 'push' && github.ref == 'refs/heads/main' }} runs-on: peptide-vps steps: - uses: actions/checkout@v4 - uses: https://git.protopeer.com/peptide-repo/peptide-e2e/.gitea/actions/deploy@main with: stage: production target_path: wp-content/plugins/peptide-reconstitution-calculator ssh_private_key: ${{ secrets.SSH_PRIVATE_KEY }} ssh_host: ${{ secrets.SSH_HOST }} ssh_port: ${{ secrets.SSH_PORT }} ssh_username: ${{ secrets.SSH_USERNAME }} audit-direct-push: name: Audit - commit came from a PR if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} runs-on: ubuntu-latest steps: - uses: https://git.protopeer.com/peptide-repo/peptide-e2e/.gitea/actions/audit-direct-push@main with: token: ${{ secrets.GITHUB_TOKEN }}