mirror of
https://github.com/Unleash/unleash.git
synced 2025-02-09 00:18:00 +01:00
## About the changes Automate some of our release steps in the same workflow. This gives us the ability to opt-out some of the jobs which allows us to release patches to older versions without setting that patch as the latest version (currently not covering docker publish but if this test works successfully we might include it as well). This comes from tests in our enterprise repository.
118 lines
3.8 KiB
YAML
118 lines
3.8 KiB
YAML
name: Run npm version and push tags
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
permissions:
|
|
contents: write
|
|
id-token: write
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
version:
|
|
description: What version number would you like to use? The version number should be **without** a leading `v`, e.g. `5.7.1` or `6.2.4`.
|
|
bump-main:
|
|
description: Should we bump the package.json main version?
|
|
required: true
|
|
type: boolean
|
|
default: true
|
|
update-version-function:
|
|
description: Should we update the version function to use this version?
|
|
required: true
|
|
type: boolean
|
|
default: true
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
matrix:
|
|
node-version: [18.x]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
token: ${{ secrets.GH_PUSH_TOKEN }}
|
|
- name: Set up git-cliff
|
|
uses: kenji-miyake/setup-git-cliff@v2
|
|
- name: setup git config
|
|
run: |
|
|
git config user.name "Github Actions Bot"
|
|
git config user.email "<>"
|
|
- name: Use Node.js ${{ matrix.node-version }}
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: ${{ matrix.node-version }}
|
|
cache: 'yarn'
|
|
- if: ${{ endsWith(github.event.inputs.version, '0') }}
|
|
run: |
|
|
PREV_COMMIT=$(git rev-list --tags --max-count=1)
|
|
echo PREV=$(git describe --tags ${PREV_COMMIT}) >> $GITHUB_ENV
|
|
- if: ${{ !endsWith(github.event.inputs.version, '0') }}
|
|
run: echo PREV=$(git describe --abbrev=0) >> $GITHUB_ENV
|
|
- name: Generate changelog if not pre-release
|
|
continue-on-error: true
|
|
if: ${{ !contains(github.event.inputs.version, '-') }}
|
|
env:
|
|
PREV: ${{ env.PREV }}
|
|
run: |
|
|
git-cliff ${PREV}..HEAD --tag v${{ github.event.inputs.version }} --prepend CHANGELOG.md
|
|
git commit -am "docs: Update CHANGELOG.md"
|
|
- run: yarn install --frozen-lockfile --ignore-scripts
|
|
- name: npm version
|
|
run: |
|
|
npm version ${{ github.event.inputs.version }} --ignore-scripts
|
|
git push origin ${{ github.ref_name }}
|
|
git push --tags
|
|
env:
|
|
CI: true
|
|
|
|
update-main-version:
|
|
needs: build
|
|
if: ${{ github.event.inputs.bump-main == 'true' }}
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
matrix:
|
|
node-version: [18.x]
|
|
|
|
steps:
|
|
- name: checkout main branch
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: main
|
|
fetch-depth: 0
|
|
token: ${{ secrets.GH_PUSH_TOKEN }}
|
|
- name: setup git config
|
|
run: |
|
|
git config user.name "GitHub Actions Bot"
|
|
git config user.email "<>"
|
|
- name: upgrade package version
|
|
run: |
|
|
jq --arg version "${{ github.event.inputs.version }}+main" '.version=$version' package.json > package.json.tmp
|
|
mv package.json.tmp package.json
|
|
git add package.json
|
|
git commit -m "chore: bump version to ${{ github.event.inputs.version }}+main"
|
|
git push origin main
|
|
|
|
update-version-checker:
|
|
needs: build
|
|
if: ${{ github.event.inputs.update-version-function == 'true' }}
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Authenticate Google IAM
|
|
uses: 'google-github-actions/auth@v2'
|
|
with:
|
|
workload_identity_provider: 'projects/340004706233/locations/global/workloadIdentityPools/gh-actions-pool/providers/github-actions-oidc-unleash'
|
|
service_account: 'versionUpdateSa@metrics-304612.iam.gserviceaccount.com'
|
|
token_format: 'access_token'
|
|
- name: Update version checker
|
|
uses: 'Unleash/update-version-action@v0'
|
|
with:
|
|
version: ${{ github.event.inputs.version }}
|
|
distribution: 'oss'
|