mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2026-03-13 10:22:08 +08:00
253 lines
7.5 KiB
YAML
253 lines
7.5 KiB
YAML
name: 'Ionic Production Release'
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
version:
|
|
required: true
|
|
type: choice
|
|
description: Which version should be published?
|
|
options:
|
|
- patch
|
|
- minor
|
|
- major
|
|
tag:
|
|
required: true
|
|
type: choice
|
|
description: Which npm tag should this be published to?
|
|
options:
|
|
- latest
|
|
- v5-lts
|
|
- v4-lts
|
|
|
|
jobs:
|
|
release-core:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: ./.github/workflows/actions/release
|
|
with:
|
|
scope: '@ionic/core'
|
|
tag: ${{ inputs.tag }}
|
|
version: ${{ inputs.version }}
|
|
working-directory: 'core'
|
|
token: ${{ secrets.NPM_TOKEN }}
|
|
- name: Cache Built @ionic/core
|
|
uses: ./.github/workflows/actions/upload-archive
|
|
with:
|
|
name: ionic-core
|
|
output: core/CoreBuild.zip
|
|
paths: core/dist core/components core/css core/hydrate core/loader core/src/components.d.ts
|
|
- name: Cache Built @ionic/docs
|
|
uses: ./.github/workflows/actions/upload-archive
|
|
with:
|
|
name: ionic-docs
|
|
output: docs/DocsBuild.zip
|
|
paths: docs/core.json docs/core.d.ts
|
|
|
|
release-docs:
|
|
needs: [release-core]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Restore @ionic/docs built cache
|
|
uses: ./.github/workflows/actions/download-archive
|
|
with:
|
|
name: ionic-docs
|
|
path: ./docs
|
|
filename: DocsBuild.zip
|
|
- uses: ./.github/workflows/actions/release
|
|
with:
|
|
scope: '@ionic/docs'
|
|
tag: ${{ inputs.tag }}
|
|
version: ${{ inputs.version }}
|
|
working-directory: 'docs'
|
|
token: ${{ secrets.NPM_TOKEN }}
|
|
|
|
release-angular:
|
|
needs: [release-core]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Restore @ionic/core built cache
|
|
uses: ./.github/workflows/actions/download-archive
|
|
with:
|
|
name: ionic-core
|
|
path: ./core
|
|
filename: CoreBuild.zip
|
|
- uses: ./.github/workflows/actions/release
|
|
with:
|
|
scope: '@ionic/angular'
|
|
tag: ${{ inputs.tag }}
|
|
version: ${{ inputs.version }}
|
|
working-directory: 'angular'
|
|
folder: './dist'
|
|
token: ${{ secrets.NPM_TOKEN }}
|
|
- name: Cache Built @ionic/angular
|
|
uses: ./.github/workflows/actions/upload-archive
|
|
with:
|
|
name: ionic-angular
|
|
output: ./angular/AngularBuild.zip
|
|
paths: ./angular/dist
|
|
|
|
release-react:
|
|
needs: [release-core]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Restore @ionic/core built cache
|
|
uses: ./.github/workflows/actions/download-archive
|
|
with:
|
|
name: ionic-core
|
|
path: ./core
|
|
filename: CoreBuild.zip
|
|
- uses: ./.github/workflows/actions/release
|
|
with:
|
|
scope: '@ionic/react'
|
|
tag: ${{ inputs.tag }}
|
|
version: ${{ inputs.version }}
|
|
working-directory: 'packages/react'
|
|
token: ${{ secrets.NPM_TOKEN }}
|
|
- name: Cache Built @ionic/react
|
|
uses: ./.github/workflows/actions/upload-archive
|
|
with:
|
|
name: ionic-react
|
|
output: packages/react/ReactBuild.zip
|
|
paths: packages/react/dist packages/react/css
|
|
|
|
release-vue:
|
|
needs: [release-core]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Restore @ionic/core built cache
|
|
uses: ./.github/workflows/actions/download-archive
|
|
with:
|
|
name: ionic-core
|
|
path: ./core
|
|
filename: CoreBuild.zip
|
|
- uses: ./.github/workflows/actions/release
|
|
with:
|
|
scope: '@ionic/vue'
|
|
tag: ${{ inputs.tag }}
|
|
version: ${{ inputs.version }}
|
|
working-directory: 'packages/vue'
|
|
token: ${{ secrets.NPM_TOKEN }}
|
|
- name: Cache Built @ionic/vue
|
|
uses: ./.github/workflows/actions/upload-archive
|
|
with:
|
|
name: ionic-vue
|
|
output: packages/vue/VueBuild.zip
|
|
paths: packages/vue/dist packages/vue/css
|
|
|
|
release-angular-server:
|
|
needs: [release-angular]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Restore @ionic/angular built cache
|
|
uses: ./.github/workflows/actions/download-archive
|
|
with:
|
|
name: ionic-angular
|
|
path: ./angular
|
|
filename: AngularBuild.zip
|
|
- uses: ./.github/workflows/actions/release
|
|
with:
|
|
scope: '@ionic/angular-server'
|
|
tag: ${{ inputs.tag }}
|
|
version: ${{ inputs.version }}
|
|
working-directory: 'packages/angular-server'
|
|
folder: './dist'
|
|
token: ${{ secrets.NPM_TOKEN }}
|
|
|
|
release-react-router:
|
|
needs: [release-react]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Restore @ionic/react built cache
|
|
uses: ./.github/workflows/actions/download-archive
|
|
with:
|
|
name: ionic-react
|
|
path: ./packages/react
|
|
filename: ReactBuild.zip
|
|
- uses: ./.github/workflows/actions/release
|
|
with:
|
|
scope: '@ionic/react-router'
|
|
tag: ${{ inputs.tag }}
|
|
version: ${{ inputs.version }}
|
|
working-directory: 'packages/react-router'
|
|
token: ${{ secrets.NPM_TOKEN }}
|
|
|
|
release-vue-router:
|
|
needs: [release-vue]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Restore @ionic/vue built cache
|
|
uses: ./.github/workflows/actions/download-archive
|
|
with:
|
|
name: ionic-vue
|
|
path: ./packages/vue
|
|
filename: VueBuild.zip
|
|
- uses: ./.github/workflows/actions/release
|
|
with:
|
|
scope: '@ionic/vue-router'
|
|
tag: ${{ inputs.tag }}
|
|
version: ${{ inputs.version }}
|
|
working-directory: 'packages/vue-router'
|
|
token: ${{ secrets.NPM_TOKEN }}
|
|
|
|
finalize-release:
|
|
needs: [release-react-router, release-angular-server, release-vue-router]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
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 hi@ionicframework.com
|
|
shell: bash
|
|
- name: Create GitHub Release
|
|
run: lerna version ${{ inputs.version }} --yes --force-publish='*' --conventional-commits --create-release github
|
|
env:
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
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 --legacy-peer-deps"
|
|
git add .
|
|
git commit -m "chore(): update package lock files"
|
|
git push
|
|
shell: bash
|
|
|
|
purge-cdn-cache:
|
|
needs: [release-react-router, release-angular-server, release-vue-router]
|
|
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@6/css/ionic.bundle.css",
|
|
"/npm/@ionic/core@latest/css/ionic.bundle.css"
|
|
]}'
|
|
shell: bash
|