diff --git a/.github/workflows/deploy-libre.yaml b/.github/workflows/deploy-libre.yaml new file mode 100644 index 00000000..2fa26705 --- /dev/null +++ b/.github/workflows/deploy-libre.yaml @@ -0,0 +1,134 @@ +name: Build images for libre mainnet environment + +on: + push: + tags: + - libre-v* + +jobs: + create-libre-image: + runs-on: ubuntu-latest + environment: libre + steps: + - name: Checkout Repo + uses: actions/checkout@v2.4.0 + + - name: Setup Docker + uses: docker-practice/actions-setup-docker@1.0.8 + + - name: Log in to docker registry + run: | + echo ${{ secrets.DOCKER_HUB_PASSWORD }} | docker login \ + --username ${{ secrets.DOCKER_HUB_USER }} \ + --password-stdin + + - 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: 'Libre Network Dashboard' + REACT_APP_TAG: ${{github.ref}} + REACT_APP_DEFAULT_PRODUCER_LOGO: 'https://eosio.online/images/libre.png' + REACT_APP_FOOTER_LINKS: '[{ "text": "Bitcoin Libre Website", "src": "https://libre.org/" },{ "text": "Libre Block Explorer", "src": "https://libre-explorer.edenia.cloud/" },{"text": "Support","src": "#"},{"text": "Libre Network Monitor","src": "https://libre.eosio.online"}]' + REACT_APP_EOS_RATE_LINK: '' + REACT_APP_USE_REWARDS: 'false' + REACT_APP_USE_VOTES: 'false' + REACT_APP_USE_CPU_BENCHMARK: 'false' + REACT_APP_USE_BLOCK_PRODUCER_AGREEMENT_CONTRACT: 'true' + REACT_APP_HASURA_URL: 'https://graphql-libre.eosio.online/v1/graphql' + REACT_APP_EOS_API_NETWORK_NAME: 'libre' + REACT_APP_EOS_API_NETWORK_LABEL: 'Libre Mainnet' + REACT_APP_EOS_API_NETWORK_LOGO: 'https://eosio.online/images/libre.png' + REACT_APP_EOS_API_HOST: 'libre.edenia.cloud' + REACT_APP_EOS_API_PORT: '443' + REACT_APP_EOS_API_PROTOCOL: 'https' + REACT_APP_EOS_CHAIN_ID: '38b1d7815474d0c60683ecbea321d723e83f5da6ae5f1c1f9fecc69d9ba96465' + REACT_APP_EOS_DEFAULT_EXCHANGE_RATE: '1' + REACT_APP_EOS_DEFAULT_EXCHANGE_RATE_API: '' + 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_TOKEN_SYMBOL: ${{ secrets.REACT_APP_TOKEN_SYMBOL }} + REACT_APP_NETWORK_URL: ${{ secrets.REACT_APP_NETWORK_URL }} + REACT_APP_DISABLED_MENU_ITEMS: '["/missed-blocks", "/cpu-benchmark","/block-distribution"]' + REACT_APP_BLOCK_EXPLORER_URL: 'https://libre-explorer.edenia.cloud/transaction/(transaction)' + 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: libre-dashboard + INGRESS_HOST: libre.eosio.online + INGRESS_GRAPHQL_HOST: graphql-libre.eosio.online + # webapp + REACT_APP_EOS_API_NETWORK_NAME: libre + # 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: libre + HAPI_EOS_API_ENDPOINT: https://libre.edenia.cloud + HAPI_EOS_API_CHAIN_ID: 38b1d7815474d0c60683ecbea321d723e83f5da6ae5f1c1f9fecc69d9ba96465 + 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_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: '86400' + HAPI_SYNC_PRODUCER_CPU_INTERVAL: '6' + HAPI_SYNC_PRODUCER_INFO_INTERVAL: '1' + HAPI_SYNC_SCHEDULE_HISTORY_INTERVAL: 86400 + HAPI_EOS_EXCHANGE_RATE_API: 'https://api.coingecko.com/api/v3/simple/price?ids=btc&vs_currencies=usd' + HAPI_COINGECKO_API_TOKEN_ID: BTC + HAPI_REWARDS_TOKEN: LIBRE + 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: libre-dashboard + K8S_BUILD_DIR: build_k8s + with: + args: version && make deploy-kubernetes diff --git a/webapp/src/language/en.libre.json b/webapp/src/language/en.libre.json new file mode 100644 index 00000000..3e9562c8 --- /dev/null +++ b/webapp/src/language/en.libre.json @@ -0,0 +1,32 @@ +{ + "routes": { + "/>title": "Libre Mainnet Network Dashboard and Infrastructure Monitor", + "/cpu-benchmark>title": "CPU Benchmarks - Libre Mainnet Network Dashboard", + "/block-producers>title": "Block Producers - Libre Mainnet Network Dashboard", + "/rewards-distribution>title": "Rewards Distribution - Libre Mainnet Network Dashboard", + "/nodes>title": "Libre Mainnet Nodes Status Monitor", + "/nodes-distribution>title": "Geographic Distribution of Nodes - Libre Mainnet Network Dashboard", + "/accounts>title": "Accounts and Contracts - Libre Mainnet Network Dashboard", + "/bpjson>title": "BP JSON - Libre Mainnet Network Dashboard", + "/ricardian-contract>title": "BP Agreement - Libre Mainnet Network Dashboard", + "/block-distribution>title": "Block Production Distribution - Libre Mainnet Network Dashboard", + "/missed-blocks>title": "Missed Blocks - Libre Mainnet Network Dashboard", + "/endpoints>title": "API Endpoints - Libre Mainnet Network Dashboard", + "/about>title": "About - Libre Mainnet Network Dashboard", + "/help>title": "Help - Libre Mainnet Network Dashboard", + "/rewards-distribution>moreDescription": "BP daily rewards distribution by geographic location of paid block producers.", + "/bpjson>moreDescription": "A visual representation of the network’s current nodes.", + "/faucet>moreDescription": "This tool allows you to create an account and get LIBRE testnet tokens.", + "/node-config>moreDescription": "Use this tool to obtain example config files to help configure a new node on the network.", + "/ricardian-contract>moreDescription": "Read more about the Validator Node Agreement of this network. Contact us if you have any inquiries.", + "/>moreDescription": "Find data of blockchain networks using EOSIO technology. See more networks here: https://eosio.online/.", + "/cpu-benchmark>moreDescription": "A visualization of CPU usage in milliseconds by block producer nodes accounts, with lowest, highest, and average usage data.", + "/block-producers>moreDescription": "A list of the block producers in the network – blockchain accounts registered to run nodes on the network. It includes information from chain tables and their bp.json files.", + "/nodes>moreDescription": "A list of all the nodes run by entities comprising the network with specific information such as endpoints and location.", + "/endpoints>moreDescription": "An updated list of public API endpoints provided by node operators in the network.", + "/nodes-distribution>moreDescription": "A visualization of the geographic distribution of the nodes in this network.", + "/accounts>moreDescription": "This tool helps you seek information about network accounts and contracts. Type the name of a contract or account in the space provided to start searching. You’ll obtain the data of the contract actions, contract tables, scope, lower and upper bounds, and limits.", + "/block-distribution>moreDescription": "A visualization of the distribution of blocks produced by the nodes in the network.", + "/missed-blocks>moreDescription": "A list of scheduled, produced, and missed blocks by each account in the network." + } +} diff --git a/webapp/src/language/es.libre.json b/webapp/src/language/es.libre.json new file mode 100644 index 00000000..40620835 --- /dev/null +++ b/webapp/src/language/es.libre.json @@ -0,0 +1,31 @@ +{ + "routes": { + "/>title": "Monitor de infraestructura y panel de control de red Libre Mainnet", + "/cpu-benchmark>title": "Benchmark de CPU - Panel", + "/block-producers>title": "Productores de Bloques - Panel", + "/rewards-distribution>title": "Distribución de recompensas - Panel", + "/nodes>title": "Nodos - Panel", + "/nodes-distribution>title": "Distribución Geográfica de Nodos", + "/accounts>title": "Cuentas y Contratos - Panel", + "/bpjson>title": "BP JSON - Panel", + "/ricardian-contract>title": "Acuerdo de Productor de Bloques - Libre Mainnet", + "/block-distribution>title": "Distribución de bloques - Libre Mainnet", + "/endpoints>title": "URL's - Libre Mainnet", + "/about>title": "Acerca de - Panel", + "/help>title": "Ayuda - Panel", + "/rewards-distribution>moreDescription": "Distribución diaria de recompensas de BP por ubicación geográfica de los productores de bloques pagados.", + "/bpjson>moreDescription": "Una representación visual de los nodos actuales de la red.", + "/faucet>moreDescription": "Esta herramienta permite crear cuentas y transferir tokens.", + "/node-config>moreDescription": "Utilice esta herramienta para obtener archivos de configuración de ejemplo para ayudar a configurar un nuevo nodo en la red.", + "/ricardian-contract>moreDescription": "Lea más sobre el Acuerdo de nodo de validación de esta red. Contáctenos si tiene alguna consulta.", + "/>moreDescription": "Encuentre datos de redes blockchain utilizando la tecnología EOSIO. Vea más redes aquí: https://eosio.online/.", + "/cpu-benchmark>moreDescription": "Una visualización del uso de CPU en milisegundos por cuentas de nodos productores de bloques, con datos de uso más bajos, más altos y promedio.", + "/block-producers>moreDescription": "Una lista de los productores de bloques en la red: cuentas de blockchain registradas para ejecutar nodos en la red. Incluye información de tablas en cadena y sus archivos bp.json.", + "/nodes>moreDescription": "Una lista de todos los nodos ejecutados por entidades que componen la red con información específica como puntos finales y ubicación.", + "/endpoints>moreDescription": "Una lista actualizada de los puntos finales de la API pública proporcionada por los operadores de nodos en la red.", + "/nodes-distribution>moreDescription": "Una visualización de la distribución geográfica de los nodos de esta red.", + "/accounts>moreDescription": "Esta herramienta le ayuda a buscar información sobre cuentas y contratos de la red. Escriba el nombre de un contrato o cuenta en el espacio provisto para comenzar a buscar. Obtendrá los datos de las acciones del contrato, tablas de contrato, alcance, límites superior e inferior y límites.", + "/block-distribution>moreDescription": "Una visualización de la distribución de bloques producida por los nodos de la red.", + "/missed-blocks>moreDescription": "Una lista de bloques programados, producidos y perdidos por cada cuenta en la red." + } +}