diff --git a/.github/workflows/deploy-fio-testnet.yaml b/.github/workflows/deploy-fio-testnet.yaml new file mode 100644 index 00000000..1072323d --- /dev/null +++ b/.github/workflows/deploy-fio-testnet.yaml @@ -0,0 +1,136 @@ +name: Build images for FIO testnet environment + +on: + push: + tags: + - fio-testnet-v* + +jobs: + create-fio-testnet-image: + runs-on: ubuntu-latest + environment: fio-testnet + steps: + - name: Checkout Repo + uses: actions/checkout@v4 + + - name: Log in to GitHub Container Registry + uses: docker/login-action@v3.1.0 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: 'step-log' + run: | + echo "github.ref: ${{github.ref}}" + + - name: Build new images and push + run: | + make \ + build-docker-images \ + push-docker-images + env: + DOCKER_USERNAME: ${{ secrets.DOCKER_HUB_USER }} + DOCKER_PASSWORD: ${{ secrets.DOCKER_HUB_PASSWORD }} + # webapp + PORT: '80' + REACT_APP_TITLE: 'FIO Testnet Network Dashboard' + REACT_APP_VERSION: ${{github.ref}} + REACT_APP_DEFAULT_PRODUCER_LOGO: 'https://antelope.tools/images/fio.png' + REACT_APP_FOOTER_LINKS: '[{ "text": "FIO Website", "src": "https://fio.net/" },{ "text": "FIO Block Explorer", "src": "https://fio-test.bloks.io/" },{"text": "Documentation","src": "https://dev.fio.net/"},{"text": "FIO Network Monitor","src": "https://fio.antelope.tools"}]' + REACT_APP_EOS_RATE_LINK: '' + REACT_APP_USE_REWARDS: 'true' + REACT_APP_USE_VOTES: 'true' + REACT_APP_HASURA_URL: 'https://graphql-fio-testnet.antelope.tools/v1/graphql' + REACT_APP_EOS_API_NETWORK_NAME: 'fio-testnet' + REACT_APP_EOS_API_NETWORK_LABEL: 'FIO Testnet' + REACT_APP_EOS_API_NETWORK_LOGO: 'https://antelope.tools/images/fio.png' + REACT_APP_EOS_API_HOSTS: '[\"fio-testnet.eosphere.io\"]' + REACT_APP_EOS_API_PORT: '443' + REACT_APP_EOS_API_PROTOCOL: 'https' + REACT_APP_EOS_CHAIN_ID: 'b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e' + REACT_APP_EOS_USE_BP_JSON_ON_CHAIN: 'false' + REACT_APP_EOS_BP_JSON_ON_CHAIN_CONTRACT: 'producerjson' + REACT_APP_EOS_BP_JSON_ON_CHAIN_TABLE: 'producerjson' + REACT_APP_EOS_BP_JSON_ON_CHAIN_SCOPE: 'producerjson' + REACT_APP_SYNC_TOLERANCE_INTERVAL: 180000 + REACT_APP_TOKEN_SYMBOL: 'FIO' + REACT_APP_NETWORK_URL: '[{"label":"EOS","value":"https://eos.antelope.tools","mainnet":true,"icon":"eos","order":5},{"label":"XPR Network","value":"https://xpr.antelope.tools","mainnet":true,"icon":"xpr","order":3},{"label":"WAX","value":"https://wax.antelope.tools","mainnet":true,"icon":"wax","order":4},{"label":"Telos","value":"https://telos.antelope.tools","mainnet":true,"icon":"telos","order":1},{"label":"Libre","value":"https://libre.antelope.tools","mainnet":true,"icon":"libre","order":2},{"label":"LACChain EOSIO","value":"https://lacchain.antelope.tools","mainnet":true,"icon":"lacchain","order":6},{"label":"Jungle4 Testnet","value":"https://jungle.antelope.tools","mainnet":false,"icon":"jungle","order":5},{"label":"XPR Testnet","value":"https://xpr-testnet.antelope.tools","mainnet":false,"icon":"xpr","order":3},{"label":"WAX Testnet","value":"https://wax-testnet.antelope.tools","mainnet":false,"icon":"wax","order":4},{"label":"Telos Testnet","value":"https://telos-testnet.antelope.tools","mainnet":false,"icon":"telos","order":1},{"label":"Libre Testnet","value":"https://libre-testnet.antelope.tools","mainnet":false,"icon":"libre","order":2},{"label":"Ultra Testnet","value":"https://ultra-testnet.antelope.tools","mainnet":false,"icon":"ultra","order":6}]' + REACT_APP_DISABLED_MENU_ITEMS: '["/missed-blocks","/block-distribution","/cpu-benchmark","/stress-test","/evm","/evm-rpc-endpoints"]' + REACT_APP_BLOCK_EXPLORER_URL: '{"url": "https://fio-test.bloks.io/", "tx": "/transaction/(transaction)", "account": {"url":"/account/","abi":"","actions":""}}' + REACT_APP_STATE_HISTORY_ENABLED: 'false' + REACT_APP_GOOGLE_ANALITIC_PAGE_ID: 'G-E6Y0EC9FT8' + REACT_APP_PUBLIC_RE_CAPTCHA_KEY: ${{ secrets.REACT_APP_PUBLIC_RE_CAPTCHA_KEY }} + + - name: Build and deploy kubernetes files + id: build_kubernetes_files + run: | + make \ + build-kubernetes + env: + # general + NAMESPACE: fio-testnet-dashboard + INGRESS_HOST: fio-testnet.antelope.tools + INGRESS_GRAPHQL_HOST: graphql-fio-testnet.antelope.tools + # webapp + REACT_APP_EOS_API_NETWORK_NAME: fio-testnet + # postgres + POSTGRES_USER: ${{ secrets.POSTGRES_USER }} + POSTGRES_PASSWORD: ${{ secrets.POSTGRES_PASSWORD }} + POSTGRES_DB: ${{ secrets.POSTGRES_DB }} + POSTGRES_DATA: ${{ secrets.POSTGRES_DATA }} + # hapi + HAPI_EOS_API_NETWORK_NAME: fio-testnet + HAPI_EOS_API_ENDPOINTS: '["https://fio-testnet.eosphere.io"]' + HAPI_EOS_STATE_HISTORY_PLUGIN_ENDPOINT: 'ws://' + HAPI_EOS_MISSED_BLOCKS_ENABLED: 'false' + HAPI_EOS_BLOCK_HISTORY_DAYS: 90 + HAPI_EOS_MAX_CPU_BLOCK: 250000 + HAPI_EOS_MAX_NET_BLOCK: 1048576 + HAPI_EOS_API_CHAIN_ID: b20901380af44ef59c5918439a1f9a41d83669020319a80574b804a5f95cbd7e + HAPI_EOS_BASE_ACCOUNT: ${{ secrets.HAPI_EOS_BASE_ACCOUNT }} + HAPI_EOS_BASE_ACCOUNT_PASSWORD: ${{ secrets.HAPI_EOS_BASE_ACCOUNT_PASSWORD }} + HAPI_EOS_MECHANICS_ACCOUNT: ${{ secrets.HAPI_EOS_MECHANICS_ACCOUNT }} + HAPI_EOS_MECHANICS_PASSWORD: ${{ secrets.HAPI_EOS_MECHANICS_PASSWORD }} + HAPI_EOS_MECHANICS_CUSTOM_PERMISSION: 'benchmark' + HAPI_EOS_FAUCET_ACCOUNT_PASSWORD: ${{ secrets.HAPI_EOS_FAUCET_ACCOUNT_PASSWORD }} + GOOGLE_CREDENTIALS_JSON: ${{ secrets.GOOGLE_CREDENTIALS_JSON }} + HAPI_EOS_WALLET_URL: http://dashboard-wallet:8888 + HAPI_EOS_BP_JSON_ON_CHAIN: 'false' + HAPI_EOS_BP_JSON_ON_CHAIN_CONTRACT: producerjson + HAPI_EOS_BP_JSON_ON_CHAIN_TABLE: producerjson + HAPI_EOS_BP_JSON_ON_CHAIN_SCOPE: producerjson + HAPI_HASURA_URL: 'http://dashboard-hasura:8080/v1/graphql' + HAPI_HASURA_ADMIN_SECRET: ${{ secrets.HAPI_HASURA_ADMIN_SECRET }} + HAPI_SERVER_PORT: '9090' + HAPI_SERVER_ADDRESS: '0.0.0.0' + HAPI_DATABASE_URL: ${{ secrets.HAPI_DATABASE_URL }} + HAPI_SYNC_PRODUCERS_INTERVAL: '14400' + HAPI_SYNC_PRODUCER_CPU_INTERVAL: '6' + HAPI_SYNC_PRODUCER_INFO_INTERVAL: '1' + HAPI_SYNC_SCHEDULE_HISTORY_INTERVAL: 86400 + HAPI_SYNC_STATS_INTERVAL: 3600 + HAPI_EOS_EXCHANGE_RATE_API: https://api.coingecko.com/api/v3/simple/price?ids=fio-protocol&vs_currencies=usd + HAPI_COINGECKO_API_TOKEN_ID: fio-protocol + HAPI_REWARDS_TOKEN: FIO + HAPI_CREATE_ACCOUNT_ACTION_NAME: newaccount + HAPI_EOS_FAUCET_ACCOUNT: ${{ secrets.HAPI_EOS_FAUCET_ACCOUNT }} + GOOGLE_APPLICATION_CREDENTIALS: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }} + HAPI_EOS_GET_FAUCET_ACCOUNT: ${{ secrets.HAPI_EOS_GET_FAUCET_ACCOUNT }} + HAPI_PUBLIC_RE_CAPTCHA_KEY: ${{ secrets.HAPI_PUBLIC_RE_CAPTCHA_KEY }} + HAPI_RE_CAPTCHA_PROJECT_ID: ${{ secrets.HAPI_RE_CAPTCHA_PROJECT_ID }} + # hasura + HASURA_GRAPHQL_ENABLE_CONSOLE: 'true' + HASURA_GRAPHQL_DATABASE_URL: ${{ secrets.HASURA_GRAPHQL_DATABASE_URL }} + HASURA_GRAPHQL_ADMIN_SECRET: ${{ secrets.HASURA_GRAPHQL_ADMIN_SECRET }} + HASURA_GRAPHQL_UNAUTHORIZED_ROLE: guest + HASURA_GRAPHQL_ACTION_BASE_URL: http://dashboard-hapi:9090 + + - name: Setup and deploy kubernetes environment + uses: steebchen/kubectl@v1.1.0 + env: + KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_DATA }} + NAMESPACE: fio-testnet-dashboard + K8S_BUILD_DIR: build_k8s + with: + args: version && make deploy-kubernetes diff --git a/webapp/public/images/fio.png b/webapp/public/images/fio.png new file mode 100644 index 00000000..4fcf5ea9 Binary files /dev/null and b/webapp/public/images/fio.png differ