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