name: Deploy PR Preview on: workflow_run: workflows: ['Node CI'] types: [completed] jobs: on-success: if: ${{ github.repository_owner == 'apache' }} runs-on: ubuntu-latest steps: - name: Determine if workflow build job is successful id: check-build-success uses: actions/github-script@v6 with: result-encoding: string script: | const jobsRes = await github.rest.actions.listJobsForWorkflowRun({ owner: context.repo.owner, repo: context.repo.repo, run_id: context.payload.workflow_run.id }); return jobsRes.data.jobs.some((job) => job.name.includes('build') && job.conclusion === 'success'); outputs: SHOULD_DEPOLY: ${{ steps.check-build-success.outputs.result }} deploy: needs: [on-success] if: ${{ needs.on-success.outputs.SHOULD_DEPOLY == 'true' }} runs-on: ubuntu-latest steps: - name: Install action dependencies run: | mkdir .actions cd .actions git clone --depth=1 https://github.com/dawidd6/action-download-artifact.git git clone --depth=1 https://github.com/actions-cool/maintain-one-comment.git - name: Fetch PR dist files uses: ./.actions/action-download-artifact with: workflow: ${{ github.event.workflow.id }} run_id: ${{ github.event.workflow_run.id }} name: pr_preview if_no_artifact_found: fail - name: Output PR metadata id: pr-metadata run: | echo "NUMBER=$(cat pr_number)" >> $GITHUB_OUTPUT echo "COMMIT_SHA=$(cat pr_commit_sha)" >> $GITHUB_OUTPUT echo "COMMIT_SHA_SHORT=$(cat pr_commit_sha | cut -c 1-7)" >> $GITHUB_OUTPUT - name: Deploy dist files env: PR_NUMBER: ${{ steps.pr-metadata.outputs.NUMBER }} SURGE_TOKEN: ${{ secrets.SURGE_TOKEN }} run: | export SURGE_DOMAIN=https://echarts-pr-$PR_NUMBER.surge.sh npx surge --project ./package --domain $SURGE_DOMAIN --token $SURGE_TOKEN - name: Create comment for PR preview uses: ./.actions/maintain-one-comment env: PR_NUMBER: ${{ steps.pr-metadata.outputs.NUMBER }} COMMIT_SHA_SHORT: ${{ steps.pr-metadata.outputs.COMMIT_SHA_SHORT }} with: body: | The changes brought by this PR can be previewed at: https://echarts.apache.org/examples/editor?version=PR-${{ env.PR_NUMBER }}@${{ env.COMMIT_SHA_SHORT }} body-include: '' number: ${{ env.PR_NUMBER }}