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