[indexer]: Fix phantom bid decoding errors inside subquery sandbox (… #30
Workflow file for this run
This file contains hidden or 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: "Release @hyperbridge/indexer" | |
| on: | |
| push: | |
| tags: | |
| - "indexer-mainnet-v*" | |
| - "indexer-testnet-v*" | |
| jobs: | |
| build-and-release: | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: sdk | |
| permissions: | |
| contents: write | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| with: | |
| fetch-depth: 0 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: "22" | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v4 | |
| with: | |
| version: "11.0.0" | |
| - name: Parse tag | |
| id: tag | |
| run: | | |
| TAG=${GITHUB_REF#refs/tags/} | |
| # Expected tag format: indexer-<env>-v<version> | |
| if [[ "$TAG" =~ ^indexer-(mainnet|testnet)-v(.+)$ ]]; then | |
| ENV="${BASH_REMATCH[1]}" | |
| VERSION="${BASH_REMATCH[2]}" | |
| else | |
| echo "Tag '${TAG}' does not match expected format 'indexer-<mainnet|testnet>-v<version>'" | |
| exit 1 | |
| fi | |
| echo "tag=${TAG}" >> $GITHUB_OUTPUT | |
| echo "env=${ENV}" >> $GITHUB_OUTPUT | |
| echo "version=${VERSION}" >> $GITHUB_OUTPUT | |
| echo "Building indexer release for env=${ENV}, version=${VERSION}" | |
| - name: Install dependencies | |
| run: pnpm install | |
| - name: Build indexer dependencies | |
| run: pnpm --filter="@hyperbridge/indexer^..." build | |
| - name: Build indexer | |
| run: pnpm --filter="@hyperbridge/indexer" build:release | |
| env: | |
| ENV: ${{ steps.tag.outputs.env }} | |
| - name: Assemble release package | |
| run: | | |
| ENV="${{ steps.tag.outputs.env }}" | |
| VERSION="${{ steps.tag.outputs.version }}" | |
| RELEASE_NAME="hyperbridge-indexer-${ENV}-v${VERSION}" | |
| RELEASE_DIR="${GITHUB_WORKSPACE}/${RELEASE_NAME}" | |
| mkdir -p "${RELEASE_DIR}/src" | |
| # Copy built output | |
| cp -r packages/indexer/dist "${RELEASE_DIR}/dist" | |
| # Copy configs (JSONs, ABIs, schema, generated yamls, config loader) | |
| cp -r packages/indexer/src/configs "${RELEASE_DIR}/src/configs" | |
| # Copy generation scripts and templates | |
| cp -r packages/indexer/scripts "${RELEASE_DIR}/scripts" | |
| # Create release package.json with deployment scripts | |
| cat > "${RELEASE_DIR}/package.json" <<PKGJSON | |
| { | |
| "name": "@hyperbridge/indexer", | |
| "version": "${VERSION}", | |
| "description": "Hyperbridge indexer release package (${ENV}) with deployment config generators", | |
| "main": "dist/index.js", | |
| "type": "module", | |
| "engines": { | |
| "node": ">=22" | |
| }, | |
| "scripts": { | |
| "codegen:yamls": "tsx scripts/generate-chain-yamls.ts", | |
| "codegen:compose": "tsx scripts/generate-compose.ts", | |
| "codegen": "npm run codegen:yamls && npm run codegen:compose", | |
| "start": "./scripts/up.sh ./docker/\$ENV", | |
| "down": "./scripts/down.sh ./docker/\$ENV" | |
| }, | |
| "dependencies": { | |
| "dotenv": "^16.4.7", | |
| "handlebars": "^4.7.8", | |
| "rpc-websocket-client": "^1.1.4", | |
| "tsx": "^4.19.4", | |
| "viem": "^2.23.5", | |
| "zod": "^3.25.32" | |
| } | |
| } | |
| PKGJSON | |
| # Patch env-file paths for standalone package | |
| # (monorepo uses ../../.env.$ENV, release package uses ./.env.$ENV) | |
| sed -i 's|../../.env.\$ENV|./.env.\$ENV|g' "${RELEASE_DIR}/scripts/up.sh" | |
| sed -i 's|../../.env.\$ENV|./.env.\$ENV|g' "${RELEASE_DIR}/scripts/down.sh" | |
| sed -i 's|../../.env.|./.env.|g' "${RELEASE_DIR}/src/configs/index.ts" | |
| # Create the tarball | |
| cd "${GITHUB_WORKSPACE}" | |
| tar -czf "${RELEASE_NAME}.tar.gz" "${RELEASE_NAME}" | |
| echo "release_name=${RELEASE_NAME}" >> $GITHUB_OUTPUT | |
| id: assemble | |
| - name: Get previous tag | |
| id: previous-tag | |
| run: | | |
| ENV="${{ steps.tag.outputs.env }}" | |
| CURRENT_TAG="${{ steps.tag.outputs.tag }}" | |
| # Only consider previous tags for the same environment | |
| PREVIOUS_TAG=$(git tag -l "indexer-${ENV}-v*" --sort=-version:refname | grep -v "^${CURRENT_TAG}$" | head -n1) | |
| echo "previous_tag=${PREVIOUS_TAG}" >> $GITHUB_OUTPUT | |
| - name: Generate changelog | |
| id: changelog | |
| run: | | |
| CURRENT_TAG="${{ steps.tag.outputs.tag }}" | |
| PREVIOUS_TAG="${{ steps.previous-tag.outputs.previous_tag }}" | |
| ENV="${{ steps.tag.outputs.env }}" | |
| VERSION="${{ steps.tag.outputs.version }}" | |
| RELEASE_NAME="${{ steps.assemble.outputs.release_name }}" | |
| if [ -z "$PREVIOUS_TAG" ]; then | |
| COMMIT_RANGE="HEAD" | |
| else | |
| COMMIT_RANGE="${PREVIOUS_TAG}..${CURRENT_TAG}" | |
| fi | |
| CHANGELOG=$(git log --pretty=format:"* %s (%h)" $COMMIT_RANGE --reverse | grep -i "indexer" || true) | |
| echo "changelog<<EOF" >> $GITHUB_OUTPUT | |
| echo "## What's Changed" >> $GITHUB_OUTPUT | |
| echo "" >> $GITHUB_OUTPUT | |
| echo "$CHANGELOG" >> $GITHUB_OUTPUT | |
| echo "" >> $GITHUB_OUTPUT | |
| echo "## Environment" >> $GITHUB_OUTPUT | |
| echo "" >> $GITHUB_OUTPUT | |
| echo "This release is built for the \`${ENV}\` environment." >> $GITHUB_OUTPUT | |
| echo "" >> $GITHUB_OUTPUT | |
| echo "## Usage" >> $GITHUB_OUTPUT | |
| echo "" >> $GITHUB_OUTPUT | |
| echo '```bash' >> $GITHUB_OUTPUT | |
| echo "tar -xzf ${RELEASE_NAME}.tar.gz" >> $GITHUB_OUTPUT | |
| echo "cd ${RELEASE_NAME}" >> $GITHUB_OUTPUT | |
| echo "npm install" >> $GITHUB_OUTPUT | |
| echo "" >> $GITHUB_OUTPUT | |
| echo "# Create .env.${ENV} with chain RPC endpoints and DB credentials" >> $GITHUB_OUTPUT | |
| echo "export ENV=${ENV}" >> $GITHUB_OUTPUT | |
| echo "" >> $GITHUB_OUTPUT | |
| echo "# Generate chain yamls and docker compose files" >> $GITHUB_OUTPUT | |
| echo "npm run codegen" >> $GITHUB_OUTPUT | |
| echo "" >> $GITHUB_OUTPUT | |
| echo "# Start/stop indexers" >> $GITHUB_OUTPUT | |
| echo "npm run start" >> $GITHUB_OUTPUT | |
| echo "npm run down" >> $GITHUB_OUTPUT | |
| echo '```' >> $GITHUB_OUTPUT | |
| echo "EOF" >> $GITHUB_OUTPUT | |
| - name: Create GitHub Release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| name: "@hyperbridge/indexer ${{ steps.tag.outputs.env }} v${{ steps.tag.outputs.version }}" | |
| body: ${{ steps.changelog.outputs.changelog }} | |
| files: ${{ steps.assemble.outputs.release_name }}.tar.gz | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} |