Skip to content

Update erc-registry-indexer.yml #84

Update erc-registry-indexer.yml

Update erc-registry-indexer.yml #84

name: ERC Registry Indexer
on:
push:
branches:
[
1128-erc-registry-phase-3-modify-the-workflow-script-to-also-create-a-pr-target-mne-repo,
]
workflow_dispatch:
inputs:
HEDERA_NETWORK:
description: 'Target Hedera Network (e.g., previewnet, testnet, mainnet).'
required: true
MIRROR_NODE_URL:
description: 'Mirror Node Base URL (e.g., https://testnet.mirrornode.hedera.com).'
required: true
STARTING_POINT:
description: 'Starting Point (e.g., a contractId, a contract address, ect.). Leave empty to start from the beginning or from last saved starting point.'
required: false
jobs:
index-and-update:
name: Index ERC Contracts on Hedera ${{ github.event.inputs.HEDERA_NETWORK }} and Update Registry
runs-on: smart-contracts-linux-large
env:
INDEXER_PATH: ./tools/erc-repository-indexer/erc-contract-indexer
steps:
- name: Harden Runner
uses: step-security/harden-runner@0080882f6c36860b6ba35c610c98ce87d4e2f26f # v2.10.2
with:
egress-policy: audit
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
submodules: recursive
- name: Use Node.js [20]
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af # v4.1.0
with:
node-version: 20
- name: Set Environment Variables
run: |
echo "HEDERA_NETWORK=mainnet" >> ${{ env.INDEXER_PATH }}/.env
echo "MIRROR_NODE_URL=https://mainnet.mirrornode.hedera.com" >> ${{ env.INDEXER_PATH }}/.env
echo "STARTING_POINT=${{ github.event.inputs.STARTING_POINT }}" >> ${{ env.INDEXER_PATH }}/.env
- name: Install Dependencies
run: |
cd ${{env.INDEXER_PATH}}
npm install
- name: Backup Existing Registry
run: |
mkdir -p ${{ env.INDEXER_PATH }}/backup
if [ -d "${{ env.INDEXER_PATH }}/erc-registry/${{ github.event.inputs.HEDERA_NETWORK }}" ] && [ "$(ls -A ${{ env.INDEXER_PATH }}/erc-registry/${{ github.event.inputs.HEDERA_NETWORK }}/*.json 2>/dev/null)" ]; then
cp ${{ env.INDEXER_PATH }}/erc-registry/${{ github.event.inputs.HEDERA_NETWORK }}/*.json ${{ env.INDEXER_PATH }}/backup/
echo "Backup successful."
else
echo "No JSON files found to back up."
fi
- name: Start Timer
id: timer_start
run: echo "START_TIME=$(date +%s)" >> $GITHUB_ENV
- name: Start ERC Registry Indexer
id: start_erc_indexer
run: |
cd ${{env.INDEXER_PATH}}
npm start
- name: Stop Timer
id: timer_end
run: echo "END_TIME=$(date +%s)" >> $GITHUB_ENV
- name: Calculate Duration
id: calculate_duration
run: |
# Calculate the duration in seconds
DURATION=$((END_TIME - START_TIME))
# Resolve duration
if [ "$DURATION" -lt 60 ]; then
FORMATTED_DURATION="${DURATION} seconds"
elif [ "$DURATION" -lt 3600 ]; then
MINUTES=$((DURATION / 60))
SECONDS=$((DURATION % 60))
FORMATTED_DURATION="${MINUTES} minute(s) and ${SECONDS} second(s)"
else
HOURS=$((DURATION / 3600))
MINUTES=$(((DURATION % 3600) / 60))
FORMATTED_DURATION="${HOURS} hour(s) and ${MINUTES} minute(s)"
fi
echo "INDEXING_DURATION=${FORMATTED_DURATION}" >> $GITHUB_ENV
# - name: Count New Records
# id: count_records
# run: |
# cd ${{ env.INDEXER_PATH }}
# # Determine the new amount of ERC-20 records
# if [ -f backup/erc-20.json ]; then
# NEW_ERC20_RECORDS=$(jq -s '.[1] - .[0] | length' backup/erc-20.json erc-registry/${{ github.event.inputs.HEDERA_NETWORK }}/erc-20.json)
# else
# NEW_ERC20_RECORDS=$(jq '. | length' erc-registry/${{ github.event.inputs.HEDERA_NETWORK }}/erc-20.json)
# fi
# # Determine the new amount of of ERC-721 records
# if [ -f backup/erc-721.json ]; then
# NEW_ERC721_RECORDS=$(jq -s '.[1] - .[0] | length' backup/erc-721.json erc-registry/${{ github.event.inputs.HEDERA_NETWORK }}/erc-721.json)
# else
# NEW_ERC721_RECORDS=$(jq '. | length' erc-registry/${{ github.event.inputs.HEDERA_NETWORK }}/erc-721.json)
# fi
# # Export the results to GitHub environment variables
# echo "NEW_ERC20_RECORDS=${NEW_ERC20_RECORDS}" >> $GITHUB_ENV
# echo "NEW_ERC721_RECORDS=${NEW_ERC721_RECORDS}" >> $GITHUB_ENV
- name: Delete backup registry folder
run: |
if [ -d ${{ env.INDEXER_PATH }}/backup ]; then
rm -rf ${{ env.INDEXER_PATH }}/backup
echo "Deleted backup folder."
else
echo "backup folder not found, skipping deletion."
fi
- name: Import GPG Key
id: gpg_importer
uses: step-security/ghaction-import-gpg@6c8fe4d0126a59d57c21f87c9ae5dd3451fa3cca # v6.1.0
with:
git_commit_gpgsign: true
git_tag_gpgsign: true
git_user_signingkey: true
gpg_private_key: ${{ secrets.GPG_KEY_CONTENTS }}
passphrase: ${{ secrets.GPG_KEY_PASSPHRASE }}
# - name: Create Pull Request Target hedera-smart-contracts Repository
# uses: peter-evans/create-pull-request@5e914681df9dc83aa4e4905692ca88beb2f9e91f # v7.0.5
# with:
# branch: ERC-Registry-Periodical-Update/${{ github.run_id }}
# commit-message: 'chore: update ERC Registry with latest ERC-20 and ERC-721 tokens on Hedera ${{github.event.inputs.HEDERA_NETWORK}}'
# committer: ${{ steps.gpg_importer.outputs.name }} <${{ steps.gpg_importer.outputs.email }}>
# author: ${{ steps.gpg_importer.outputs.name }} <${{ steps.gpg_importer.outputs.email }}>
# token: ${{ secrets.GH_ACCESS_TOKEN }}
# delete-branch: true
# signoff: true
# title: 'chore: update ERC Registry with latest ERC-20 and ERC-721 tokens on Hedera ${{github.event.inputs.HEDERA_NETWORK}}'
# body: >
# **Description**:
# This PR updates the ERC Registry to include the most recent ERC-20 and ERC-721 tokens.
# **Registry Update Summary**:
# - **Hedera Network**: ${{ github.event.inputs.HEDERA_NETWORK }}
# - **New ERC-20 Records Added**: ${{ env.NEW_ERC20_RECORDS }}
# - **New ERC-721 Records Added**: ${{ env.NEW_ERC721_RECORDS }}
# - **Indexing Duration**: ${{ env.INDEXING_DURATION }}
# - **Current Date**: ${{ env.CURRENT_DATE }}
# labels: 'internal'
# assignees: 'swirlds-automation'
- name: Backup erc-registry to Temporary Directory
run: |
mkdir -p /tmp/erc-registry
cp -r ${{ env.INDEXER_PATH }}/erc-registry/mainnet/* /tmp/erc-registry/
- name: Checkout hedera-mirror-node-explorer
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
submodules: recursive
repository: hashgraph/hedera-mirror-node-explorer
token: ${{ secrets.GH_ACCESS_TOKEN }}
- name: Restore erc-registry from Temporary Directory
run: |
mkdir -p ./erc-registry
cp -r /tmp/erc-registry/* ./erc-registry/
- name: Create Pull Request Target hedera-mirror-node-explorer
uses: peter-evans/create-pull-request@5e914681df9dc83aa4e4905692ca88beb2f9e91f # v7.0.5
with:
branch: ERC-Registry-Periodical-Update/${{ github.run_id }}
commit-message: 'chore: update ERC Registry with latest ERC-20 and ERC-721 tokens on Hedera ${{github.event.inputs.HEDERA_NETWORK}}'
committer: ${{ steps.gpg_importer.outputs.name }} <${{ steps.gpg_importer.outputs.email }}>
author: ${{ steps.gpg_importer.outputs.name }} <${{ steps.gpg_importer.outputs.email }}>
token: ${{ secrets.GH_ACCESS_TOKEN }}
delete-branch: true
signoff: true
title: 'chore: update ERC Registry with latest ERC-20 and ERC-721 tokens on Hedera ${{github.event.inputs.HEDERA_NETWORK}}'
body: >
**Description**:
This PR updates the ERC Registry to include the most recent ERC-20 and ERC-721 tokens.
**Registry Update Summary**:
- **Hedera Network**: ${{ github.event.inputs.HEDERA_NETWORK }}
- **New ERC-20 Records Added**: ${{ env.NEW_ERC20_RECORDS }}
- **New ERC-721 Records Added**: ${{ env.NEW_ERC721_RECORDS }}
- **Indexing Duration**: ${{ env.INDEXING_DURATION }}
- **Current Date**: ${{ env.CURRENT_DATE }}
labels: 'internal'
assignees: 'swirlds-automation'