Skip to content

Commit

Permalink
ci: separate workflow files
Browse files Browse the repository at this point in the history
  • Loading branch information
brynblack committed Jul 4, 2024
1 parent c63171d commit 3650c22
Show file tree
Hide file tree
Showing 2 changed files with 143 additions and 61 deletions.
68 changes: 7 additions & 61 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,6 @@ on:
branches:
- staging
- feature*
tags:
- v**

env:
GIT_SUBMODULE_STRATEGY: recursive
npm_config_cache: "${{ github.workspace }}/tmp/npm"
npm_config_prefer_offline: "true"

jobs:
check-lint:
Expand Down Expand Up @@ -95,37 +88,10 @@ jobs:
name: cobertura-coverage
path: tmp/coverage/cobertura-coverage.json

build-prerelease:
name: "Build / Pre-release"
runs-on: ubuntu-latest
needs:
- check-lint
- check-build
- check-test
if: >
startsWith(github.ref, 'refs/tags/v') &&
contains(github.ref, '-')
steps:
- uses: actions/checkout@v4
- name: Run deployment
run: |
echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > ./.npmrc
echo 'Publishing library prerelease'
npm install
npm publish --tag prerelease --access public
rm -f ./.npmrc
build-pull:
name: "Build / Pull Request"
runs-on: ubuntu-latest
needs:
- check-lint
- check-build
- check-test
if: >
github.ref == 'refs/heads/staging' ||
(startsWith(github.ref, 'refs/tags/v') &&
!contains(github.ref, '-'))
if: github.ref == 'refs/head/staging'
steps:
- uses: actions/checkout@v4
- name: Create pull request
Expand All @@ -150,11 +116,12 @@ jobs:
concurrency:
group: integration-merge
cancel-in-progress: true
needs: build-pull
if: >
github.ref == 'refs/heads/staging' ||
(startsWith(github.ref, 'refs/tags/v') &&
!contains(github.ref, '-'))
needs:
- build-pull
- check-lint
- check-build
- check-test
if: github.ref == 'refs/heads/staging'
steps:
- uses: actions/checkout@v4
with:
Expand All @@ -175,24 +142,3 @@ jobs:
git checkout master
git merge --ff-only "$GITHUB_SHA"
git push origin master
release-distribution:
name: "Release / Distribution"
runs-on: ubuntu-latest
concurrency:
group: release-distribution
cancel-in-progress: false
needs: integration-merge
if: >
startsWith(github.ref, 'refs/tags/v') &&
!contains(github.ref, '-')
steps:
- uses: actions/checkout@v4
- name: Publish release
run: |
echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > ./.npmrc
echo 'Publishing library'
npm install
npm publish --access public
rm -f ./.npmrc
136 changes: 136 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
name: Release

on:
push:
tags:
- v**

jobs:
check-lint:
name: "Check / Lint"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run linting
run: |
npm install
npm run lint
npm run lint-shell
check-build:
name: "Check / Build"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run build
run: |
npm install
npm run build --verbose
check-matrix:
name: "Check / Matrix"
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- uses: actions/checkout@v4
- id: set-matrix
run: |
files=$(find tests/* -maxdepth 0 -type d | sed 's/.*/"&"/' | paste -sd, -)
files=$files,$(find tests/* -maxdepth 0 -type f | grep -e "/*.test.ts" | sed 's/.*/"&"/' | paste -sd, -)
if [ -z "$files" ]; then
echo "matrix={\"shard\":[]}" >> $GITHUB_OUTPUT
else
echo "matrix={\"shard\":[$files]}" >> $GITHUB_OUTPUT
fi
check-test:
name: "Check / Test"
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix: ${{fromJson(needs.check-matrix.outputs.matrix)}}
needs: check-matrix
steps:
- uses: actions/checkout@v4
- name: Set artifact name
run: echo "SLUG=$(echo ${{ matrix.shard }} | sed 's/[/.]/-/g')" >> $GITHUB_ENV
- name: Run tests
run: |
npm install
npm run test -- \
--coverageReporters json \
--coverage \
"${{ matrix.shard }}"
mv tmp/coverage/coverage-final.json "tmp/coverage/${{ env.SLUG }}.json"
- uses: actions/upload-artifact@v4
with:
name: coverage-artifacts-${{ env.SLUG }}
path: tmp/coverage/

check-coverage:
name: "Check / Coverage"
runs-on: ubuntu-latest
needs: check-test
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
pattern: coverage-artifacts-*
path: tmp/coverage/
merge-multiple: true
- run: rm .npmrc
- name: Merge coverage results
run: npx nyc merge tmp/coverage/ tmp/coverage/cobertura-coverage.json
- uses: actions/upload-artifact@v4
with:
name: cobertura-coverage
path: tmp/coverage/cobertura-coverage.json

build-prerelease:
name: "Build / Pre-release"
runs-on: ubuntu-latest
concurrency:
group: build-prerelease
cancel-in-progress: false
needs:
- check-lint
- check-build
- check-test
if: >
startsWith(github.ref, 'refs/tags/v') &&
contains(github.ref, '-')
steps:
- uses: actions/checkout@v4
- name: Run deployment
run: |
echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > ./.npmrc
echo 'Publishing library prerelease'
npm install
npm publish --tag prerelease --access public
rm -f ./.npmrc
release-distribution:
name: "Release / Distribution"
runs-on: ubuntu-latest
concurrency:
group: release-distribution
cancel-in-progress: false
needs:
- check-lint
- check-build
- check-test
if: >
startsWith(github.ref, 'refs/tags/v') &&
!contains(github.ref, '-')
steps:
- uses: actions/checkout@v4
- name: Publish release
run: |
echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" > ./.npmrc
echo 'Publishing library'
npm install
npm publish --access public
rm -f ./.npmrc

0 comments on commit 3650c22

Please sign in to comment.