Merge branch 'ant-design:master' into master #2
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
# Origin Source | |
# https://github.com/ant-design/ant-design/blob/79f566b7f8abb1012ef55b0d2793bfdf5595b85d/.github/workflows/test.yml | |
name: ✅ test | |
on: [push, pull_request] | |
# Cancel prev CI if new commit come | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
permissions: | |
contents: read | |
jobs: | |
setup: | |
runs-on: ubuntu-latest | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
- name: cache package-lock.json | |
uses: actions/cache@v4 | |
with: | |
path: package-temp-dir | |
key: lock-${{ github.sha }} | |
- name: create package-lock.json | |
run: npm i --package-lock-only --ignore-scripts | |
- name: hack for single file | |
run: | | |
if [ ! -d "package-temp-dir" ]; then | |
mkdir package-temp-dir | |
fi | |
cp package-lock.json package-temp-dir | |
- name: cache node_modules | |
id: node_modules_cache_id | |
uses: actions/cache@v4 | |
with: | |
path: node_modules | |
key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }} | |
- name: install | |
if: steps.node_modules_cache_id.outputs.cache-hit != 'true' | |
run: npm ci | |
lint: | |
runs-on: ubuntu-latest | |
needs: setup | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
- name: restore cache from package-lock.json | |
uses: actions/cache@v4 | |
with: | |
path: package-temp-dir | |
key: lock-${{ github.sha }} | |
- name: restore cache from node_modules | |
uses: actions/cache@v4 | |
with: | |
path: node_modules | |
key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }} | |
- name: lint | |
run: npm run lint | |
- name: lint:react-16 | |
run: npm run compile && npm run install-react-16 && npm run tsc:old | |
- name: lint:react-17 | |
run: npm run compile && npm run install-react-17 && npm run tsc:old | |
check_metadata: | |
runs-on: ubuntu-latest | |
needs: setup | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
- name: restore cache from package-lock.json | |
uses: actions/cache@v4 | |
with: | |
path: package-temp-dir | |
key: lock-${{ github.sha }} | |
- name: restore cache from node_modules | |
uses: actions/cache@v4 | |
with: | |
path: node_modules | |
key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }} | |
################################ Test ################################ | |
normal-test-legacy: | |
name: test-legacy | |
strategy: | |
matrix: | |
react: ['16', '17'] | |
module: ['dom', 'dist'] | |
shard: ['1/2', '2/2'] | |
env: | |
REACT: ${{ matrix.react }} | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
- name: restore cache from package-lock.json | |
uses: actions/cache@v4 | |
with: | |
path: package-temp-dir | |
key: lock-${{ github.sha }} | |
- name: restore cache from node_modules | |
uses: actions/cache@v4 | |
with: | |
path: node_modules | |
key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }} | |
- name: install react 16 | |
if: ${{ matrix.react == '16' }} | |
run: npm run install-react-16 | |
- name: install react 17 | |
if: ${{ matrix.react == '17' }} | |
run: npm run install-react-17 | |
- name: restore cache from dist | |
if: ${{ matrix.module == 'dist' }} | |
uses: actions/cache@v4 | |
with: | |
path: dist | |
key: dist-${{ github.sha }} | |
- name: check | |
if: ${{ matrix.module == 'dist' }} | |
run: node ./tests/dekko/dist.test.js | |
- name: check use client | |
if: ${{ matrix.module == 'dist' }} | |
run: node ./tests/dekko/use-client.test.js | |
env: | |
LIB_DIR: dist | |
# dom test | |
- name: dom test | |
if: ${{ matrix.module == 'dom' }} | |
run: npm test -- --maxWorkers=2 --shard=${{matrix.shard}} --coverage | |
# dist test | |
- name: dist test | |
if: ${{ matrix.module == 'dist' }} | |
run: npm test | |
env: | |
LIB_DIR: dist | |
normal-test-latest: | |
name: test-latest | |
strategy: | |
matrix: | |
react: ['18'] | |
module: ['dom', 'node', 'dist', 'dist-min'] | |
shard: ['1/2', '2/2'] | |
env: | |
REACT: ${{ matrix.react }} | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
- name: restore cache from package-lock.json | |
uses: actions/cache@v4 | |
with: | |
path: package-temp-dir | |
key: lock-${{ github.sha }} | |
- name: restore cache from node_modules | |
uses: actions/cache@v4 | |
with: | |
path: node_modules | |
key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }} | |
- name: install react 18 | |
if: ${{ matrix.react == '18' }} | |
run: npm run install-react-18 | |
- name: restore cache from dist | |
if: ${{ matrix.module == 'dist' || matrix.module == 'dist-min' }} | |
uses: actions/cache@v4 | |
with: | |
path: dist | |
key: dist-${{ github.sha }} | |
- name: check | |
if: ${{ matrix.module == 'dist' }} | |
run: node ./tests/dekko/dist.test.js | |
- name: check use client | |
if: ${{ matrix.module == 'dist' }} | |
run: node ./tests/dekko/use-client.test.js | |
env: | |
LIB_DIR: dist | |
# dom test | |
- name: dom test | |
if: ${{ matrix.module == 'dom' }} | |
run: npm test -- --maxWorkers=2 --shard=${{matrix.shard}} --coverage | |
- name: persist coverages | |
if: ${{ matrix.module == 'dom' && matrix.react == '18' }} | |
run: | | |
mkdir persist-coverage | |
mv coverage/coverage-final.json persist-coverage/react-${{matrix.react}}-test-${{matrix.module}}-${{strategy.job-index}}.json | |
- uses: actions/upload-artifact@v4 | |
if: ${{ matrix.module == 'dom' && matrix.react == '18' }} | |
name: upload coverages | |
with: | |
name: coverage-artifacts-${{ matrix.module }}-${{ matrix.react }}-${{ strategy.job-index }} | |
path: persist-coverage/ | |
# node test | |
- name: node test | |
if: ${{ matrix.module == 'node' }} | |
run: npm run test:node | |
# dist test | |
- name: dist test | |
if: ${{ matrix.module == 'dist' }} | |
run: npm test | |
env: | |
LIB_DIR: dist | |
# dist min test | |
- name: dist-min test | |
if: ${{ matrix.module == 'dist-min' }} | |
run: npm test | |
env: | |
LIB_DIR: dist-min | |
############################ Test Coverage ########################### | |
upload-test-coverage: | |
name: test-coverage | |
runs-on: ubuntu-latest | |
needs: normal-test-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
- uses: actions/download-artifact@v4 | |
with: | |
pattern: coverage-artifacts-* | |
merge-multiple: true | |
path: persist-coverage | |
- name: Merge Code Coverage | |
run: | | |
npx nyc merge persist-coverage/ coverage/coverage-final.json | |
npx nyc report --reporter text -t coverage --report-dir coverage | |
rm -rf persist-coverage | |
- name: Upload coverage to codecov | |
uses: codecov/codecov-action@v4 | |
with: | |
# use own token to upload coverage reports | |
token: ${{ secrets.CODECOV_TOKEN }} | |
########################### Compile & Test ########################### | |
build: | |
runs-on: ubuntu-latest | |
needs: setup | |
steps: | |
- name: checkout | |
uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
- name: restore cache from package-lock.json | |
uses: actions/cache@v4 | |
with: | |
path: package-temp-dir | |
key: lock-${{ github.sha }} | |
- name: restore cache from node_modules | |
uses: actions/cache@v4 | |
with: | |
path: node_modules | |
key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }} | |
- name: cache lib | |
uses: actions/cache@v4 | |
with: | |
path: lib | |
key: lib-${{ github.sha }} | |
- name: cache es | |
uses: actions/cache@v4 | |
with: | |
path: es | |
key: es-${{ github.sha }} | |
- name: compile | |
run: npm run compile | |
- name: check | |
run: node ./tests/dekko/lib.test.js | |
- name: check use client | |
run: node ./tests/dekko/use-client.test.js | |
- name: cache dist | |
uses: actions/cache@v4 | |
with: | |
path: dist | |
key: dist-${{ github.sha }} | |
- name: dist | |
run: npm run dist | |
env: | |
NODE_OPTIONS: "--max_old_space_size=4096" | |
CI: 1 | |
# Artifact build files | |
- uses: actions/upload-artifact@v4 | |
if: github.event_name == 'push' && github.ref == 'refs/heads/master' | |
with: | |
name: build artifacts | |
path: | | |
dist | |
locale | |
es | |
lib | |
- name: zip builds | |
if: github.repository == 'ant-design/ant-design' && github.event_name == 'push' && github.ref == 'refs/heads/master' | |
env: | |
ALI_OSS_AK_ID: ${{ secrets.ALI_OSS_AK_ID }} | |
ALI_OSS_AK_SECRET: ${{ secrets.ALI_OSS_AK_SECRET }} | |
HEAD_SHA: ${{ github.sha }} | |
run: | | |
zip -r oss-artifacts.zip dist locale es lib | |
echo "🤖 Uploading" | |
node scripts/visual-regression/upload.js ./oss-artifacts.zip --ref=$HEAD_SHA | |
compiled-module-test: | |
name: module test | |
runs-on: ubuntu-latest | |
needs: build | |
strategy: | |
matrix: | |
react: ['18'] | |
module: [lib, es] | |
shard: ['1/2', '2/2'] | |
env: | |
REACT: ${{ matrix.react }} | |
steps: | |
- name: checkout | |
# lib only run in master branch not in pull request | |
if: ${{ github.event_name != 'pull_request' || matrix.module != 'lib' }} | |
uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
- name: restore cache from package-lock.json | |
# lib only run in master branch not in pull request | |
if: ${{ github.event_name != 'pull_request' || matrix.module != 'lib' }} | |
uses: actions/cache@v4 | |
with: | |
path: package-temp-dir | |
key: lock-${{ github.sha }} | |
- name: restore cache from node_modules | |
# lib only run in master branch not in pull request | |
if: ${{ github.event_name != 'pull_request' || matrix.module != 'lib' }} | |
uses: actions/cache@v4 | |
with: | |
path: node_modules | |
key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }} | |
- name: restore cache from ${{ matrix.module }} | |
# lib only run in master branch not in pull request | |
if: ${{ github.event_name != 'pull_request' || matrix.module != 'lib' }} | |
uses: actions/cache@v4 | |
with: | |
path: ${{ matrix.module }} | |
key: ${{ matrix.module }}-${{ github.sha }} | |
- name: install react 18 | |
if: ${{ matrix.react == '18' && (github.event_name != 'pull_request' || matrix.module != 'lib') }} | |
run: npm run install-react-18 | |
- name: test | |
# lib only run in master branch not in pull request | |
if: ${{ github.event_name != 'pull_request' || matrix.module != 'lib' }} | |
run: npm test -- --maxWorkers=2 --shard=${{matrix.shard}} | |
env: | |
LIB_DIR: ${{ matrix.module }} |