mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-06-19 21:31:37 +00:00
* get right tc epoch * fix debug message * merge test * merge test --------- Co-authored-by: liam.lai <liam.lai@us>
196 lines
7.5 KiB
YAML
196 lines
7.5 KiB
YAML
name: CI
|
|
|
|
on:
|
|
pull_request:
|
|
types: [opened, synchronize, reopened]
|
|
push:
|
|
branches:
|
|
- '*'
|
|
tags:
|
|
- '*'
|
|
|
|
env:
|
|
GOPROXY: https://proxy.golang.org
|
|
GO111MODULE: on
|
|
tf_version: "1.3.0"
|
|
tf_init_cli_options: "-input=false"
|
|
tf_validation_cli_options: ""
|
|
tf_plan_cli_options: "-lock=false -input=false"
|
|
tf_apply_cli_options: "-auto-approve -input=false"
|
|
|
|
jobs:
|
|
tests:
|
|
env:
|
|
GOPATH: ${{ github.workspace }}
|
|
GOBIN: ${{ github.workspace }}/bin
|
|
runs-on: ubuntu-latest
|
|
defaults:
|
|
run:
|
|
working-directory: ${{ env.GOPATH }}/src/XDPoSChain
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- name: A-B tests
|
|
script: go run build/ci.go test -coverage $(go list ./... | grep "github.com/XinFinOrg/XDPoSChain/[a-b].*")
|
|
- name: C-[a-m] tests
|
|
script: go run build/ci.go test -coverage $(go list ./... | grep "github.com/XinFinOrg/XDPoSChain/c[a-m].*")
|
|
- name: C-[n-o] tests
|
|
script: go run build/ci.go test -coverage $(go list ./... | grep "github.com/XinFinOrg/XDPoSChain/c[n-o].*")
|
|
- name: C-[p-z] tests
|
|
script: go run build/ci.go test -coverage $(go list ./... | grep "github.com/XinFinOrg/XDPoSChain/c[p-z].*")
|
|
- name: D-I tests
|
|
script: go run build/ci.go test -coverage $(go list ./... | grep "github.com/XinFinOrg/XDPoSChain/[d-i].*")
|
|
- name: J-N tests
|
|
script: go run build/ci.go test -coverage $(go list ./... | grep "github.com/XinFinOrg/XDPoSChain/[j-n].*")
|
|
- name: O-S tests
|
|
script: go run build/ci.go test -coverage $(go list ./... | grep "github.com/XinFinOrg/XDPoSChain/[o-s].*")
|
|
- name: T-Z tests
|
|
script: go run build/ci.go test -coverage $(go list ./... | grep "github.com/XinFinOrg/XDPoSChain/[t-z].*")
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
path: ${{ env.GOPATH }}/src/XDPoSChain
|
|
- name: Set up Go
|
|
uses: actions/setup-go@v5
|
|
with:
|
|
cache: false
|
|
go-version: '1.21.x'
|
|
- name: Run tests
|
|
run: ${{ matrix.script }}
|
|
env:
|
|
GO111MODULE: auto
|
|
|
|
tag_build:
|
|
runs-on: ubuntu-latest
|
|
needs: tests
|
|
if: startsWith(github.ref, 'refs/tags/')
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Login to Docker Hub
|
|
run: echo ${{ secrets.DOCKER_PASSWORD }} | docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin
|
|
- name: Build Docker image
|
|
run: docker build -t xinfinorg/xdposchain:${GITHUB_REF#refs/tags/} -f cicd/Dockerfile .
|
|
- name: Push Docker image
|
|
run: docker push xinfinorg/xdposchain:${GITHUB_REF#refs/tags/}
|
|
|
|
devnet_build_push:
|
|
runs-on: ubuntu-latest
|
|
if: github.ref == 'refs/heads/dev-upgrade' && !startsWith(github.ref, 'refs/tags/')
|
|
needs: tests
|
|
outputs:
|
|
output1: ${{ steps.docker.outputs.image_name }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Login to Docker Hub
|
|
run: echo ${{ secrets.DOCKER_PASSWORD }} | docker login -u ${{ secrets.DOCKER_USERNAME }} --password-stdin
|
|
- name: Build and Push Docker images
|
|
id: docker
|
|
run: |
|
|
git_hash=$(git rev-parse --short "$GITHUB_SHA")
|
|
image_name=xinfinorg/devnet:dev-upgrade-${git_hash}
|
|
docker pull xinfinorg/devnet:latest
|
|
docker tag xinfinorg/devnet:latest xinfinorg/devnet:previous
|
|
docker rmi xinfinorg/devnet:latest
|
|
docker build -t xinfinorg/devnet:latest -f cicd/Dockerfile .
|
|
docker tag xinfinorg/devnet:latest $image_name
|
|
docker push $image_name
|
|
docker push xinfinorg/devnet:latest
|
|
docker push xinfinorg/devnet:previous
|
|
echo "image_name=$image_name"
|
|
echo "image_name=$image_name" >> "$GITHUB_OUTPUT"
|
|
|
|
devnet_terraform_apply:
|
|
runs-on: ubuntu-latest
|
|
if: github.ref == 'refs/heads/dev-upgrade' && !startsWith(github.ref, 'refs/tags/')
|
|
needs: devnet_build_push
|
|
environment: devnet
|
|
env:
|
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Terraform Apply
|
|
run: |
|
|
git_hash=$(git rev-parse --short "$GITHUB_SHA")
|
|
cd cicd/devnet/terraform
|
|
terraform init ${{ env.tf_init_cli_options }}
|
|
terraform apply -var "docker_tag=dev-upgrade-${git_hash}" ${{ env.tf_apply_cli_options }}
|
|
|
|
rpcnode_terraform_apply:
|
|
runs-on: ubuntu-latest
|
|
if: github.ref == 'refs/heads/dev-upgrade' && !startsWith(github.ref, 'refs/tags/')
|
|
needs: devnet_build_push
|
|
env:
|
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Terraform Apply
|
|
run: |
|
|
cd cicd/terraform
|
|
terraform init ${{ env.tf_init_cli_options }}
|
|
terraform apply ${{ env.tf_apply_cli_options }}
|
|
|
|
- name: Update RPC nodes image
|
|
uses: dawidd6/action-ansible-playbook@v2
|
|
with:
|
|
playbook: playbooks/update-image.yaml
|
|
directory: ./cicd/ansible
|
|
key: ${{secrets.SSH_PRIVATE_KEY_DEVNET}}
|
|
options: |
|
|
--inventory inventory.yaml
|
|
--extra-vars network=ec2_rpcs
|
|
--extra-vars rpc_image=${{ needs.devnet_build_push.outputs.output1 }}
|
|
|
|
devnet_dev-upgrade_node:
|
|
runs-on: ubuntu-latest
|
|
if: github.ref == 'refs/heads/dev-upgrade' && !startsWith(github.ref, 'refs/tags/')
|
|
needs: rpcnode_terraform_apply
|
|
environment: devnet
|
|
env:
|
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: ECS Update
|
|
run: |
|
|
aws ecs update-service --region ap-southeast-1 --cluster devnet-xdcnode-cluster --service ecs-service-rpc1 --force-new-deployment --no-cli-pager | head -n 10;
|
|
|
|
testnet_dev-upgrade_node:
|
|
runs-on: ubuntu-latest
|
|
if: github.ref == 'refs/heads/dev-upgrade' && !startsWith(github.ref, 'refs/tags/')
|
|
needs: rpcnode_terraform_apply
|
|
environment: testnet
|
|
env:
|
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: ECS Update
|
|
run: |
|
|
aws ecs update-service --region ap-southeast-1 --cluster testnet-xdcnode-cluster --service ecs-service-testnet-rpc1 --force-new-deployment --no-cli-pager | head -n 10;
|
|
|
|
mainnet_dev-upgrade_node:
|
|
runs-on: ubuntu-latest
|
|
if: github.ref == 'refs/heads/dev-upgrade' && !startsWith(github.ref, 'refs/tags/')
|
|
needs: rpcnode_terraform_apply
|
|
environment: mainnet
|
|
env:
|
|
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: ECS Update
|
|
run: |
|
|
aws ecs update-service --region ap-southeast-1 --cluster mainnet-xdcnode-cluster --service ecs-service-mainnet-rpc1 --force-new-deployment --no-cli-pager | head -n 10;
|
|
|
|
devnet_send_notification:
|
|
runs-on: ubuntu-latest
|
|
needs: devnet_terraform_apply
|
|
if: github.ref == 'refs/heads/dev-upgrade' && !startsWith(github.ref, 'refs/tags/')
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Send deployment notification
|
|
run: |
|
|
curl --location --request POST "66.94.98.186:8080/deploy?environment=devnet&service=xdc&version=${GITHUB_SHA}"
|