mirror of
https://github.com/Studio-Saelix/sencho.git
synced 2026-07-26 11:49:16 +00:00
ci: optimize workflows to cut redundant runs (#465)
* ci: optimize workflows to cut redundant runs and add timeout protection Skip validation jobs (build, test, lint, Docker, E2E) on push-to-main since code was already validated on the PR. Skip CI entirely for release-please PRs (version bump only). Add timeout-minutes to all jobs to prevent hung runners from burning 360 min (GitHub default). Add npm caching to the start-app composite action. Add concurrency control to docker-publish. Group Dependabot updates to batch PRs per ecosystem. Estimated savings: ~10 min per release cycle, ~30-40 min/day. * chore: add tsbuildinfo to gitignore
This commit is contained in:
@@ -22,6 +22,11 @@ runs:
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: '20'
|
||||
cache: 'npm'
|
||||
cache-dependency-path: |
|
||||
package-lock.json
|
||||
backend/package-lock.json
|
||||
frontend/package-lock.json
|
||||
|
||||
- name: Install root dependencies (Playwright)
|
||||
shell: bash
|
||||
|
||||
@@ -7,6 +7,9 @@ updates:
|
||||
labels:
|
||||
- "dependencies"
|
||||
open-pull-requests-limit: 10
|
||||
groups:
|
||||
all-npm-root:
|
||||
patterns: ["*"]
|
||||
|
||||
- package-ecosystem: "npm"
|
||||
directory: "/backend"
|
||||
@@ -15,6 +18,9 @@ updates:
|
||||
labels:
|
||||
- "dependencies"
|
||||
open-pull-requests-limit: 10
|
||||
groups:
|
||||
all-npm-backend:
|
||||
patterns: ["*"]
|
||||
|
||||
- package-ecosystem: "npm"
|
||||
directory: "/frontend"
|
||||
@@ -23,6 +29,9 @@ updates:
|
||||
labels:
|
||||
- "dependencies"
|
||||
open-pull-requests-limit: 10
|
||||
groups:
|
||||
all-npm-frontend:
|
||||
patterns: ["*"]
|
||||
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
@@ -30,3 +39,6 @@ updates:
|
||||
interval: "weekly"
|
||||
labels:
|
||||
- "ci"
|
||||
groups:
|
||||
all-actions:
|
||||
patterns: ["*"]
|
||||
|
||||
@@ -18,12 +18,16 @@ concurrency:
|
||||
cancel-in-progress: true
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Build & Validation (runs on PRs and push to main)
|
||||
# Build & Validation (PRs only, skipped for release-please PRs)
|
||||
# ---------------------------------------------------------------------------
|
||||
jobs:
|
||||
backend:
|
||||
name: Backend (Build, Test, Lint)
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 10
|
||||
if: >-
|
||||
github.event_name == 'pull_request'
|
||||
&& github.head_ref != 'release-please--branches--main--components--sencho'
|
||||
steps:
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@v6
|
||||
@@ -58,6 +62,10 @@ jobs:
|
||||
frontend:
|
||||
name: Frontend (Build, Lint)
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 10
|
||||
if: >-
|
||||
github.event_name == 'pull_request'
|
||||
&& github.head_ref != 'release-please--branches--main--components--sencho'
|
||||
steps:
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@v6
|
||||
@@ -88,6 +96,10 @@ jobs:
|
||||
docker-validate:
|
||||
name: Docker Build & Scan
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 15
|
||||
if: >-
|
||||
github.event_name == 'pull_request'
|
||||
&& github.head_ref != 'release-please--branches--main--components--sencho'
|
||||
steps:
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@v6
|
||||
@@ -117,12 +129,16 @@ jobs:
|
||||
continue-on-error: true
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# E2E Tests (runs on PRs and push to main)
|
||||
# E2E Tests (PRs only, skipped for release-please PRs)
|
||||
# ---------------------------------------------------------------------------
|
||||
e2e:
|
||||
name: E2E Tests (Playwright)
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 15
|
||||
needs: [backend, frontend]
|
||||
if: >-
|
||||
github.event_name == 'pull_request'
|
||||
&& github.head_ref != 'release-please--branches--main--components--sencho'
|
||||
steps:
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@v6
|
||||
@@ -154,11 +170,11 @@ jobs:
|
||||
update-screenshots:
|
||||
name: Refresh Doc Screenshots
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 15
|
||||
if: >-
|
||||
github.event_name == 'push'
|
||||
&& github.ref == 'refs/heads/main'
|
||||
&& startsWith(github.event.head_commit.message, 'chore(main): release')
|
||||
needs: [backend, frontend]
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
@@ -201,6 +217,7 @@ jobs:
|
||||
sync-docs:
|
||||
name: Sync Docs to sencho-docs
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 5
|
||||
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
||||
steps:
|
||||
- name: Checkout Sencho repo
|
||||
|
||||
@@ -6,10 +6,15 @@ on:
|
||||
- 'v*'
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
group: docker-publish
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
push_to_registry:
|
||||
name: Push Docker image to Docker Hub
|
||||
runs-on: ubuntu-latest
|
||||
timeout-minutes: 30
|
||||
steps:
|
||||
- name: Check out the repo
|
||||
uses: actions/checkout@v6
|
||||
|
||||
@@ -8,6 +8,7 @@ node_modules/
|
||||
|
||||
# Build Outputs
|
||||
dist/
|
||||
*.tsbuildinfo
|
||||
|
||||
# Sencho User Data & Mocks
|
||||
data/
|
||||
|
||||
Reference in New Issue
Block a user