Skip to content

Pull Data

Pull Data #1690

Workflow file for this run

name: Pull Data
on:
schedule:
- cron: '0 10 * * *'
workflow_dispatch:
inputs:
choice:
type: choice
description: Select fetch type
options:
- reduced
- full
default: full
permissions:
contents: write
jobs:
export:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '22'
- run: npm install
- name: Export Teams
env:
ROLLBAR_ACCESS_TOKEN: ${{ secrets.ROLLBAR_ACCESS_TOKEN }}
run: npx ts-node ./src/export-teams.ts
- name: Pull Proposals
env:
SHEET_ID: ${{ secrets.SHEET_ID }}
SHEET_CLIENT_EMAIL: ${{ secrets.SHEET_CLIENT_EMAIL }}
SHEET_PRIVATE_KEY: ${{ secrets.SHEET_PRIVATE_KEY }}
ROLLBAR_ACCESS_TOKEN: ${{ secrets.ROLLBAR_ACCESS_TOKEN }}
SNAPSHOT_API_KEY: ${{ secrets.SNAPSHOT_API_KEY }}
run: |
npx ts-node ./src/export-proposals.ts
npx ts-node ./src/upload.ts Proposals ./public/proposals.csv
- name: Pull Votes
env:
SHEET_ID: ${{ secrets.SHEET_ID }}
SHEET_CLIENT_EMAIL: ${{ secrets.SHEET_CLIENT_EMAIL }}
SHEET_PRIVATE_KEY: ${{ secrets.SHEET_PRIVATE_KEY }}
ROLLBAR_ACCESS_TOKEN: ${{ secrets.ROLLBAR_ACCESS_TOKEN }}
SNAPSHOT_API_KEY: ${{ secrets.SNAPSHOT_API_KEY }}
run: |
npx ts-node ./src/export-votes.ts
npx ts-node ./src/upload.ts Votes ./public/votes.csv
- name: Pull Balances
env:
ALCHEMY_API_KEY: ${{ secrets.ALCHEMY_API_KEY }}
COIN_GECKO_API_KEY: ${{ secrets.COIN_GECKO_API_KEY }}
ROLLBAR_ACCESS_TOKEN: ${{ secrets.ROLLBAR_ACCESS_TOKEN }}
SHEET_ID: ${{ secrets.SHEET_ID }}
SHEET_CLIENT_EMAIL: ${{ secrets.SHEET_CLIENT_EMAIL }}
SHEET_PRIVATE_KEY: ${{ secrets.SHEET_PRIVATE_KEY }}
run: |
npx ts-node ./src/export-balances.ts
npx ts-node ./src/upload.ts Balances ./public/balances.csv
npx ts-node ./src/upload.ts BalanceHistory ./public/balances.csv --append
# - name: Pull Projects
# env:
# ROLLBAR_ACCESS_TOKEN: ${{ secrets.ROLLBAR_ACCESS_TOKEN }}
# ALCHEMY_API_KEY: ${{ secrets.ALCHEMY_API_KEY }}
# COIN_GECKO_API_KEY: ${{ secrets.COIN_GECKO_API_KEY }}
# ALCHEMY_URL: ${{ secrets.ALCHEMY_URL }}
# SHEET_ID: ${{ secrets.SHEET_ID }}
# SHEET_CLIENT_EMAIL: ${{ secrets.SHEET_CLIENT_EMAIL }}
# SHEET_PRIVATE_KEY: ${{ secrets.SHEET_PRIVATE_KEY }}
# run: |
# npx ts-node ./src/export-projects.ts
# npx ts-node ./src/upload.ts Projects ./public/projects.csv
# npx ts-node ./src/upload.ts Vestings ./public/vestings.csv
# - name: Pull Transactions
# env:
# ALCHEMY_API_KEY: ${{ secrets.ALCHEMY_API_KEY }}
# COIN_GECKO_API_KEY: ${{ secrets.COIN_GECKO_API_KEY }}
# DECENTRALAND_DATA_URL: https://data.decentraland.vote/
# SHEET_ID: ${{ secrets.SHEET_ID }}
# SHEET_CLIENT_EMAIL: ${{ secrets.SHEET_CLIENT_EMAIL }}
# SHEET_PRIVATE_KEY: ${{ secrets.SHEET_PRIVATE_KEY }}
# ROLLBAR_ACCESS_TOKEN: ${{ secrets.ROLLBAR_ACCESS_TOKEN }}
# run: |
# npx ts-node ./src/export-transactions.ts --${{ github.event.inputs.choice }}
# npx ts-node ./src/upload.ts Transactions ./public/transactions.csv
- name: Pull Collections
env:
SHEET_ID: ${{ secrets.SHEET_ID }}
SHEET_CLIENT_EMAIL: ${{ secrets.SHEET_CLIENT_EMAIL }}
SHEET_PRIVATE_KEY: ${{ secrets.SHEET_PRIVATE_KEY }}
ROLLBAR_ACCESS_TOKEN: ${{ secrets.ROLLBAR_ACCESS_TOKEN }}
run: |
npx ts-node ./src/export-collections.ts
npx ts-node ./src/upload.ts Collections ./public/collections.csv
- name: Pull Wearables
env:
SHEET_ID: ${{ secrets.SHEET_ID }}
SHEET_CLIENT_EMAIL: ${{ secrets.SHEET_CLIENT_EMAIL }}
SHEET_PRIVATE_KEY: ${{ secrets.SHEET_PRIVATE_KEY }}
ROLLBAR_ACCESS_TOKEN: ${{ secrets.ROLLBAR_ACCESS_TOKEN }}
run: |
npx ts-node ./src/export-wearables.ts
npx ts-node ./src/upload.ts Wearables ./public/wearables.csv
- name: Pull Curations
env:
SHEET_ID: ${{ secrets.SHEET_ID }}
SHEET_CLIENT_EMAIL: ${{ secrets.SHEET_CLIENT_EMAIL }}
SHEET_PRIVATE_KEY: ${{ secrets.SHEET_PRIVATE_KEY }}
ROLLBAR_ACCESS_TOKEN: ${{ secrets.ROLLBAR_ACCESS_TOKEN }}
run: |
npx ts-node ./src/export-curations.ts
npx ts-node ./src/upload.ts Curations ./public/curations.csv
- name: Pull Members
env:
SHEET_ID: ${{ secrets.SHEET_ID }}
SHEET_CLIENT_EMAIL: ${{ secrets.SHEET_CLIENT_EMAIL }}
SHEET_PRIVATE_KEY: ${{ secrets.SHEET_PRIVATE_KEY }}
ROLLBAR_ACCESS_TOKEN: ${{ secrets.ROLLBAR_ACCESS_TOKEN }}
SNAPSHOT_API_KEY: ${{ secrets.SNAPSHOT_API_KEY }}
THE_GRAPH_API_KEY: ${{ secrets.THE_GRAPH_API_KEY }}
run: |
npx ts-node ./src/export-members.ts
npx ts-node ./src/upload.ts Members ./public/members.csv
- name: Pull Financials
env:
SHEET_ID: ${{ secrets.SHEET_ID }}
SHEET_CLIENT_EMAIL: ${{ secrets.SHEET_CLIENT_EMAIL }}
SHEET_PRIVATE_KEY: ${{ secrets.SHEET_PRIVATE_KEY }}
ROLLBAR_ACCESS_TOKEN: ${{ secrets.ROLLBAR_ACCESS_TOKEN }}
run: |
npx ts-node ./src/export-financials.ts
npx ts-node ./src/upload.ts Financials ./public/financials.csv
# - name: Export KPIs
# env:
# NODE_OPTIONS: "--max-old-space-size=8192"
# SHEET_ID: ${{ secrets.SHEET_ID }}
# SHEET_CLIENT_EMAIL: ${{ secrets.SHEET_CLIENT_EMAIL }}
# SHEET_PRIVATE_KEY: ${{ secrets.SHEET_PRIVATE_KEY }}
# ROLLBAR_ACCESS_TOKEN: ${{ secrets.ROLLBAR_ACCESS_TOKEN }}
# run: |
# npx ts-node ./src/export-kpis.ts
# npx ts-node ./src/upload.ts KPIs ./public/kpis.json
# - name: Export API
# env:
# NODE_OPTIONS: "--max-old-space-size=8192"
# ROLLBAR_ACCESS_TOKEN: ${{ secrets.ROLLBAR_ACCESS_TOKEN }}
# run: npx ts-node ./src/export-api.ts
- name: Export Report
env:
ROLLBAR_ACCESS_TOKEN: ${{ secrets.ROLLBAR_ACCESS_TOKEN }}
run: npx ts-node ./src/export-report.ts
- name: Export Budgets
env:
ROLLBAR_ACCESS_TOKEN: ${{ secrets.ROLLBAR_ACCESS_TOKEN }}
run: npx ts-node ./src/export-budgets.ts
- name: Build API v2 -> public/api-v2.json
env:
DCL_SUBGRAPH_API_KEY: ${{ secrets.DCL_SUBGRAPH_API_KEY }}
ALCHEMY_ETH_URL: ${{ secrets.ALCHEMY_ETH_URL }}
ALCHEMY_POLYGON_URL: ${{ secrets.ALCHEMY_POLYGON_URL }}
run: |
set -e
mkdir -p ./public
npx ts-node ./src/export-api-v2.ts
if [ ! -f ./public/api-v2.json ]; then
echo "Error: export-api-v2.ts did not generate ./public/api-v2.json" >&2
exit 1
fi
echo "api-v2.json successfully generated in ./public"
- name: Upload historical transactions (manual runs only)
if: github.event_name == 'workflow_dispatch'
env:
ALCHEMY_ETH_URL: ${{ secrets.ALCHEMY_ETH_URL }}
ALCHEMY_POLYGON_URL: ${{ secrets.ALCHEMY_POLYGON_URL }}
COIN_GECKO_API_KEY: ${{ secrets.COIN_GECKO_API_KEY }}
SHEET_ID: ${{ secrets.SHEET_ID }}
SHEET_CLIENT_EMAIL: ${{ secrets.SHEET_CLIENT_EMAIL }}
SHEET_PRIVATE_KEY: ${{ secrets.SHEET_PRIVATE_KEY }}
run: |
npx ts-node ./src/getAllTransactions.ts --year 2020
npx ts-node ./src/upload.ts Transactions2020 ./public/transactions-2020.csv
npx ts-node ./src/getAllTransactions.ts --year 2021
npx ts-node ./src/upload.ts Transactions2021 ./public/transactions-2021.csv
npx ts-node ./src/getAllTransactions.ts --year 2022
npx ts-node ./src/upload.ts Transactions2022 ./public/transactions-2022.csv
npx ts-node ./src/getAllTransactions.ts --year 2023
npx ts-node ./src/upload.ts Transactions2023 ./public/transactions-2023.csv
npx ts-node ./src/getAllTransactions.ts --year 2024
npx ts-node ./src/upload.ts Transactions2024 ./public/transactions-2024.csv
npx ts-node ./src/getAllTransactions.ts --year 2025
npx ts-node ./src/upload.ts Transactions2025 ./public/transactions-2025.csv
- name: Pull transactions current year
env:
ALCHEMY_ETH_URL: ${{ secrets.ALCHEMY_ETH_URL }}
ALCHEMY_POLYGON_URL: ${{ secrets.ALCHEMY_POLYGON_URL }}
COIN_GECKO_API_KEY: ${{ secrets.COIN_GECKO_API_KEY }}
SHEET_ID: ${{ secrets.SHEET_ID }}
SHEET_CLIENT_EMAIL: ${{ secrets.SHEET_CLIENT_EMAIL }}
SHEET_PRIVATE_KEY: ${{ secrets.SHEET_PRIVATE_KEY }}
run: |
YEAR=$(date -u +%Y)
npx ts-node ./src/getAllTransactions.ts --year $YEAR
npx ts-node ./src/upload.ts Transactions ./public/transactions-$YEAR.csv
- name: Remove transactions.json & transactions.csv
run: |
if [ -f ./public/transactions.json ]; then
rm ./public/transactions.json
echo "transactions.json successfully removed."
else
echo "The file transactions.json does not exist in the ./public directory."
fi
if [ -f ./public/transactions.csv ]; then
rm ./public/transactions.csv
echo "transactions.csv successfully removed."
else
echo "The file transactions.csv does not exist in the ./public directory."
fi
- name: Deploy 🚀
if: ${{ !cancelled() }}
uses: JamesIves/github-pages-deploy-action@v4.2.2
with:
clean: false
branch: gh-pages
folder: public