Files
smom-dbis-138/.github/workflows/deploy.yml
defiQUG 1fb7266469 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.
2025-12-12 14:57:48 -08:00

200 lines
6.0 KiB
YAML

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