Skip to content

Improve CI pipeline #344

Improve CI pipeline

Improve CI pipeline #344

Workflow file for this run

name: CI
on:
push:
tags: [v*]
pull_request:
workflow_dispatch:
jobs:
# ci:
# name: CI
# runs-on: ubuntu-22.04
# steps:
# - name: Checkout
# uses: actions/checkout@v4
# - name: Verify copyright
# run: ./verify_copyright.sh
# - name: Install Node 18
# uses: actions/setup-node@v4
# with:
# node-version: 18
# - name: Install dependencies
# run: npm i
# - name: Lint
# run: npm run lint
# - name: Build
# run: npm run build
# - name: Test
# run: npm run test
#
# template-ci:
# name: Chaincode template CI
# runs-on: ubuntu-22.04
# needs: [ ci ]
# steps:
# - name: Checkout
# uses: actions/checkout@v4
# - name: Set up Node.js
# uses: actions/setup-node@v4
# with:
# node-version: 18
# - name: Install local CLI
# run: .github/scripts/install-local-cli.sh
# - name: Create test project
# run: galachain init ./project-test
# - name: Install dependencies
# run: |
# (cd ./project-test && ../npm-pack-and-replace.sh --skipConfirmation)
# npm i --prefix ./project-test
# - name: Lint
# run: npm run lint --prefix ./project-test
# - name: Build
# run: npm run build --prefix ./project-test
# - name: Test
# run: npm run test --prefix ./project-test
#
# template-e2e:
# name: Chaincode template E2E (watch mode)
# runs-on: ubuntu-22.04
# needs: [ ci ]
# 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: Set up Node.js
# uses: actions/setup-node@v4
# with:
# node-version: 18
# - name: Install local CLI
# run: .github/scripts/install-local-cli.sh
# - name: Create test project
# run: galachain init ./project-test
# - name: Install dependencies
# run: |
# (cd ./project-test && ../npm-pack-and-replace.sh --skipConfirmation)
# npm i --prefix ./project-test
# - name: Run network in watch mode and wait for it to start
# run: |
# npm run network:start --prefix ./project-test &
# sleep 120
# - name: Run E2E tests
# run: npm run test:e2e --prefix ./project-test
# - name: Verify chain browser blocks
# run: |
# 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 --prefix ./project-test
#
# template-image-check:
# name: Chaincode 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 local CLI
# run: .github/scripts/install-local-cli.sh
# - name: Create test project
# run: galachain init ./project-test
# - name: Install dependencies
# run: |
# (cd ./project-test && ../npm-pack-and-replace.sh --skipConfirmation)
# npm i --prefix ./project-test
# - name: Verify image
# run: |
# cd ./project-test
# 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 ../
#
# publish-cli-image:
# name: Publish CLI Image
# needs: [ publish ]
# if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v'))
# env:
# REGISTRY: ghcr.io
# IMAGE_NAME: galachain/sdk
# runs-on: ubuntu-latest
# permissions:
# contents: read
# packages: write
# steps:
# - name: Checkout
# uses: actions/checkout@v4
# - name: Log in to the Container registry
# uses: docker/login-action@v3
# with:
# registry: ${{ env.REGISTRY }}
# username: ${{ github.actor }}
# password: ${{ secrets.GITHUB_TOKEN }}
# - name: Make the repository name lowercase
# id: lower-repo
# shell: pwsh
# run: |
# "::set-output name=repository::$($env:GITHUB_REPOSITORY.ToLowerInvariant())"
# - name: Build and push Docker image
# uses: docker/build-push-action@v5
# with:
# context: ./chain-cli/docker
# push: true
# tags: ghcr.io/${{ steps.lower-repo.outputs.repository }}:latest
bump-version:
# needs: [ publish, publish-cli-image ]
# 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
with:
ref: 'test-branch'
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: 18
- name: Install tools
run: npm i -g semver
- name: Configure Git
run: |
git config --global user.name "galachain-release-bot"
git config --global user.email "[email protected]"
- name: Bump version
run: |
VERSION="$(semver "$(< package.json jq -r '.version')" -i)"
./unifyVersions.js $VERSION
npm i
git commit -am "Bump version to $VERSION"
- name: Push next version release
uses: ad-m/github-push-action@master
with:
branch: 'test-branch'
github_token: ${{ secrets.GITHUB_TOKEN }}