Pull Data #1695
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: 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 |