Use rollup to build utilities #2843
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: ci | |
on: | |
push: | |
branches: | |
- master | |
tags: | |
- v* | |
pull_request: | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
# Cache packages when the branch is not update-dependencies or dependabot/* | |
- name: Resolve caching | |
id: cache | |
if: ${{ github.ref_name != 'update-dependencies' && !startsWith(github.ref_name, 'dependabot/') }} | |
run: echo "PACKAGE=npm" >> $GITHUB_OUTPUT | |
- name: Use Node.js | |
uses: actions/[email protected] | |
with: | |
node-version-file: ".nvmrc" | |
cache: ${{ steps.cache.outputs.PACKAGE }} | |
- name: Install dependencies | |
run: npm ci | |
- name: Build | |
run: npm run build | |
- name: Upload webpack stats file | |
uses: relative-ci/[email protected] | |
with: | |
webpackStatsFile: ./packages/html-templates/artifacts/webpack-stats.json | |
- name: Upload build files | |
uses: actions/upload-artifact@v4 | |
with: | |
name: build-artifacts | |
retention-days: 1 | |
# add glob on the first directory to force paths relative to current directory | |
path: | | |
packages*/*/lib/** | |
packages*/*/lib-esm/** | |
packages*/*/dist/** | |
packages*/*/types/** | |
packages/cli/__fixtures__/* | |
# Publish new version to local registry | |
- name: Run local npm registry | |
run: ./scripts/local-registry.sh & | |
- name: Publish bundle-stats packages locally | |
run: ./scripts/local-registry-publish.sh | |
- name: Upload local registry files | |
uses: actions/upload-artifact@v4 | |
with: | |
name: local-registry | |
retention-days: 1 | |
path: | | |
.verdaccio-storage*/**/* | |
lint: | |
needs: | |
- build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
# Cache packages when the branch is not update-dependencies or dependabot/* | |
- name: Resolve caching | |
id: cache | |
if: ${{ github.ref_name != 'update-dependencies' && !startsWith(github.ref_name, 'dependabot/') }} | |
run: echo "PACKAGE=npm" >> $GITHUB_OUTPUT | |
- name: Use Node.js | |
uses: actions/[email protected] | |
with: | |
node-version-file: ".nvmrc" | |
cache: ${{ steps.cache.outputs.PACKAGE }} | |
# Workaround npm/nx optional install issue - https://github.com/nrwl/nx/issues/15452 | |
- name: Install dependencies | |
run: npm ci | |
- name: Download build files | |
uses: actions/download-artifact@v4 | |
with: | |
name: build-artifacts | |
- name: Lint | |
run: npm run lint | |
test-unit: | |
needs: | |
- build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
# Cache packages when the branch is not update-dependencies or dependabot/* | |
- name: Resolve caching | |
id: cache | |
if: ${{ github.ref_name != 'update-dependencies' && !startsWith(github.ref_name, 'dependabot/') }} | |
run: echo "PACKAGE=npm" >> $GITHUB_OUTPUT | |
- name: Use Node.js | |
uses: actions/[email protected] | |
with: | |
node-version-file: ".nvmrc" | |
cache: ${{ steps.cache.outputs.PACKAGE }} | |
# Workaround npm/nx optional install issue - https://github.com/nrwl/nx/issues/15452 | |
- name: Install dependencies | |
run: npm ci | |
- name: Download build files | |
uses: actions/download-artifact@v4 | |
with: | |
name: build-artifacts | |
- name: Test | |
run: npm test | |
test-e2e: | |
needs: | |
- build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
# Cache packages when the branch is not update-dependencies or dependabot/* | |
- name: Resolve caching | |
id: cache | |
if: ${{ github.ref_name != 'update-dependencies' && !startsWith(github.ref_name, 'dependabot/') }} | |
run: echo "PACKAGE=npm" >> $GITHUB_OUTPUT | |
- name: Use Node.js | |
uses: actions/[email protected] | |
with: | |
node-version-file: ".nvmrc" | |
cache: ${{ steps.cache.outputs.PACKAGE }} | |
# Workaround npm/nx optional install issue - https://github.com/nrwl/nx/issues/15452 | |
- name: Install dependencies | |
run: npm ci | |
- name: Download build files | |
uses: actions/download-artifact@v4 | |
with: | |
name: build-artifacts | |
- name: Install E2E tests dependencies | |
working-directory: packages/cli | |
run: npx playwright install --with-deps | |
- name: Run E2E tests | |
working-directory: packages/cli | |
run: npm run test:e2e | |
test-package-cli: | |
needs: | |
- build | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
node: [20, 18, 16, 14] | |
runs-on: ${{ matrix.os }} | |
name: CLI ${{ matrix.os }} nodejs ${{ matrix.node }} | |
steps: | |
- uses: actions/checkout@v4 | |
# Cache packages when the branch is not update-dependencies or dependabot/* | |
- name: Resolve caching | |
id: cache | |
if: ${{ github.ref_name != 'update-dependencies' && !startsWith(github.ref_name, 'dependabot/') }} | |
run: echo "PACKAGE=npm" >> $GITHUB_OUTPUT | |
- name: Use Node.js | |
uses: actions/[email protected] | |
with: | |
node-version: ${{ matrix.node }} | |
cache: ${{ steps.cache.outputs.PACKAGE }} | |
- name: Download build files | |
uses: actions/download-artifact@v4 | |
with: | |
name: build-artifacts | |
- name: Download local registry files | |
uses: actions/download-artifact@v4 | |
with: | |
name: local-registry | |
- name: Install dependencies | |
run: npm install -g verdaccio | |
- name: Run local npm registry | |
run: ./scripts/local-registry.sh & | |
- name: Test package | |
run: npm run test:package | |
working-directory: packages/cli | |
test-package-webpack-plugin: | |
needs: | |
- build | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [windows-latest, ubuntu-latest] | |
node: [20, 18, 16, 14] | |
webpack: ['webpack4', 'webpack5'] | |
exclude: | |
- webpack: 'webpack4' | |
node: 18 | |
- webpack: 'webpack4' | |
node: 20 | |
- os: windows-latest | |
node: 20 | |
- os: windows-latest | |
node: 18 | |
- os: windows-latest | |
node: 16 | |
runs-on: ${{ matrix.os }} | |
name: ${{ matrix.webpack }} plugin ${{ matrix.os }} nodejs ${{ matrix.node }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Use Node.js | |
uses: actions/[email protected] | |
with: | |
node-version: ${{ matrix.node }} | |
- name: Download build files | |
uses: actions/download-artifact@v4 | |
with: | |
name: build-artifacts | |
- name: Download local registry files | |
uses: actions/download-artifact@v4 | |
with: | |
name: local-registry | |
- name: Install dependencies | |
run: npm install -g verdaccio | |
- name: Run local npm registry | |
run: ./scripts/local-registry.sh & | |
- name: Test package | |
run: npm run test:package -- -t ${{ matrix.webpack }} | |
working-directory: packages/webpack-plugin | |
test-package-rollup-plugin: | |
needs: | |
- build | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
node: [16, 18] | |
rollup: [3, 4] | |
exclude: | |
- rollup: 3 | |
node: 18 | |
- rollup: 4 | |
node: 16 | |
runs-on: ${{ matrix.os }} | |
name: rollup ${{ matrix.rollup}} plugin nodejs ${{ matrix.node }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Use Node.js | |
uses: actions/[email protected] | |
with: | |
node-version: ${{ matrix.node }} | |
- name: Download build files | |
uses: actions/download-artifact@v4 | |
with: | |
name: build-artifacts | |
- name: Download local registry files | |
uses: actions/download-artifact@v4 | |
with: | |
name: local-registry | |
- name: Install verdaccio | |
run: npm install -g verdaccio | |
- name: Run local npm registry | |
run: ./scripts/local-registry.sh & | |
- name: Install test dependencies | |
run: | | |
npm install --force | |
npm install --no-save --force rollup@${{ matrix.rollup }} | |
working-directory: packages/rollup-plugin/test/package | |
- name: Test package | |
run: npm run test:package | |
working-directory: packages/rollup-plugin | |
tests: | |
needs: | |
- lint | |
- test-unit | |
- test-e2e | |
- test-package-cli | |
- test-package-webpack-plugin | |
- test-package-rollup-plugin | |
runs-on: ubuntu-latest | |
steps: | |
- run: echo "Tests done." | |
publish: | |
# Run only for version tags | |
if: contains(github.ref, 'refs/tags/v') | |
needs: | |
- tests | |
runs-on: ubuntu-latest | |
permissions: | |
id-token: write | |
steps: | |
- uses: actions/checkout@v4 | |
# Cache packages when the branch is not update-dependencies or dependabot/* | |
- name: Resolve caching | |
id: cache | |
if: ${{ github.ref_name != 'update-dependencies' && !startsWith(github.ref_name, 'dependabot/') }} | |
run: echo "PACKAGE=npm" >> $GITHUB_OUTPUT | |
- name: Use Node.js | |
uses: actions/[email protected] | |
with: | |
node-version-file: ".nvmrc" | |
cache: ${{ steps.cache.outputs.PACKAGE }} | |
registry-url: 'https://registry.npmjs.org' | |
# Workaround npm/nx optional install issue - https://github.com/nrwl/nx/issues/15452 | |
- name: Install dependencies | |
run: npm ci | |
- name: Download build | |
uses: actions/download-artifact@v4 | |
with: | |
name: build-artifacts | |
- run: npm run release | |
env: | |
NPM_CONFIG_PROVENANCE: true | |
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}} | |
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} |