ant-design/.github/workflows/preview-build.yml
726c6cb78f
ci: fix event trigger (#45364)
* ci: fix CI trigger events

ref: https://nathandavison.com/blog/github-actions-and-the-threat-of-malicious-pull-requests

* chore: undo previously changed job name

* chore: remove redundancy logic

* chore: update

* chore: revert #45276

* Revert "chore: revert #45276"

This reverts commit c98ebb9a74b86733dba110a7fa0e619294da5941.

* Revert "chore: update"

This reverts commit c4cc117870c76fa64be08f2dc023cbd7fa36bd38.

* Revert "chore: remove redundancy logic"

This reverts commit a49a6586d957977503305b107228509b81de3dff.

* Revert "chore: undo previously changed job name"

This reverts commit 7fa25e6de70b7edcede67ea92370d579cc5fef91.

* Revert "ci: fix CI trigger events"

This reverts commit 3e0a722dd694ab38aefa2280a9006dbd49d865e6.

* Revert "ci: merge preview workflows (#45276)"

This reverts commit 0379ee5b68.

* chore: update

* chore: update

* chore: update

* chore: update download

* chore: update

* chore: fix

* Update preview-start.yml

---------

Co-authored-by: afc163 <afc163@gmail.com>
2023-10-20 18:03:58 +08:00

126 lines
3.2 KiB
YAML

# Each PR will build preview site that help to check code is work as expect.
name: Preview Build
on:
pull_request:
types: [opened, synchronize, reopened]
# 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:
# Prepare node modules. Reuse cache if available
setup:
name: prepare preview
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
- name: cache package-lock.json
uses: actions/cache@v3
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@v3
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
build-site:
name: build preview
runs-on: ubuntu-latest
needs: setup
steps:
- name: checkout
uses: actions/checkout@v4
- name: restore cache from package-lock.json
uses: actions/cache@v3
with:
path: package-temp-dir
key: lock-${{ github.sha }}
- name: restore cache from node_modules
uses: actions/cache@v3
with:
path: node_modules
key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }}
- name: npm run site
id: site
run: npm run site
env:
SITE_ENV: development
NODE_OPTIONS: "--max_old_space_size=4096 --openssl-legacy-provider"
- name: upload site artifact
uses: actions/upload-artifact@v3
with:
name: site
path: _site/
retention-days: 5
# Upload PR id for next workflow use
- name: Save PR number
if: ${{ always() }}
run: echo ${{ github.event.number }} > ./pr-id.txt
- name: Upload PR number
if: ${{ always() }}
uses: actions/upload-artifact@v3
with:
name: pr
path: ./pr-id.txt
site-test:
name: site E2E test
runs-on: ubuntu-latest
needs: [setup, build-site]
steps:
- name: checkout
uses: actions/checkout@v4
- name: restore cache from package-lock.json
uses: actions/cache@v3
with:
path: package-temp-dir
key: lock-${{ github.sha }}
- name: restore cache from node_modules
uses: actions/cache@v3
with:
path: node_modules
key: node_modules-${{ hashFiles('**/package-temp-dir/package-lock.json') }}
- name: download site artifact
uses: actions/download-artifact@v3
with:
name: site
path: _site
- name: run e2e test
run: npm run site:test