PR automation types rollup solochain #85
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: PR automation types rollup solochain | |
on: | |
workflow_dispatch: | |
inputs: | |
parachainDocker: | |
description: "Name of the parachain docker reference" | |
type: string | |
required: false | |
default: "mangatasolutions/rollup-node:a5060642ee6f68c18b258f53593639b8a343e4b6" | |
branch: | |
description: "Branch where to run workflow" | |
type: string | |
required: false | |
default: "" | |
concurrency: ${{ github.workflow }}-${{ github.ref }} | |
permissions: | |
contents: write | |
id-token: write | |
deployments: write | |
checks: write | |
env: | |
INPUTS_BRANCH: ${{ github.event.inputs.branch || github.ref_name }} | |
jobs: | |
release-type-definitions: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
ref: ${{ github.event.inputs.branch }} | |
- uses: nrwl/nx-set-shas@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: "18" | |
cache: "npm" | |
- run: npm ci | |
- run: npx nx run gasp-type-definitions:lint | |
- name: NPM version bump type definitions | |
working-directory: packages/type-definitions | |
run: | | |
# Branch name sanitization added to avoid issues with npm version command | |
# Example `ci/new-branch-1.0.0` -> `ci-new-branch-1-0-0` | |
npm version prerelease --preid="$(echo "${INPUTS_BRANCH}" | sed -E 's@[/\.]@-@g; s@_@-@g')" | |
- name: git add and commit new version | |
run: | | |
git config user.name mangatafinance | |
git config user.email [email protected] | |
git add . | |
git commit -m "chore: updated type definitions to new prerelease version" | |
git push | |
- name: Build type definitions | |
run: npx nx run gasp-type-definitions:build | |
- name: Publish type definitions to NPM | |
working-directory: dist/packages/type-definitions | |
env: | |
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} | |
run: | | |
echo "//registry.npmjs.org/:_authToken=\${NPM_TOKEN}" > .npmrc | |
# Branch name sanitization added to avoid issues with npm version command | |
# Example `ci/new-branch-1.0.0` -> `ci-new-branch-1-0-0` | |
npm publish --tag "$(echo "${INPUTS_BRANCH}" | sed -E 's@[/\.]@-@g; s@_@-@g')" --access public | |
release-types: | |
runs-on: ubuntu-latest | |
needs: [release-type-definitions] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
ref: ${{ github.ref }} | |
- uses: nrwl/nx-set-shas@v4 | |
- name: Clone mangata node repository | |
uses: actions/checkout@v4 | |
with: | |
repository: mangata-finance/mangata-node | |
path: mangata-repo | |
ref: ${{ env.INPUTS_BRANCH }} | |
- name: Setup Node version and cache dependencies | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "18" | |
cache: "npm" | |
- name: Install WASM toolchain | |
uses: dtolnay/rust-toolchain@v1 | |
with: | |
toolchain: nightly | |
targets: wasm32-unknown-unknown | |
- name: Install websocat | |
run: cargo install websocat | |
- name: Run the Node | |
working-directory: mangata-repo | |
env: | |
NODE_IMAGE: ${{ github.event.inputs.parachainDocker || 'mangatasolutions/rollup-node:53c527a67582de8b7099d76d86c44c200e053f2b' }} | |
run: | | |
echo "Starting nodes with image: ${NODE_IMAGE}" | |
docker compose up -d | |
docker ps | |
- name: Sleep for 1 minutes | |
run: sleep 60s | |
- run: npm ci | |
- run: npx nx run gasp-types:generate-metadata-solochain | |
- run: npx nx run gasp-types:build-types | |
- run: npx nx run gasp-types:lint | |
- name: NPM version bump | |
working-directory: packages/types | |
run: | | |
# Branch name sanitization added to avoid issues with npm version command | |
# Example `ci/new-branch-1.0.0` -> `ci-new-branch-1-0-0` | |
npm version prerelease --preid="$(echo "${INPUTS_BRANCH}" | sed -E 's@[/\.]@-@g; s@_@-@g')" | |
- name: Remove Cloned Repository | |
run: rm -rf mangata-repo | |
- name: git add and commit new version | |
run: | | |
git config user.name mangatafinance | |
git config user.email [email protected] | |
git add . | |
git commit -m "chore: updated to new prerelease version" | |
git push origin ${{ env.INPUTS_BRANCH }} | |
- name: Build types | |
run: npx nx run gasp-types:build | |
- name: Publish to NPM | |
working-directory: dist/packages/types | |
env: | |
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} | |
run: | | |
echo "//registry.npmjs.org/:_authToken=\${NPM_TOKEN}" > .npmrc | |
# Branch name sanitization added to avoid issues with npm version command | |
# Example `ci/new-branch-1.0.0` -> `ci-new-branch-1-0-0` | |
npm publish --tag "$(echo "${INPUTS_BRANCH}" | sed -E 's@[/\.]@-@g; s@_@-@g')" --access public | |
release-sdk: | |
runs-on: ubuntu-latest | |
needs: [release-type-definitions, release-types] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.ref }} | |
- uses: nrwl/nx-set-shas@v4 | |
- name: Setup Node version and cache dependencies | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "18" | |
cache: "npm" | |
- name: Type definitions version for branch | |
run: | | |
branchTypeDefinitionsVersion=$(npm show gasp-type-definitions dist-tags."$(echo "${{ env.INPUTS_BRANCH }}" | sed -E 's@[/\.]@-@g; s@_@-@g')") | |
echo "BRANCH_TYPE_DEFINITIONS_VERSION=$branchTypeDefinitionsVersion" >> $GITHUB_ENV | |
- name: Types version for branch | |
run: | | |
branchTypesVersion=$(npm show gasp-types dist-tags."$(echo "${{ env.INPUTS_BRANCH }}" | sed -E 's@[/\.]@-@g; s@_@-@g')") | |
echo "BRANCH_TYPES_VERSION=$branchTypesVersion" >> $GITHUB_ENV | |
- name: Update types dependency version | |
working-directory: packages/sdk | |
run: | | |
sed -i "s/\"gasp-types\": \".*\"/\"gasp-types\": \"${{env.BRANCH_TYPES_VERSION}}\"/" package.json | |
- name: Update type definitions dependency version | |
working-directory: packages/sdk | |
run: | | |
sed -i "s/\"gasp-type-definitions\": \".*\"/\"gasp-type-definitions\": \"${{env.BRANCH_TYPE_DEFINITIONS_VERSION}}\"/" package.json | |
- run: npm i | |
- run: npx nx run gasp-sdk:lint | |
- name: NPM version bump | |
working-directory: packages/sdk | |
run: | | |
# Branch name sanitization added to avoid issues with npm version command | |
# Example `ci/new-branch-1.0.0` -> `ci-new-branch-1-0-0` | |
npm version prerelease --preid="$(echo "${INPUTS_BRANCH}" | sed -E 's@[/\.]@-@g; s@_@-@g')" | |
- name: git add and commit new version | |
run: | | |
git config user.name mangatafinance | |
git config user.email [email protected] | |
git add . | |
git commit -m "chore: updated sdk to new prerelease version" | |
git push | |
- name: Build sdk | |
run: npx nx run gasp-sdk:build | |
- name: Publish to NPM | |
working-directory: dist/packages/sdk | |
env: | |
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} | |
run: | | |
echo "//registry.npmjs.org/:_authToken=\${NPM_TOKEN}" > .npmrc | |
# Branch name sanitization added to avoid issues with npm version command | |
# Example `ci/new-branch-1.0.0` -> `ci-new-branch-1-0-0` | |
npm publish --tag "$(echo "${INPUTS_BRANCH}" | sed -E 's@[/\.]@-@g; s@_@-@g')" --access public | |
- name: Show released versions | |
run: | | |
echo "Version of gasp-type-definitions:" | |
npm show gasp-type-definitions dist-tags."$(echo "${{ env.INPUTS_BRANCH }}" | sed -E 's@[/\.]@-@g; s@_@-@g')" | |
echo "Version of gasp-types:" | |
npm show gasp-types dist-tags."$(echo "${{ env.INPUTS_BRANCH }}" | sed -E 's@[/\.]@-@g; s@_@-@g')" | |
echo "Version of gasp-sdk:" | |
npm show gasp-sdk dist-tags."$(echo "${{ env.INPUTS_BRANCH }}" | sed -E 's@[/\.]@-@g; s@_@-@g')" |