Add Oracle Aggregator and CCIP Integration
- Introduced Aggregator.sol for Chainlink-compatible oracle functionality, including round-based updates and access control. - Added OracleWithCCIP.sol to extend Aggregator with CCIP cross-chain messaging capabilities. - Created .gitmodules to include OpenZeppelin contracts as a submodule. - Developed a comprehensive deployment guide in NEXT_STEPS_COMPLETE_GUIDE.md for Phase 2 and smart contract deployment. - Implemented Vite configuration for the orchestration portal, supporting both Vue and React frameworks. - Added server-side logic for the Multi-Cloud Orchestration Portal, including API endpoints for environment management and monitoring. - Created scripts for resource import and usage validation across non-US regions. - Added tests for CCIP error handling and integration to ensure robust functionality. - Included various new files and directories for the orchestration portal and deployment scripts.
This commit is contained in:
199
.github/workflows/deploy.yml
vendored
Normal file
199
.github/workflows/deploy.yml
vendored
Normal file
@@ -0,0 +1,199 @@
|
||||
name: Deploy ChainID 138
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
environment:
|
||||
description: 'Deployment environment'
|
||||
required: true
|
||||
default: 'staging'
|
||||
type: choice
|
||||
options:
|
||||
- staging
|
||||
- production
|
||||
skip_infrastructure:
|
||||
description: 'Skip infrastructure deployment'
|
||||
required: false
|
||||
default: false
|
||||
type: boolean
|
||||
skip_kubernetes:
|
||||
description: 'Skip Kubernetes deployment'
|
||||
required: false
|
||||
default: false
|
||||
type: boolean
|
||||
skip_blockscout:
|
||||
description: 'Skip Blockscout deployment'
|
||||
required: false
|
||||
default: false
|
||||
type: boolean
|
||||
skip_contracts:
|
||||
description: 'Skip contract deployment'
|
||||
required: false
|
||||
default: false
|
||||
type: boolean
|
||||
skip_cloudflare:
|
||||
description: 'Skip Cloudflare DNS configuration'
|
||||
required: false
|
||||
default: false
|
||||
type: boolean
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- 'scripts/deployment/**'
|
||||
- 'terraform/**'
|
||||
- 'k8s/**'
|
||||
- '.github/workflows/deploy.yml'
|
||||
|
||||
env:
|
||||
AZURE_SUBSCRIPTION_ID: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
|
||||
AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }}
|
||||
AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }}
|
||||
AZURE_CLIENT_SECRET: ${{ secrets.AZURE_CLIENT_SECRET }}
|
||||
AZURE_RESOURCE_GROUP: ${{ secrets.AZURE_RESOURCE_GROUP }}
|
||||
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
||||
CLOUDFLARE_ZONE_ID: ${{ secrets.CLOUDFLARE_ZONE_ID }}
|
||||
PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }}
|
||||
RPC_URL: ${{ secrets.RPC_URL }}
|
||||
EXPLORER_URL: ${{ secrets.EXPLORER_URL }}
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
name: Deploy ChainID 138
|
||||
runs-on: ubuntu-latest
|
||||
environment: ${{ github.event.inputs.environment || 'staging' }}
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Azure CLI
|
||||
uses: azure/login@v1
|
||||
with:
|
||||
creds: ${{ secrets.AZURE_CREDENTIALS }}
|
||||
|
||||
- name: Set up Terraform
|
||||
uses: hashicorp/setup-terraform@v3
|
||||
with:
|
||||
terraform_version: 1.6.0
|
||||
|
||||
- name: Set up kubectl
|
||||
uses: azure/setup-kubectl@v3
|
||||
version: 'latest'
|
||||
|
||||
- name: Set up Helm
|
||||
uses: azure/setup-helm@v3
|
||||
version: 'latest'
|
||||
|
||||
- name: Set up Foundry
|
||||
uses: foundry-rs/foundry-toolchain@v1
|
||||
with:
|
||||
version: nightly
|
||||
|
||||
- name: Set up Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: '20'
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y jq curl dnsutils
|
||||
npm install -g ajv-cli
|
||||
|
||||
- name: Make scripts executable
|
||||
run: chmod +x scripts/deployment/*.sh
|
||||
|
||||
- name: Create .env file
|
||||
run: |
|
||||
cat > .env << EOF
|
||||
AZURE_SUBSCRIPTION_ID=${{ env.AZURE_SUBSCRIPTION_ID }}
|
||||
AZURE_TENANT_ID=${{ env.AZURE_TENANT_ID }}
|
||||
AZURE_CLIENT_ID=${{ env.AZURE_CLIENT_ID }}
|
||||
AZURE_CLIENT_SECRET=${{ env.AZURE_CLIENT_SECRET }}
|
||||
AZURE_RESOURCE_GROUP=${{ env.AZURE_RESOURCE_GROUP }}
|
||||
CLOUDFLARE_API_TOKEN=${{ env.CLOUDFLARE_API_TOKEN }}
|
||||
CLOUDFLARE_ZONE_ID=${{ env.CLOUDFLARE_ZONE_ID }}
|
||||
PRIVATE_KEY=${{ env.PRIVATE_KEY }}
|
||||
RPC_URL=${{ env.RPC_URL }}
|
||||
EXPLORER_URL=${{ env.EXPLORER_URL }}
|
||||
EOF
|
||||
|
||||
- name: Deploy infrastructure
|
||||
if: ${{ !github.event.inputs.skip_infrastructure }}
|
||||
run: |
|
||||
./scripts/deployment/deploy-all.sh \
|
||||
--skip-kubernetes \
|
||||
--skip-blockscout \
|
||||
--skip-contracts \
|
||||
--skip-cloudflare
|
||||
continue-on-error: true
|
||||
|
||||
- name: Configure Cloudflare DNS
|
||||
if: ${{ !github.event.inputs.skip_cloudflare }}
|
||||
run: |
|
||||
# Get Application Gateway IP
|
||||
APP_GATEWAY_IP=$(az network application-gateway show \
|
||||
--resource-group ${{ env.AZURE_RESOURCE_GROUP }} \
|
||||
--name $(cd terraform && terraform output -raw app_gateway_name) \
|
||||
--query "frontendIPConfigurations[0].publicIpAddress.id" \
|
||||
-o tsv | xargs az network public-ip show --ids --query ipAddress -o tsv)
|
||||
|
||||
./scripts/deployment/cloudflare-dns.sh \
|
||||
--zone-id ${{ env.CLOUDFLARE_ZONE_ID }} \
|
||||
--api-token ${{ env.CLOUDFLARE_API_TOKEN }} \
|
||||
--ip $APP_GATEWAY_IP
|
||||
continue-on-error: true
|
||||
|
||||
- name: Deploy Kubernetes resources
|
||||
if: ${{ !github.event.inputs.skip_kubernetes }}
|
||||
run: |
|
||||
./scripts/deployment/deploy-all.sh \
|
||||
--skip-infrastructure \
|
||||
--skip-blockscout \
|
||||
--skip-contracts \
|
||||
--skip-cloudflare
|
||||
continue-on-error: true
|
||||
|
||||
- name: Deploy Blockscout
|
||||
if: ${{ !github.event.inputs.skip_blockscout }}
|
||||
run: |
|
||||
./scripts/deployment/deploy-all.sh \
|
||||
--skip-infrastructure \
|
||||
--skip-kubernetes \
|
||||
--skip-contracts \
|
||||
--skip-cloudflare
|
||||
continue-on-error: true
|
||||
|
||||
- name: Deploy contracts
|
||||
if: ${{ !github.event.inputs.skip_contracts }}
|
||||
run: |
|
||||
./scripts/deployment/deploy-all.sh \
|
||||
--skip-infrastructure \
|
||||
--skip-kubernetes \
|
||||
--skip-blockscout \
|
||||
--skip-cloudflare
|
||||
continue-on-error: true
|
||||
|
||||
- name: Update token list
|
||||
if: ${{ !github.event.inputs.skip_contracts }}
|
||||
run: |
|
||||
./scripts/deployment/update-token-list.sh
|
||||
continue-on-error: true
|
||||
|
||||
- name: Verify deployment
|
||||
run: |
|
||||
./scripts/deployment/verify-deployment.sh
|
||||
continue-on-error: true
|
||||
|
||||
- name: Upload deployment artifacts
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: deployment-artifacts
|
||||
path: |
|
||||
contracts-deployed.json
|
||||
deployment.log
|
||||
deployment-verification-report.md
|
||||
retention-days: 30
|
||||
|
||||
Reference in New Issue
Block a user