chore: release 6.1.1 #58
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
# This file is automatically added by @npmcli/template-oss. Do not edit. | |
name: Release | |
on: | |
workflow_dispatch: | |
push: | |
branches: | |
- main | |
- latest | |
- release/v* | |
permissions: | |
contents: write | |
pull-requests: write | |
checks: write | |
jobs: | |
release: | |
outputs: | |
pr: ${{ steps.release.outputs.pr }} | |
releases: ${{ steps.release.outputs.releases }} | |
release-flags: ${{ steps.release.outputs.release-flags }} | |
branch: ${{ steps.release.outputs.pr-branch }} | |
pr-number: ${{ steps.release.outputs.pr-number }} | |
comment-id: ${{ steps.pr-comment.outputs.result }} | |
check-id: ${{ steps.check.outputs.check_id }} | |
name: Release | |
if: github.repository_owner == 'npm' | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Setup Git User | |
run: | | |
git config --global user.email "[email protected]" | |
git config --global user.name "npm CLI robot" | |
- name: Setup Node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18.x | |
- name: Install npm@latest | |
run: npm i --prefer-online --no-fund --no-audit -g npm@latest | |
- name: npm Version | |
run: npm -v | |
- name: Install Dependencies | |
run: npm i --ignore-scripts --no-audit --no-fund | |
- name: Release Please | |
id: release | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
npx --offline template-oss-release-please ${{ github.ref_name }} ${{ github.event_name }} | |
- name: Post Pull Request Comment | |
if: steps.release.outputs.pr-number | |
uses: actions/github-script@v6 | |
id: pr-comment | |
env: | |
PR_NUMBER: ${{ steps.release.outputs.pr-number }} | |
REF_NAME: ${{ github.ref_name }} | |
with: | |
script: | | |
const { REF_NAME, PR_NUMBER } = process.env | |
const repo = { owner: context.repo.owner, repo: context.repo.repo } | |
const issue = { ...repo, issue_number: PR_NUMBER } | |
const { data: workflow } = await github.rest.actions.getWorkflowRun({ ...repo, run_id: context.runId }) | |
let body = '## Release Manager\n\n' | |
const comments = await github.paginate(github.rest.issues.listComments, issue) | |
let commentId = comments?.find(c => c.user.login === 'github-actions[bot]' && c.body.startsWith(body))?.id | |
body += `Release workflow run: ${workflow.html_url}\n\n#### Force CI to Rerun for This Release\n\n` | |
body += `This PR will be updated and CI will run for every non-\`chore:\` commit that is pushed to \`main\`. ` | |
body += `To force CI to rerun, run this command:\n\n` | |
body += `\`\`\`\ngh workflow run release.yml -r ${REF_NAME}\n\`\`\`` | |
if (commentId) { | |
await github.rest.issues.updateComment({ ...repo, comment_id: commentId, body }) | |
} else { | |
const { data: comment } = await github.rest.issues.createComment({ ...issue, body }) | |
commentId = comment?.id | |
} | |
return commentId | |
- name: Get Workflow Job | |
uses: actions/github-script@v6 | |
if: steps.release.outputs.pr-sha | |
id: check-output | |
env: | |
JOB_NAME: "Release" | |
MATRIX_NAME: "" | |
with: | |
script: | | |
const { owner, repo } = context.repo | |
const { data } = await github.rest.actions.listJobsForWorkflowRun({ | |
owner, | |
repo, | |
run_id: context.runId, | |
per_page: 100 | |
}) | |
const jobName = process.env.JOB_NAME + process.env.MATRIX_NAME | |
const job = data.jobs.find(j => j.name.endsWith(jobName)) | |
const jobUrl = job?.html_url | |
const shaUrl = `${context.serverUrl}/${owner}/${repo}/commit/${{ steps.release.outputs.pr-sha }}` | |
let summary = `This check is assosciated with ${shaUrl}\n\n` | |
if (jobUrl) { | |
summary += `For run logs, click here: ${jobUrl}` | |
} else { | |
summary += `Run logs could not be found for a job with name: "${jobName}"` | |
} | |
return { summary } | |
- name: Create Check | |
uses: LouisBrunner/[email protected] | |
id: check | |
if: steps.release.outputs.pr-sha | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
status: in_progress | |
name: Release | |
sha: ${{ steps.release.outputs.pr-sha }} | |
output: ${{ steps.check-output.outputs.result }} | |
update: | |
needs: release | |
outputs: | |
sha: ${{ steps.commit.outputs.sha }} | |
check-id: ${{ steps.check.outputs.check_id }} | |
name: Update - Release | |
if: github.repository_owner == 'npm' && needs.release.outputs.pr | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
ref: ${{ needs.release.outputs.branch }} | |
- name: Setup Git User | |
run: | | |
git config --global user.email "[email protected]" | |
git config --global user.name "npm CLI robot" | |
- name: Setup Node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18.x | |
- name: Install npm@latest | |
run: npm i --prefer-online --no-fund --no-audit -g npm@latest | |
- name: npm Version | |
run: npm -v | |
- name: Install Dependencies | |
run: npm i --ignore-scripts --no-audit --no-fund | |
- name: Run Post Pull Request Actions | |
env: | |
RELEASE_PR_NUMBER: ${{ needs.release.outputs.pr-number }} | |
RELEASE_COMMENT_ID: ${{ needs.release.outputs.comment-id }} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
npm exec --offline -- template-oss-release-manager | |
npm run rp-pull-request --ignore-scripts --if-present | |
- name: Commit | |
id: commit | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: | | |
git commit --all --amend --no-edit || true | |
git push --force-with-lease | |
echo "::set-output name=sha::$(git rev-parse HEAD)" | |
- name: Get Workflow Job | |
uses: actions/github-script@v6 | |
if: steps.commit.outputs.sha | |
id: check-output | |
env: | |
JOB_NAME: "Update - Release" | |
MATRIX_NAME: "" | |
with: | |
script: | | |
const { owner, repo } = context.repo | |
const { data } = await github.rest.actions.listJobsForWorkflowRun({ | |
owner, | |
repo, | |
run_id: context.runId, | |
per_page: 100 | |
}) | |
const jobName = process.env.JOB_NAME + process.env.MATRIX_NAME | |
const job = data.jobs.find(j => j.name.endsWith(jobName)) | |
const jobUrl = job?.html_url | |
const shaUrl = `${context.serverUrl}/${owner}/${repo}/commit/${{ steps.commit.outputs.sha }}` | |
let summary = `This check is assosciated with ${shaUrl}\n\n` | |
if (jobUrl) { | |
summary += `For run logs, click here: ${jobUrl}` | |
} else { | |
summary += `Run logs could not be found for a job with name: "${jobName}"` | |
} | |
return { summary } | |
- name: Create Check | |
uses: LouisBrunner/[email protected] | |
id: check | |
if: steps.commit.outputs.sha | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
status: in_progress | |
name: Release | |
sha: ${{ steps.commit.outputs.sha }} | |
output: ${{ steps.check-output.outputs.result }} | |
- name: Conclude Check | |
uses: LouisBrunner/[email protected] | |
if: needs.release.outputs.check-id && always() | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
conclusion: ${{ job.status }} | |
check_id: ${{ needs.release.outputs.check-id }} | |
ci: | |
name: CI - Release | |
needs: [ release, update ] | |
if: needs.release.outputs.pr | |
uses: ./.github/workflows/ci-release.yml | |
with: | |
ref: ${{ needs.release.outputs.branch }} | |
check-sha: ${{ needs.update.outputs.sha }} | |
post-ci: | |
needs: [ release, update, ci ] | |
name: Post CI - Release | |
if: github.repository_owner == 'npm' && needs.release.outputs.pr && always() | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- name: Get Needs Result | |
id: needs-result | |
run: | | |
result="" | |
if [[ "${{ contains(needs.*.result, 'failure') }}" == "true" ]]; then | |
result="failure" | |
elif [[ "${{ contains(needs.*.result, 'cancelled') }}" == "true" ]]; then | |
result="cancelled" | |
else | |
result="success" | |
fi | |
echo "::set-output name=result::$result" | |
- name: Conclude Check | |
uses: LouisBrunner/[email protected] | |
if: needs.update.outputs.check-id && always() | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
conclusion: ${{ steps.needs-result.outputs.result }} | |
check_id: ${{ needs.update.outputs.check-id }} | |
post-release: | |
needs: release | |
name: Post Release - Release | |
if: github.repository_owner == 'npm' && needs.release.outputs.releases | |
runs-on: ubuntu-latest | |
defaults: | |
run: | |
shell: bash | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
- name: Setup Git User | |
run: | | |
git config --global user.email "[email protected]" | |
git config --global user.name "npm CLI robot" | |
- name: Setup Node | |
uses: actions/setup-node@v3 | |
with: | |
node-version: 18.x | |
- name: Install npm@latest | |
run: npm i --prefer-online --no-fund --no-audit -g npm@latest | |
- name: npm Version | |
run: npm -v | |
- name: Install Dependencies | |
run: npm i --ignore-scripts --no-audit --no-fund | |
- name: Run Post Release Actions | |
env: | |
RELEASES: ${{ needs.release.outputs.releases }} | |
run: | | |
npm run rp-release --ignore-scripts --if-present ${{ join(fromJSON(needs.release.outputs.release-flags), ' ') }} |