Skip to content

Use rollup to build utilities #2843

Use rollup to build utilities

Use rollup to build utilities #2843

Workflow file for this run

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}}