Start Release Train #18
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: Start Release Train | |
on: | |
workflow_dispatch: | |
inputs: | |
version_number: | |
description: 'Next version number of the release' | |
type: string | |
required: true | |
dry_run: | |
description: 'If true, the workflow will not create a PR' | |
type: boolean | |
required: false | |
default: false | |
env: | |
LC_ALL: en_US.UTF-8 | |
LANG: en_US.UTF-8 | |
concurrency: | |
group: start-release-train-${{ inputs.version_number }} | |
cancel-in-progress: true | |
jobs: | |
create_release_pr: | |
name: Create release branch and bump version | |
runs-on: macos-latest | |
outputs: | |
branch_name: ${{ steps.branching.outputs.branch_name }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Git User | |
run: | | |
# setup git | |
git config --global user.name "Bitmovin Release Automation" | |
git config --global user.email "support@bitmovin.com" | |
- name: Setup node and npm registry | |
uses: actions/setup-node@v3 | |
with: | |
node-version: '16' | |
registry-url: 'https://registry.npmjs.org/' | |
cache: 'yarn' | |
- name: Set Release Branch name | |
id: branching | |
run: | | |
branch_name="release/v${{ inputs.version_number }}" | |
echo "branch_name=$branch_name" >> $GITHUB_OUTPUT | |
echo "$branch_name" | |
- name: Create Release Branch | |
if: ${{ !inputs.dry_run }} | |
run: | | |
# Delete the release branch if already exists, useful in case we need to re-run this workflow | |
git push origin --delete ${{ steps.branching.outputs.branch_name }} || true | |
git checkout -b ${{ steps.branching.outputs.branch_name }} | |
- name: Bump changelog version | |
run: | | |
sed -i'.bak' "s/\[Unreleased\]/\[${{ inputs.version_number }}\]/g" CHANGELOG.md | |
awk 'BEGIN {count=0} /## \[/ {count++; if (count == 2) exit} {print}' CHANGELOG.md | |
- name: Bump package.json version | |
run: | | |
yarn version --new-version ${{ inputs.version_number }} --no-git-tag-version | |
- name: Restore Pods cache | |
id: pods-cache-restore | |
uses: actions/cache/restore@v3 | |
with: | |
path: | | |
.cocoapods-cache | |
example/ios/Pods | |
integration_test/ios/Pods | |
key: pods-${{ hashFiles('example/ios/Podfile.lock') }}-${{ hashFiles('integration_test/ios/Podfile.lock') }} | |
restore-keys: pods- | |
- name: Set up CocoaPods | |
run: | | |
pod repo add bitmovin https://github.com/bitmovin/cocoapod-specs.git || pod repo update bitmovin | |
working-directory: example/ios | |
env: | |
CP_HOME_DIR: ${{ github.workspace }}/.cocoapods-cache | |
- name: Install pods to update Podfile.lock | |
run: | | |
yarn bootstrap | |
env: | |
CP_HOME_DIR: ${{ github.workspace }}/.cocoapods-cache | |
NO_FLIPPER: 1 | |
- name: Save Pods cache | |
if: steps.pods-cache-restore.outputs.cache-hit != 'true' | |
uses: actions/cache/save@v3 | |
with: | |
path: | | |
.cocoapods-cache | |
example/ios/Pods | |
integration_test/ios/Pods | |
key: ${{ steps.pods-cache-restore.outputs.cache-primary-key }} | |
- name: Commit changelog version bump | |
if: ${{ !inputs.dry_run }} | |
run: | | |
git add CHANGELOG.md package.json example/ios/Podfile.lock | |
git commit -m "chore: prepare release ${{ inputs.version_number }}" | |
git push origin ${{ steps.branching.outputs.branch_name }} | |
- name: Create PR | |
if: ${{ !inputs.dry_run }} | |
run: | | |
gh pr create \ | |
--base "main" \ | |
--title "Release ${{ inputs.version_number }}" \ | |
--body "Release ${{ inputs.version_number }}.\n\nPlease review and merge this PR to continue the release process." \ | |
--reviewer "${{ github.actor }}" | |
env: | |
GH_TOKEN: ${{ github.token }} |