Align recently added features with SDK v2 conventions #941
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
name: Publish on tag | |
on: | |
pull_request: | |
push: | |
tags: [v*] | |
workflow_dispatch: | |
env: | |
PAGES_BRANCH: gh-pages | |
HTTPS_REMOTE: "https://${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}" | |
jobs: | |
publish: | |
name: Publish Release | |
if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v')) | |
runs-on: ubuntu-latest | |
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 ../ | |
- name: publish-chain-connect | |
run: | | |
cd chain-connect | |
npm i | |
npm run build | |
# Publish to NPM registry | |
npm publish --access public | |
cd ../ | |
publish-pages: | |
name: Publish Pages | |
runs-on: ubuntu-latest | |
needs: [publish] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install project dependencies | |
run: npm install | |
- name: Generate typedocs | |
run: | | |
npm run typedoc-chain-api | |
npm run typedoc-chain-client | |
npm run typedoc-chaincode | |
npm run typedoc-chain-connect | |
npm run typedoc-chain-test | |
npm run replace-readme-docs | |
- name: Install google-chrome | |
run: | | |
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb | |
sudo dpkg -i google-chrome*.deb | |
- name: Install python3 and pip | |
run: | | |
sudo apt-get install -y python3 | |
sudo apt-get install -y python3-pip python3-pillow python3-cffi python3-brotli gcc musl-dev python3-dev | |
- name: Setup Node.js | |
uses: actions/setup-node@v3 | |
- name: Install mermaid-cli | |
run: npm install -g @mermaid-js/mermaid-cli | |
- name: Install pip packages | |
run: pip3 install mkdocs==1.5.3 mkdocs-material==9.4.8 mike==1.1.2 beautifulsoup4==4.9.3 setuptools==58.2.0 mkdocs-awesome-pages-plugin==2.9.2 | |
- name: Git config | |
run: | | |
git config --global user.email "${GITHUB_ACTOR}" | |
git config --global user.name "${GITHUB_ACTOR}@gala.games" | |
- name: Clone mkdocs-with-pdf fixed branch and install | |
run: | | |
git clone -b render-mermaid-png https://github.com/Fuerback/mkdocs-with-pdf.git | |
cd mkdocs-with-pdf | |
sudo python3 setup.py install | |
cd .. | |
- name: Mkdocs build | |
run: | | |
mkdocs build | |
- name: Push a new version of the docs | |
run: | | |
git stash | |
git fetch origin $PAGES_BRANCH && git -b checkout $PAGES_BRANCH origin/$PAGES_BRANCH || git checkout $PAGES_BRANCH || echo "Pages branch not deployed yet." | |
git checkout $GITHUB_SHA | |
mike deploy --rebase --prefix docs -r $HTTPS_REMOTE -p -b $PAGES_BRANCH -u ${GITHUB_REF#refs/tags/} latest | |
mike set-default --rebase --prefix docs -r $HTTPS_REMOTE -p -b $PAGES_BRANCH latest | |
git checkout $PAGES_BRANCH -- docs/ | |
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: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Cache Docker images | |
uses: ScribeMD/[email protected] | |
with: | |
key: docker-${{ runner.os }}-${{ github.ref_name }} | |
- 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-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ startsWith(github.ref_name, 'v1.') && 'main-v1' || 'main' }} | |
- 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: Set a new version | |
run: | | |
VERSION="$(semver "$(< package.json jq -r '.version')" -i)" | |
echo "VERSION=$VERSION" >> $GITHUB_ENV | |
- name: Create a new branch | |
run: | | |
TARGET_BRANCH="${{ startsWith(github.ref_name, 'v1.') && 'main-v1' || 'main' }}" | |
BRANCH_NAME="bump-version-to-$VERSION" | |
git checkout -b $BRANCH_NAME $TARGET_BRANCH | |
echo "BRANCH_NAME=$BRANCH_NAME" >> $GITHUB_ENV | |
echo "TARGET_BRANCH=$TARGET_BRANCH" >> $GITHUB_ENV | |
- name: Bump version and commit changes | |
run: | | |
./unifyVersions.js $VERSION | |
npm i | |
git commit -am "Bump version to $VERSION" | |
git push --set-upstream origin bump-version-to-$VERSION | |
- name: Create Pull Request | |
env: | |
GH_TOKEN: ${{ secrets.RELEASE_BOT_TOKEN }} | |
run: gh pr create --title "Bump Version to $VERSION" --body "Bump Version to $VERSION" --label "bump-version-pr" --head "bump-version-to-$VERSION" --base ${{ env.TARGET_BRANCH }} | |
notify-tag: | |
needs: [publish, publish-cli-image] | |
if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v')) | |
name: Notify Tag | |
runs-on: ubuntu-latest | |
steps: | |
- name: Trigger GitLab Pipeline | |
id: trigger | |
run: | | |
curl -X POST -H 'Content-type: application/json' --data "{ | |
\"channel\": \"#releases\", | |
\"username\": \"Tag Reporter Bot\", | |
\"text\": Galachain SDK ${{ github.ref_name }} Released by ${{ github.actor }}\n${{ github.event.head_commit.message }} | |
}" ${{ secrets.SLACK_TAG_WEBHOOK_URL }} | |
update-assets-chaincode: | |
needs: [publish] | |
runs-on: ubuntu-latest | |
name: Update assets chaincode | |
if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v')) | |
steps: | |
- name: Trigger GitLab Pipeline | |
id: trigger | |
run: | | |
curl --request POST \ | |
--form token=${{ secrets.GITLAB_PIPELINE_TOKEN }} \ | |
--form ref=main \ | |
--form variables[DEPLOY_NEW_SDK_TAG]="true" \ | |
--form variables[NEW_VERSION_TAG]=${{ github.ref_name }} \ | |
--form variables[GITHUB_AUTHOR]="${{ github.actor }}" \ | |
--form variables[GITHUB_COMMIT_URL]="${{ github.server_url }}/${{ github.repository }}/commit/${{ github.sha }}" \ | |
"https://gitlab.com/api/v4/projects/35484791/trigger/pipeline" |