Skip to content

Commit

Permalink
Create full CI pipeline (#13)
Browse files Browse the repository at this point in the history
* full CI pipeline
  • Loading branch information
herr-bubu authored Feb 5, 2024
1 parent 1c97dc9 commit 97d7eca
Show file tree
Hide file tree
Showing 25 changed files with 3,855 additions and 3,583 deletions.
200 changes: 193 additions & 7 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,16 +1,23 @@
name: CI
on: [push]
on:
push:
branches: ['**']
tags: [v*]

jobs:
ci:
name: CI
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Check Copyright
- name: Install jq
run: |
./verify_copyright.sh
- name: Use Node.js
sudo apt-get update
sudo apt-get install -y jq
- name: Check Copyright
run: ./verify_copyright.sh
- name: Install Node 18
uses: actions/setup-node@v4
with:
node-version: 18
Expand All @@ -19,8 +26,187 @@ jobs:
npm i
npm run lint
- name: Build
run: |
npm run build
run: npm run build
- name: Test
run: |
run: npm run test

template-e2e:
needs: [ci]
name: Test Project Template
runs-on: ubuntu-22.04
env:
GALA_CLIENT_DEV_MODE: "true"
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install tools
run: |
sudo apt-get update
sudo apt-get install -y jq
sudo wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64
sudo chmod a+x /usr/local/bin/yq
git --version
node --version
npm --version
jq --version
yq --version
bash --version
docker version
docker-compose version
npm i -g nx
- name: Build template
run: |
npm i
cd chain-cli
../npm-pack-and-replace.sh --skipConfirmation
npm i -g gala-chain-cli-*
galachain --help
cd ..
- name: Create test project
run: |
galachain init ./project-test
cd ./project-test
../npm-pack-and-replace.sh --skipConfirmation
cat package.json
npm run network:start & # Run network in background and wait for it to start
npm run test
sleep 120
npm run test:e2e
MAX_BLOCK_INDEX=$(curl --location 'http://localhost:3010/product-channel/blocks' --header 'Content-Type: application/json' | jq '.info.fromBlock')
if [ $MAX_BLOCK_INDEX -lt 56]; then
echo "The number of blocks is less than 56"
exit 1
else
echo "There are at least 56 blocks after the tests ($$MAX_BLOCK_INDEX)"
fi
npm run network:prune
template-image-check:
name: Template Image Check
needs: [ci]
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 18
- name: Install tools
run: |
npm i
cd chain-cli
npm run build
npm link ./
cd ..
galachain init ./project-test
cd ./project-test
../npm-pack-and-replace.sh --skipConfirmation
npm i
docker build . -t chaincode-test
run_output=$(docker run --rm chaincode-test 2>&1 || true)
echo "$run_output"
if echo "$run_output" | grep -q 'Missing required argument'; then
echo "Success: Got expected error relating with missing required argument."
exit 0
else
echo "---"
echo "Unexpected error from the container. Expected: 'Missing required argument'."
exit 1
fi
publish:
name: Publish Release
needs: [template-e2e, template-image-check]
if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v'))
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 18
- name: Install Dependencies
run: npm i
- name: Set up version
run: |
# Extract package name and version
NPM_PACKAGE_NAME=$(node -p "require('./package.json').name")
NPM_PACKAGE_VERSION=$(node -p "require('./package.json').version")
echo "//registry.npmjs.org/:_authToken=${{ secrets.NODE_AUTH_TOKEN }}" > .npmrc
- name: publish-chain-api
run: |
cd chain-api
npm i
npm run build
# Publish to NPM registry
npm publish --access public
cd ../
- name: publish-chain-test
run: |
cd chain-test
npm i
npm run build
npm publish --access public
cd ../
- name: publish-chain-cli
run: |
cd chain-cli
npm i
npm run build
npm publish --access public
cd ../
- name: publish-chaincode
run: |
cd chaincode
npm i
npm run build
npm publish --access public
cd ../
- name: publish-client
run: |
cd chain-client
npm i
npm run build
npm publish --access public
cd ../
bump-version:
needs: [publish]
if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v'))
name: Bump SDK Version
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 18
- name: Install tools
run: npm i -g semver
- name: Set up Repository
run: |
npm ci
git config --global user.name "$(git log -1 --pretty=format:'%an')"
git config --global user.email "$(git log -1 --pretty=format:'%ae')"
NEW_SDK_VERSION="$(semver "$(< package.json jq -r '.version')" -i)"
./unifyVersions.js "$NEW_SDK_VERSION"
npm i
git add .
git commit -m "Bump version to $NEW_SDK_VERSION"
- name: Push Changes
uses: ad-m/github-push-action@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
branch: 'main'
2 changes: 1 addition & 1 deletion chain-api/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@gala-chain/api",
"version": "1.0.0",
"version": "1.0.6",
"description": "Common types, DTOs (Data Transfer Objects), APIs, signatures, and utils for GalaChain.",
"license": "Apache-2.0",
"dependencies": {
Expand Down
14 changes: 10 additions & 4 deletions chain-cli/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,15 @@ Connect to a new chaincode.

```
USAGE
$ galachain connect [DEVELOPERPRIVATEKEY] [--json] [--log-level debug|info|warn|error]
$ galachain connect [DEVELOPERPRIVATEKEY] [--json] [--log-level debug|info|warn|error] [--testnet]
ARGUMENTS
DEVELOPERPRIVATEKEY Optional private key to sign the data. It could be a file or a string. If not provided, the
private key will be read from the environment variable DEV_PRIVATE_KEY.
FLAGS
--testnet Connect to testnet instead of mainnet.
GLOBAL FLAGS
--json Format output as json.
--log-level=<option> Specify level for logging.
Expand All @@ -68,7 +71,7 @@ EXAMPLES
$ galachain connect c0fb1924408d936fb7cd0c86695885df4f66861621b5c8660df3924c4d09dd79
$ galachain connect
$ galachain connect --testnet
```

## `galachain deploy IMAGETAG [DEVELOPERPRIVATEKEY]`
Expand Down Expand Up @@ -284,12 +287,15 @@ Show the ChainCode information.

```
USAGE
$ galachain info [DEVELOPERPRIVATEKEY] [--json] [--log-level debug|info|warn|error]
$ galachain info [DEVELOPERPRIVATEKEY] [--json] [--log-level debug|info|warn|error] [--testnet]
ARGUMENTS
DEVELOPERPRIVATEKEY Optional private key to sign the data. It could be a file or a string. If not provided, the
private key will be read from the environment variable DEV_PRIVATE_KEY.
FLAGS
--testnet Get info from testnet instead of mainnet.
GLOBAL FLAGS
--json Format output as json.
--log-level=<option> Specify level for logging.
Expand All @@ -301,7 +307,7 @@ DESCRIPTION
EXAMPLES
$ galachain info
$ galachain info ./dev-private-key
$ galachain info ./dev-private-key --testnet
$ galachain info c0fb1924408d936fb7cd0c86695885df4f66861621b5c8660df3924c4d09dd79
```
Expand Down
1 change: 0 additions & 1 deletion chain-cli/chaincode-template/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ test-network
.idea
.npmrc
.env
.dev-env
src/coverage
/classes
/interfaces
Expand Down
Loading

0 comments on commit 97d7eca

Please sign in to comment.