Ionic Production Release #223
Workflow file for this run
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
name: 'Ionic Production Release' | |
on: | |
workflow_dispatch: | |
inputs: | |
version: | |
required: true | |
type: choice | |
description: Which version should be published? | |
options: | |
- patch | |
- minor | |
- major | |
- prepatch | |
- preminor | |
- premajor | |
- prerelease | |
tag: | |
required: true | |
type: choice | |
description: Which npm tag should this be published to? | |
options: | |
- latest | |
- next | |
- v5-lts | |
- v4-lts | |
preid: | |
type: choice | |
description: Which prerelease identifier should be used? This is only needed when version is "prepatch", "preminor", "premajor", or "prerelease". | |
options: | |
- '' | |
- alpha | |
- beta | |
- rc | |
- next | |
jobs: | |
release-ionic: | |
permissions: | |
id-token: write | |
uses: ./.github/workflows/release-ionic.yml | |
with: | |
tag: ${{ inputs.tag }} | |
version: ${{ inputs.version }} | |
preid: ${{ inputs.preid }} | |
secrets: | |
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} | |
finalize-release: | |
needs: [release-ionic] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
token: ${{ secrets.IONITRON_TOKEN }} | |
fetch-depth: 0 | |
- name: Configure Identity | |
# Commits from github-actions do not | |
# trigger other GitHub Actions. As a result, | |
# we publish releases from Ionitron instead | |
# so actions run when merging the release branch | |
# back into main. | |
run: | | |
git config user.name ionitron | |
git config user.email [email protected] | |
shell: bash | |
- name: Create GitHub Release | |
run: lerna version ${{ inputs.version }} --yes --force-publish='*' --conventional-commits --create-release github --preid=${{ inputs.preid }} | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
shell: bash | |
update-package-lock: | |
# This needs to run after finalize-release | |
# because we also push to the repo in that | |
# job. If these jobs ran in parallel then it is | |
# possible for them to push at the same time. | |
needs: [finalize-release] | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
# Pull the latest version of the reference | |
# branch instead of the revision that triggered | |
# the workflow otherwise we won't get the commit | |
# created in the previous job and this next job | |
# will fail. | |
with: | |
ref: ${{ github.ref }} | |
- name: Configure Identity | |
# Commits from github-actions do not | |
# trigger other GitHub Actions. As a result, | |
# we push from Ionitron instead so actions | |
# run when merging the release branch | |
# back into main. | |
run: | | |
git config user.name ionitron | |
git config user.email [email protected] | |
shell: bash | |
# Lerna does not automatically bump versions | |
# of Ionic dependencies that have changed, | |
# so we do that here. | |
- name: Bump Package Lock | |
run: | | |
lerna exec "npm install --package-lock-only" | |
git add . | |
git commit -m "chore(): update package lock files" | |
git push | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
shell: bash | |
purge-cdn-cache: | |
needs: [release-ionic] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Purge JSDelivr Cache | |
run: | | |
curl -X POST \ | |
https://purge.jsdelivr.net/ \ | |
-H 'cache-control: no-cache' \ | |
-H 'content-type: application/json' \ | |
-d '{ | |
"path": [ | |
"/npm/@ionic/core@6/dist/ionic/ionic.esm.js", | |
"/npm/@ionic/core@latest/dist/ionic/ionic.esm.js", | |
"/npm/@ionic/core@next/dist/ionic/ionic.esm.js", | |
"/npm/@ionic/core@6/css/ionic.bundle.css", | |
"/npm/@ionic/core@latest/css/ionic.bundle.css" | |
"/npm/@ionic/core@next/css/ionic.bundle.css" | |
]}' | |
shell: bash |