Skip to content
This repository has been archived by the owner on Feb 1, 2024. It is now read-only.

Commit

Permalink
ci: add automatic release pipeline
Browse files Browse the repository at this point in the history
Signed-off-by: Timo Glastra <[email protected]>
  • Loading branch information
TimoGlastra authored and ryjones committed Jul 20, 2021
1 parent 5283cfc commit 4beab7b
Show file tree
Hide file tree
Showing 3 changed files with 1,759 additions and 16 deletions.
106 changes: 106 additions & 0 deletions .github/workflows/continuous-deployment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
name: Continuous Deployment

on:
workflow_dispatch:
inputs:
releaseType:
description: The type of release. Should be one of "major", "minor", "patch"
required: true
default: 'patch'

# Make sure we're not running multiple release steps at the same time as this can give issues with determining the next npm version to release.
# Ideally we only add this to the 'release' job so it doesn't limit PR runs, but github can't guarantee the job order in that case:
# "When concurrency is specified at the job level, order is not guaranteed for jobs or runs that queue within 5 minutes of each other."
concurrency:
group: indy-sdk-react-native-${{ github.ref }}-${{ github.repository }}-${{ github.event_name }}
cancel-in-progress: true

jobs:
validate:
runs-on: ubuntu-20.04
name: Validate
steps:
- name: Checkout indy-sdk-react-native
uses: actions/checkout@v2

- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"

- uses: actions/cache@v2
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Setup node v16
uses: actions/setup-node@v2
with:
node-version: 16

- name: Install dependencies
run: yarn install

- name: Prettier
run: yarn check-format

release:
runs-on: ubuntu-20.04
name: Release
needs: [validate]
# Only run on workflow dispatch to main branch
if: github.ref == 'refs/heads/main' && github.repository == 'hyperledger/indy-sdk-react-native' && github.event_name == 'workflow_dispatch'
steps:
- name: Checkout indy-sdk-react-native
uses: actions/checkout@v2
with:
fetch-depth: 0

- name: git config
run: |
git config user.name "@github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"

- uses: actions/cache@v2
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Setup node v16
uses: actions/setup-node@v2
with:
node-version: 16

- name: Install dependencies
run: yarn install

# https://github.com/yarnpkg/yarn/issues/6617#issuecomment-436222106
- name: Prepend Node path
run: npm config set scripts-prepend-node-path true

- name: Set Verbose Logging
run: npm config set loglevel verbose --global

- name: Set NPM config
run: |
echo "//registry.npmjs.org/:_authToken=${{secrets.NPM_TOKEN}}" >> .npmrc
echo "registry=https://registry.npmjs.org/" >> .npmrc
echo "always-auth=true" >> .npmrc
- name: Install dependencies
run: yarn install --frozen-lockfile

# On manual workflow dispatch release stable version
- name: Release version
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: yarn release ${{ github.event.inputs.releaseType }}
29 changes: 26 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,15 +1,16 @@
{
"name": "indy-sdk-react-native",
"title": "React Native Indy SDK Wrapper",
"version": "0.1.11",
"version": "0.0.0",
"description": "React Native Indy SDK Wrapper",
"main": "lib/index.js",
"scripts": {
"check-format": "prettier --check 'src/**/*.js'",
"format": "prettier --write 'src/**/*.js'",
"test": "echo \"Error: no test specified\" && exit 1",
"build": "babel src/ -d lib/",
"prepublish": "yarn run build"
"prepublish": "yarn run build",
"release": "release-it"
},
"repository": {
"type": "git",
Expand Down Expand Up @@ -41,7 +42,8 @@
"husky": "^4.2.3",
"prettier": "^2.0.3",
"react": "^16.8.3",
"react-native": "^0.59.10"
"react-native": "^0.59.10",
"release-it": "^14.10.0"
},
"husky": {
"hooks": {
Expand All @@ -50,5 +52,26 @@
},
"dependencies": {
"buffer": "^6.0.2"
},
"publishConfig": {
"access": "public",
"registry": "https://registry.npmjs.org"
},
"release-it": {
"github": {
"release": true
},
"npm": {
"skipChecks": true,
"ignoreVersion": true,
"tag": "latest"
},
"git": {
"push": false,
"commit": false,
"requireCommits": true,
"tagAnnotation": "${version}",
"requireBranch": "main"
}
}
}
Loading

0 comments on commit 4beab7b

Please sign in to comment.