Skip to content

Commit

Permalink
ci: Unify workflows into singular pipeline (#4520)
Browse files Browse the repository at this point in the history
* ci: Remove duplicate build & test job in CI

* ci: Wait for filter

* ci: Missing `runs-on`

* junk: REVERT ME - To trigger CI

* ci: Fix action name & format

* ci: Fix wrong job name

* junk: REVERT ME - Fixes workflow test

* ci: Further refactor into singular pipeline

* ci: Better name for filter

* ci: Fix workflow name

* ci: Clean up
  • Loading branch information
rschristian authored Oct 7, 2024
1 parent ad3bc3b commit b5bdcef
Show file tree
Hide file tree
Showing 5 changed files with 86 additions and 70 deletions.
19 changes: 2 additions & 17 deletions .github/workflows/benchmarks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,12 @@ name: Benchmarks

on:
workflow_dispatch:
pull_request:
branches:
- '**'
paths:
- '**/src/**.js'
push:
branches:
- main
- v11
paths:
- '**/src/**.js'
workflow_call:

jobs:
build_test:
name: Build & Test
uses: ./.github/workflows/ci.yml

prepare:
name: Prepare environment
runs-on: ubuntu-latest
needs: build_test
timeout-minutes: 5
steps:
- name: Download locally built preact package
Expand All @@ -34,7 +19,7 @@ jobs:
uses: andrewiggins/download-base-artifact@v3
with:
artifact: npm-package
workflow: ci.yml
workflow: build-test.yml
required: false
- run: mv preact.tgz preact-main.tgz
- name: Upload locally build & base preact package
Expand Down
55 changes: 55 additions & 0 deletions .github/workflows/build-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: Build & Test

on:
workflow_dispatch:
workflow_call:
inputs:
ref:
description: 'Branch or tag ref to check out'
type: string
required: false
default: ''
artifact_name:
description: 'Name of the artifact to upload'
type: string
required: false
default: 'npm-package'

jobs:
build_test:
name: Build & Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
ref: ${{ inputs.ref || '' }}
- uses: actions/setup-node@v4
with:
node-version-file: 'package.json'
cache: 'npm'
cache-dependency-path: '**/package-lock.json'
- run: npm ci
- name: test
env:
CI: true
COVERAGE: true
FLAKEY: false
# Not using `npm test` since it rebuilds source which npm ci has already done
run: |
npm run lint
npm run test:unit
- name: Coveralls GitHub Action
uses: coverallsapp/github-action@v2.3.0
timeout-minutes: 2
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Package
# Use --ignore-scripts here to avoid re-building again before pack
run: |
npm pack --ignore-scripts
mv preact-*.tgz preact.tgz
- name: Upload npm package
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.artifact_name || 'npm-package' }}
path: preact.tgz
72 changes: 26 additions & 46 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,61 +2,41 @@ name: CI

on:
workflow_dispatch:
workflow_call:
inputs:
ref:
description: 'Branch or tag ref to check out'
type: string
required: false
default: ''
artifact_name:
description: 'Name of the artifact to upload'
type: string
required: false
default: 'npm-package'
pull_request:
branches:
- '**'
push:
branches:
- main
- restructure
- v11

jobs:
build_test:
name: Build & Test
filter_jobs:
name: Filter jobs
runs-on: ubuntu-latest
outputs:
jsChanged: ${{ steps.filter.outputs.jsChanged }}
steps:
- uses: actions/checkout@v4
with:
ref: ${{ inputs.ref || '' }}
- uses: actions/setup-node@v4
with:
node-version-file: 'package.json'
cache: 'npm'
cache-dependency-path: '**/package-lock.json'
- run: npm ci
- name: test
env:
CI: true
COVERAGE: true
FLAKEY: false
# Not using `npm test` since it rebuilds source which npm ci has already done
run: |
npm run lint
npm run test:unit
- name: Coveralls GitHub Action
uses: coverallsapp/github-action@v2.3.0
timeout-minutes: 2
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
- name: Package
# Use --ignore-scripts here to avoid re-building again before pack
run: |
npm pack --ignore-scripts
mv preact-*.tgz preact.tgz
- name: Upload npm package
uses: actions/upload-artifact@v4
- uses: dorny/paths-filter@v3
id: filter
with:
name: ${{ inputs.artifact_name || 'npm-package' }}
path: preact.tgz
filters: |
jsChanged: '**/src/**.js'
compressed_size:
name: Compressed Size
needs: filter_jobs
if: ${{ needs.filter_jobs.outputs.jsChanged == 'true' }}
uses: ./.github/workflows/size.yml

build_test:
name: Build & Test
needs: filter_jobs
uses: ./.github/workflows/build-test.yml

benchmarks:
name: Benchmarks
needs: build_test
if: ${{ needs.filter_jobs.outputs.jsChanged == 'true' }}
uses: ./.github/workflows/benchmarks.yml
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on: create
jobs:
build:
if: github.ref_type == 'tag'
uses: preactjs/preact/.github/workflows/ci.yml@main
uses: preactjs/preact/.github/workflows/build-test.yml@main

release:
runs-on: ubuntu-latest
Expand Down
8 changes: 2 additions & 6 deletions .github/workflows/size.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
name: Compressed Size

on:
pull_request:
branches:
- '**'
paths:
- '**/src/**.js'
workflow_call:

jobs:
build:
Expand All @@ -22,4 +18,4 @@ jobs:
repo-token: '${{ secrets.GITHUB_TOKEN }}'
# Our `prepare` script already builds the app post-install,
# building it again would be redundant
build-script: 'npm run --if-present noop'
build-script: 'npm run --if-present noop'

0 comments on commit b5bdcef

Please sign in to comment.