| name: Source Release | 
 |  | 
 | on: | 
 |   release: | 
 |     types: [prereleased] | 
 |  | 
 | jobs: | 
 |   materials: | 
 |     runs-on: ubuntu-latest | 
 |     if: ${{ github.repository_owner == 'apache' }} | 
 |  | 
 |     strategy: | 
 |       matrix: | 
 |         node-version: [16.x] | 
 |  | 
 |     steps: | 
 |       - uses: actions/checkout@v3 | 
 |  | 
 |       - name: Use Node.js ${{ matrix.node-version }} | 
 |         uses: actions/setup-node@v3 | 
 |         with: | 
 |           node-version: ${{ matrix.node-version }} | 
 |  | 
 |       - name: Prepare env | 
 |         run: | | 
 |           echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV | 
 |  | 
 |       - name: Cache node modules | 
 |         uses: actions/cache@v3 | 
 |         env: | 
 |           cache-name: cache-node-modules | 
 |         with: | 
 |           # npm cache files are stored in `~/.npm` on Linux/macOS | 
 |           path: ~/.npm | 
 |           key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} | 
 |  | 
 |       - name: Prepare release materials | 
 |         run: | | 
 |           npm i | 
 |           node build/source-release/prepareReleaseMaterials.js \ | 
 |             --rcversion ${{env.RELEASE_VERSION}} \ | 
 |             --commit ${{github.sha}} \ | 
 |             --repo ${{github.repository}} \ | 
 |             --out tmp/materials | 
 |  | 
 |       - name: Archive materials | 
 |         uses: actions/upload-artifact@v3 | 
 |         with: | 
 |           name: apache-echarts-${{env.RELEASE_VERSION}}-release-materials | 
 |           path: | | 
 |             tmp/materials/* | 
 |  | 
 |   source: | 
 |     runs-on: ubuntu-latest | 
 |     needs: materials | 
 |  | 
 |     strategy: | 
 |       matrix: | 
 |         node-version: [16.x] | 
 |  | 
 |     steps: | 
 |       - uses: actions/checkout@v3 | 
 |  | 
 |       - name: Use Node.js ${{ matrix.node-version }} | 
 |         uses: actions/setup-node@v3 | 
 |         with: | 
 |           node-version: ${{ matrix.node-version }} | 
 |  | 
 |       - name: Prepare env | 
 |         run: | | 
 |           echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV | 
 |  | 
 |       # Get RELEASE_NOTE.txt and pack it into zip. | 
 |       - name: Download materials | 
 |         uses: actions/download-artifact@v3 | 
 |         with: | 
 |           name: apache-echarts-${{env.RELEASE_VERSION}}-release-materials | 
 |  | 
 |       # TODO Check release version is RC | 
 |  | 
 |       # Archive before run others to avoid packing unknown files. | 
 |       - name: Archive source release | 
 |         uses: actions/upload-artifact@v3 | 
 |         with: | 
 |           name: apache-echarts-${{env.RELEASE_VERSION}}-src | 
 |           path: | | 
 |             index.d.ts | 
 |             src/ | 
 |             extension-src/ | 
 |             licenses/ | 
 |             theme/ | 
 |             build/ | 
 |             !build/source-release | 
 |             package.json | 
 |             package-lock.json | 
 |             LICENSE | 
 |             NOTICE | 
 |             README.md | 
 |             tsconfig.json | 
 |             test/ut | 
 |             test/types | 
 |             test/check-build.html | 
 |             RELEASE_NOTE.txt | 
 |  | 
 |  | 
 |   validate-source: | 
 |     runs-on: ubuntu-latest | 
 |     needs: source | 
 |  | 
 |     strategy: | 
 |       matrix: | 
 |         node-version: [16.x] | 
 |  | 
 |     steps: | 
 |       - name: Use Node.js ${{ matrix.node-version }} | 
 |         uses: actions/setup-node@v3 | 
 |         with: | 
 |           node-version: ${{ matrix.node-version }} | 
 |  | 
 |       - name: Prepare env | 
 |         run: | | 
 |           echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV | 
 |  | 
 |       - name: Download source release | 
 |         uses: actions/download-artifact@v3 | 
 |         with: | 
 |           name: apache-echarts-${{env.RELEASE_VERSION}}-src | 
 |           path: tmp/echarts | 
 |  | 
 |       - name: Build source release | 
 |         run: | | 
 |           npm ci | 
 |           npm run release | 
 |           npm run test | 
 |           npm run test:dts | 
 |         working-directory: tmp/echarts |