-
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 CI/CD and semantic release (#43)
- Loading branch information
Showing
9 changed files
with
22,346 additions
and
5,529 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
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
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,152 @@ | ||
name: Release Kit | ||
|
||
on: | ||
workflow_dispatch: | ||
inputs: | ||
dryRun: | ||
description: 'Do a dry run to preview instead of a real release [true/false]' | ||
required: true | ||
default: 'true' | ||
|
||
jobs: | ||
# Kit release is done from master branch. | ||
confirm-public-repo-master-branch: | ||
name: 'Confirm release is run from public/master branch' | ||
uses: mParticle/mparticle-workflows/.github/workflows/sdk-release-repo-branch-check.yml@stable | ||
|
||
build-and-test: | ||
name: Build and Test | ||
runs-on: ubuntu-latest | ||
needs: confirm-public-repo-master-branch | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v3 | ||
|
||
- name: NPM install | ||
uses: actions/setup-node@v3 | ||
with: | ||
node-version: 18.x | ||
|
||
- name: Run NPM CI | ||
run: npm ci | ||
|
||
- name: Build Files | ||
run: npm run build | ||
|
||
- name: Run Core tests | ||
run: npm run test | ||
|
||
- name: Archive npm failure logs | ||
uses: actions/upload-artifact@v3 | ||
if: failure() | ||
with: | ||
name: npm-logs | ||
path: ~/.npm/_logs | ||
|
||
create-release-branch: | ||
name: Create release branch | ||
runs-on: ubuntu-latest | ||
needs: | ||
- build-and-test | ||
- confirm-public-repo-master-branch | ||
steps: | ||
- name: Checkout development branch | ||
uses: actions/checkout@v3 | ||
with: | ||
repository: mparticle-integrations/mparticle-javascript-integration-doubleclick | ||
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: ubuntu-latest | ||
needs: | ||
- build-and-test | ||
- create-release-branch | ||
- confirm-public-repo-master-branch | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.MP_INTEGRATIONS_SEMANTIC_RELEASE_BOT }} | ||
GIT_AUTHOR_NAME: mparticle-automation | ||
GIT_AUTHOR_EMAIL: developers@mparticle.com | ||
GIT_COMMITTER_NAME: mparticle-automation | ||
GIT_COMMITTER_EMAIL: developers@mparticle.com | ||
NPM_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }} | ||
|
||
steps: | ||
- name: Checkout public master branch | ||
uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
ref: master | ||
|
||
- name: Import GPG Key | ||
uses: crazy-max/ghaction-import-gpg@v4 | ||
with: | ||
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }} | ||
passphrase: ${{ secrets.GPG_PASSPHRASE }} | ||
git_user_signingkey: true | ||
git_commit_gpgsign: true | ||
|
||
- name: Merge release branch into master branch | ||
run: | | ||
git pull origin release/${{ github.run_number }} | ||
- name: Setup Node.js | ||
uses: actions/setup-node@v3 | ||
with: | ||
node-version: 16.x | ||
|
||
- name: Install dependencies | ||
run: npm ci | ||
|
||
- name: Release --dry-run | ||
if: ${{ github.event.inputs.dryRun == 'true'}} | ||
run: | | ||
npx semantic-release --dry-run | ||
- name: Release | ||
if: ${{ github.event.inputs.dryRun == 'false'}} | ||
run: | | ||
npx semantic-release | ||
- name: Archive npm failure logs | ||
uses: actions/upload-artifact@v3 | ||
if: failure() | ||
with: | ||
name: npm-logs | ||
path: ~/.npm/_logs | ||
|
||
- name: Push automated release commits to release branch | ||
if: ${{ github.event.inputs.dryRun == 'false' }} | ||
run: | | ||
git push origin HEAD:release/${{ github.run_number }} | ||
sync-repository: | ||
name: Sync repositories | ||
needs: release | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout master branch | ||
uses: actions/checkout@v3 | ||
with: | ||
fetch-depth: 0 | ||
repository: ${{ github.repository }} | ||
token: ${{ secrets.MP_INTEGRATIONS_SEMANTIC_RELEASE_BOT }} | ||
ref: master | ||
|
||
- name: Merge release branch into master branch | ||
if: ${{ github.event.inputs.dryRun == 'false' }} | ||
run: | | ||
git pull origin release/${{ github.run_number }} | ||
- name: Push release commits to master and development branches | ||
if: ${{ github.event.inputs.dryRun == 'false' }} | ||
run: | | ||
git push origin HEAD:development | ||
git push origin HEAD:master | ||
- name: Delete release branch | ||
if: ${{ github.event.inputs.dryRun == 'false' }} | ||
run: | | ||
git push --delete origin release/${{ github.run_number }} |
Empty file.
Oops, something went wrong.