Compare commits

...

4 Commits

Author SHA1 Message Date
peptiderepo
2472a91215 ci(smoke): add comment explaining why --with-deps is omitted
OS deps are pre-installed on the self-hosted peptide-vps runner host.
--with-deps invokes apt-get which fails under the runner's NoNewPrivileges
sandbox hardening. Flag was already dropped in e00f777; this adds an
inline comment so the intent is self-documenting for future maintainers.

Agent-Session: smoke-no-withdeps-20260617
2026-06-17 05:10:23 +00:00
peptiderepo
e00f777cdb fix(ci): drop --with-deps from playwright install on self-hosted runner (v1.7.2) (#23)
Drop --with-deps from npx playwright install chromium. The peptide-vps runner has OS deps pre-installed; --with-deps invokes apt-get blocked by NoNewPrivileges hardening. Binary-only install verified for ghrunner via SSH.

Agent-Session: smoke-playwright-nodeps-20260617
2026-06-17 11:51:33 +07:00
peptiderepo
35602d624f ci: fix peptide-e2e reusable-workflow org ref (peptiderepo→peptide-repo) (#22)
Reusable workflow uses: refs do not follow GitHub transfer redirects.
Update owner string from peptiderepo to peptide-repo post org-migration.

Agent-Session: fix-e2e-ref-20260617
2026-06-17 11:15:12 +07:00
peptiderepo
cae04721c7 ci: run deploy + smoke jobs on the self-hosted peptide-vps runner (#21)
Shared pipeline deploy-staging + deploy-production (deploy-app.yml) and the Playwright staging smoke (smoke.yml) now run on the org self-hosted runner [self-hosted, peptide-vps] from the VPS stable IP, fixing the Hostinger rotating-runner-IP throttle. CI/validate stay GitHub-hosted. v1.7.1.

QA: APPROVE-WITH-P2-NOTES (2026-06-17-e6f6b67); P2 = pre-existing stale peptiderepo/ owner refs (work via redirect, ref-cleanup batch).

Agent-Session: deploy-self-hosted-20260617
2026-06-17 11:04:59 +07:00
5 changed files with 25 additions and 8 deletions

View File

@@ -5,7 +5,7 @@
# #
# jobs: # jobs:
# ci: # ci:
# uses: peptiderepo/peptide-e2e/.github/workflows/ci.yml@main # uses: peptide-repo/peptide-e2e/.github/workflows/ci.yml@main
# with: # with:
# tests: stubs # or wp-framework | brain-monkey | none # tests: stubs # or wp-framework | brain-monkey | none
# has_js: false # has_js: false

View File

@@ -35,7 +35,7 @@ permissions:
jobs: jobs:
deploy-staging: deploy-staging:
name: Deploy to Staging name: Deploy to Staging
runs-on: ubuntu-latest runs-on: [self-hosted, peptide-vps]
environment: staging environment: staging
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
@@ -72,7 +72,7 @@ jobs:
name: Smoke tests (staging) name: Smoke tests (staging)
needs: deploy-staging needs: deploy-staging
if: ${{ inputs.run_smoke }} if: ${{ inputs.run_smoke }}
uses: peptiderepo/peptide-e2e/.github/workflows/smoke.yml@main uses: peptide-repo/peptide-e2e/.github/workflows/smoke.yml@main
secrets: secrets:
STAGING_WP_ADMIN_USER: ${{ secrets.STAGING_WP_ADMIN_USER }} STAGING_WP_ADMIN_USER: ${{ secrets.STAGING_WP_ADMIN_USER }}
STAGING_WP_ADMIN_PASSWORD: ${{ secrets.STAGING_WP_ADMIN_PASSWORD }} STAGING_WP_ADMIN_PASSWORD: ${{ secrets.STAGING_WP_ADMIN_PASSWORD }}
@@ -83,7 +83,7 @@ jobs:
# skipped smoke (run_smoke: false) still allows prod via the if-condition. # skipped smoke (run_smoke: false) still allows prod via the if-condition.
needs: [deploy-staging, smoke] needs: [deploy-staging, smoke]
if: ${{ !cancelled() && needs.deploy-staging.result == 'success' && needs.smoke.result != 'failure' }} if: ${{ !cancelled() && needs.deploy-staging.result == 'success' && needs.smoke.result != 'failure' }}
runs-on: ubuntu-latest runs-on: [self-hosted, peptide-vps]
environment: production environment: production
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4

View File

@@ -32,14 +32,14 @@ on:
jobs: jobs:
smoke: smoke:
name: Playwright smoke suite name: Playwright smoke suite
runs-on: ubuntu-latest runs-on: [self-hosted, peptide-vps]
timeout-minutes: 15 timeout-minutes: 15
steps: steps:
- name: Checkout peptide-e2e (explicit — workflow_call defaults to caller repo) - name: Checkout peptide-e2e (explicit — workflow_call defaults to caller repo)
uses: actions/checkout@v4 uses: actions/checkout@v4
with: with:
repository: peptiderepo/peptide-e2e repository: peptide-repo/peptide-e2e
ref: main ref: main
- name: Set up Node.js - name: Set up Node.js
@@ -53,7 +53,8 @@ jobs:
run: npm ci run: npm ci
- name: Install Playwright browsers - name: Install Playwright browsers
run: npx playwright install chromium --with-deps # OS deps pre-installed on the self-hosted runner host; --with-deps needs sudo which the sandbox blocks
run: npx playwright install chromium
- name: Run smoke tests - name: Run smoke tests
env: env:

View File

@@ -1,5 +1,21 @@
# Changelog # Changelog
## [1.7.2] - 2026-06-17
### Fixed
- **CI**: Drop `--with-deps` from `npx playwright install chromium` in `smoke.yml`.
The `peptide-vps` self-hosted runner has OS-level Playwright deps pre-installed by
root; `--with-deps` invokes `apt-get` which requires `sudo`, blocked by the runner's
`NoNewPrivileges=true` systemd hardening. Binary-only install works without
elevated privileges.## [1.7.1] - 2026-06-17
### Changed
- **CI/CD**: Switch `deploy-staging`, `deploy-production`, and `smoke` jobs from
`ubuntu-latest` (GitHub-hosted) to `[self-hosted, peptide-vps]` (org runner on
KVM8 VPS). This routes all Hostinger SSH/rsync traffic through our stable VPS IP,
fixing the Azure-region throttle that caused intermittent deploy failures.
Callers' CI/validate jobs are unaffected (remain on `ubuntu-latest`).
## [1.7.0] - 2026-06-17 ## [1.7.0] - 2026-06-17
### Added ### Added

View File

@@ -1,6 +1,6 @@
{ {
"name": "peptide-e2e", "name": "peptide-e2e",
"version": "1.7.0", "version": "1.7.2",
"description": "Playwright smoke tests for peptiderepo.com (staging + production)", "description": "Playwright smoke tests for peptiderepo.com (staging + production)",
"private": true, "private": true,
"scripts": { "scripts": {