-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ci:Add iOS Kit Release Workflow (#9)
- Loading branch information
1 parent
57d92da
commit ed87701
Showing
3 changed files
with
196 additions
and
0 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,141 @@ | ||
name: iOS Kit Release | ||
|
||
on: | ||
workflow_dispatch: | ||
inputs: | ||
dryRun: | ||
description: Do a dry run to preview instead of a real release [true/false] | ||
required: true | ||
default: "true" | ||
|
||
jobs: | ||
# SDK release is done from main branch. | ||
confirm-main-branch: | ||
name: Confirm release is run from main branch | ||
uses: mParticle/mparticle-workflows/.github/workflows/sdk-release-repo-branch-check.yml@stable | ||
|
||
create-release-branch: | ||
name: Create release branch | ||
runs-on: macOS-12 | ||
needs: confirm-main-branch | ||
steps: | ||
- name: Checkout development branch | ||
uses: actions/checkout@v3 | ||
with: | ||
repository: ${{ github.repository }} | ||
token: ${{ secrets.MP_SEMANTIC_RELEASE_BOT }} | ||
ref: development | ||
|
||
- name: Create and push release branch | ||
run: | | ||
git checkout -b release/${{ github.run_number }} | ||
git push origin release/${{ github.run_number }} | ||
release: | ||
name: Perform release | ||
runs-on: macOS-12 | ||
needs: create-release-branch | ||
env: | ||
GITHUB_ACCESS_TOKEN: ${{ secrets.MP_SEMANTIC_RELEASE_BOT }} | ||
COCOAPODS_TRUNK_TOKEN: ${{ secrets.COCOAPODS_TRUNK_TOKEN }} | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v3 | ||
|
||
- name: Validate environment | ||
run: | | ||
env | grep -q '^GITHUB_ACCESS_TOKEN=' || (echo "Required environment variable GITHUB_ACCESS_TOKEN is not set" && exit 1) | ||
env | grep -q '^COCOAPODS_TRUNK_TOKEN=' || (echo "Required environment variable COCOAPODS_TRUNK_TOKEN is not set" && exit 1) | ||
- name: Setup git config | ||
run: | | ||
git config user.email "[email protected]" | ||
git config user.name "mParticle Automation" | ||
- name: Checkout main branch | ||
uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
repository: ${{ github.repository }} | ||
token: ${{ secrets.MP_SEMANTIC_RELEASE_BOT }} | ||
ref: main | ||
|
||
- name: Merge release branch into main branch | ||
run: | | ||
git pull origin release/${{ github.run_number }} | ||
- name: Release --dry-run | ||
if: ${{ github.event.inputs.dryRun == 'true'}} | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.MP_SEMANTIC_RELEASE_BOT }} | ||
GIT_AUTHOR_NAME: mparticle-bot | ||
GIT_AUTHOR_EMAIL: [email protected] | ||
GIT_COMMITTER_NAME: mparticle-bot | ||
GIT_COMMITTER_EMAIL: [email protected] | ||
run: | | ||
npx \ | ||
-p lodash \ | ||
-p semantic-release@17 \ | ||
-p @semantic-release/changelog@5 \ | ||
-p @semantic-release/git@9 \ | ||
-p @semantic-release/exec@5 \ | ||
semantic-release --dry-run | ||
- name: Release | ||
if: ${{ github.event.inputs.dryRun == 'false'}} | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.MP_SEMANTIC_RELEASE_BOT }} | ||
GIT_AUTHOR_NAME: mparticle-bot | ||
GIT_AUTHOR_EMAIL: [email protected] | ||
GIT_COMMITTER_NAME: mparticle-bot | ||
GIT_COMMITTER_EMAIL: [email protected] | ||
run: | | ||
npx \ | ||
-p lodash \ | ||
-p semantic-release@17 \ | ||
-p @semantic-release/changelog@5 \ | ||
-p @semantic-release/git@9 \ | ||
-p @semantic-release/exec@5 \ | ||
semantic-release | ||
- name: Push automated release commits to release branch | ||
if: ${{ github.event.inputs.dryRun == 'false' }} | ||
run: | | ||
ls | ||
git status | ||
git push origin HEAD:release/${{ github.run_number }} | ||
- name: Release to CocoaPods | ||
if: ${{ github.event.inputs.dryRun == 'false'}} | ||
run: | | ||
sudo gem install xcodeproj | ||
pod trunk push --allow-warnings | ||
sync-repository: | ||
name: Finalize release | ||
needs: release | ||
runs-on: macOS-12 | ||
steps: | ||
- name: Checkout main branch | ||
uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
repository: ${{ github.repository }} | ||
token: ${{ secrets.MP_SEMANTIC_RELEASE_BOT }} | ||
ref: main | ||
|
||
- name: Merge release branch into main branch | ||
if: ${{ github.event.inputs.dryRun == 'false' }} | ||
run: | | ||
git pull origin release/${{ github.run_number }} | ||
- name: Push release commits to main and development branches | ||
if: ${{ github.event.inputs.dryRun == 'false'}} | ||
run: | | ||
git push origin HEAD:main | ||
git push origin HEAD:development | ||
- name: Delete release branch | ||
if: ${{ github.event.inputs.dryRun == 'false' }} | ||
run: | | ||
git push --delete origin release/${{ github.run_number }} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
VERSION="$1" | ||
PREFIXED_VERSION="v$1" | ||
NOTES="$2" | ||
|
||
# Update version number | ||
|
||
# Update CocoaPods podspec file | ||
sed -i '' 's/\(^ s.version[^=]*= \).*/\1"'"$VERSION"'"/' mParticle-OneTrust.podspec | ||
|
||
# Make the release commit in git | ||
# | ||
|
||
git add mParticle-OneTrust.podspec | ||
git add mParticle_OneTrust.json | ||
git add CHANGELOG.md | ||
git commit -m "chore(release): $VERSION [skip ci] | ||
$NOTES" |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
module.exports = { | ||
branches: ["main"], | ||
tagFormat: "v${version}", | ||
plugins: [ | ||
[ | ||
"@semantic-release/commit-analyzer", | ||
{ | ||
preset: "angular", | ||
}, | ||
], | ||
[ | ||
"@semantic-release/release-notes-generator", | ||
{ | ||
preset: "angular", | ||
}, | ||
], | ||
[ | ||
"@semantic-release/changelog", | ||
{ | ||
changelogFile: "CHANGELOG.md", | ||
}, | ||
], | ||
[ | ||
"@semantic-release/exec", | ||
{ | ||
prepareCmd: "sh ./Scripts/release.sh ${nextRelease.version} \"${nextRelease.notes}\"", | ||
}, | ||
], | ||
[ | ||
"@semantic-release/github", | ||
{ | ||
assets: [ | ||
], | ||
}, | ||
], | ||
], | ||
}; |