mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-26 14:46:42 +00:00
277 lines
8.9 KiB
YAML
277 lines
8.9 KiB
YAML
name: CI
|
|
on:
|
|
push:
|
|
branches:
|
|
- "master"
|
|
- "qa"
|
|
- "develop"
|
|
pull_request:
|
|
branches:
|
|
- "**"
|
|
types: [opened, synchronize]
|
|
|
|
concurrency:
|
|
group: build-${{ github.event.pull_request.number || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
build:
|
|
if: (github.event.action != 'closed' || github.event.pull_request.merged == true)
|
|
strategy:
|
|
matrix:
|
|
os: [ ubuntu-20.04 ] # list of os: https://github.com/actions/virtual-environments
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- run: |
|
|
git submodule update --init --recursive --force
|
|
git fetch --no-tags --prune --depth=1 origin +refs/heads/master:refs/remotes/origin/master
|
|
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version: 1.23.x
|
|
|
|
- name: Install dependencies on Linux
|
|
if: runner.os == 'Linux'
|
|
run: sudo apt update && sudo apt install build-essential
|
|
|
|
- uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.cache/go-build
|
|
~/Library/Caches/go-build
|
|
~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
|
|
restore-keys: ${{ runner.os }}-go-
|
|
|
|
- name: Build
|
|
run: make all
|
|
|
|
lint:
|
|
if: (github.event.action != 'closed' || github.event.pull_request.merged == true)
|
|
strategy:
|
|
matrix:
|
|
os: [ ubuntu-20.04 ] # list of os: https://github.com/actions/virtual-environments
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- run: |
|
|
git submodule update --init --recursive --force
|
|
git fetch --no-tags --prune --depth=1 origin +refs/heads/master:refs/remotes/origin/master
|
|
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version: 1.23.x
|
|
|
|
- name: Install dependencies on Linux
|
|
if: runner.os == 'Linux'
|
|
run: sudo apt update && sudo apt install build-essential
|
|
|
|
- name: Golang-ci install
|
|
if: runner.os == 'Linux'
|
|
run: make lintci-deps
|
|
|
|
- name: Lint
|
|
if: runner.os == 'Linux'
|
|
run: make lint
|
|
|
|
unit-tests:
|
|
if: (github.event.action != 'closed' || github.event.pull_request.merged == true)
|
|
strategy:
|
|
matrix:
|
|
os: [ ubuntu-20.04 ] # list of os: https://github.com/actions/virtual-environments
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- run: |
|
|
git submodule update --init --recursive --force
|
|
git fetch --no-tags --prune --depth=1 origin +refs/heads/master:refs/remotes/origin/master
|
|
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version: 1.23.x
|
|
|
|
- name: Install dependencies on Linux
|
|
if: runner.os == 'Linux'
|
|
run: sudo apt update && sudo apt install build-essential
|
|
|
|
- uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.cache/go-build
|
|
~/Library/Caches/go-build
|
|
~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
|
|
restore-keys: ${{ runner.os }}-go-
|
|
|
|
- name: Test
|
|
run: make test
|
|
|
|
- uses: actions/upload-artifact@v4.4.0
|
|
with:
|
|
name: unitTest-coverage
|
|
path: cover.out
|
|
|
|
#- name: Data race tests
|
|
# run: make test-race
|
|
|
|
# # TODO: make it work
|
|
# - name: Reproducible build test
|
|
# run: |
|
|
# make geth
|
|
# shasum -a256 ./build/bin/geth > bor1.sha256
|
|
# make geth
|
|
# shasum -a256 ./build/bin/geth > bor2.sha256
|
|
# if ! cmp -s bor1.sha256 bor2.sha256; then
|
|
# echo >&2 "Reproducible build broken"; cat bor1.sha256; cat bor2.sha256; exit 1
|
|
# fi
|
|
|
|
integration-tests:
|
|
if: (github.event.action != 'closed' || github.event.pull_request.merged == true)
|
|
strategy:
|
|
matrix:
|
|
os: [ ubuntu-20.04 ] # list of os: https://github.com/actions/virtual-environments
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- run: |
|
|
git submodule update --init --recursive --force
|
|
git fetch --no-tags --prune --depth=1 origin +refs/heads/master:refs/remotes/origin/master
|
|
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version: 1.23.x
|
|
|
|
- name: Install dependencies on Linux
|
|
if: runner.os == 'Linux'
|
|
run: sudo apt update && sudo apt install build-essential
|
|
|
|
- uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
~/.cache/go-build
|
|
~/Library/Caches/go-build
|
|
~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
|
|
restore-keys: ${{ runner.os }}-go-
|
|
|
|
- name: test-integration
|
|
run: make test-integration
|
|
|
|
- uses: actions/upload-artifact@v4.4.0
|
|
with:
|
|
name: integrationTest-coverage
|
|
path: cover.out
|
|
|
|
codecov:
|
|
if: (github.event.action != 'closed' || github.event.pull_request.merged == true)
|
|
strategy:
|
|
matrix:
|
|
os: [ ubuntu-20.04 ] # list of os: https://github.com/actions/virtual-environments
|
|
runs-on: ${{ matrix.os }}
|
|
needs: [unit-tests, integration-tests]
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
- name: Download artifacts
|
|
uses: actions/download-artifact@v4.1.8
|
|
- name: Upload coverage to Codecov
|
|
uses: codecov/codecov-action@v3
|
|
|
|
e2e-tests:
|
|
if: (github.event.action != 'closed' || github.event.pull_request.merged == true)
|
|
strategy:
|
|
matrix:
|
|
os: [ ubuntu-20.04 ] # list of os: https://github.com/actions/virtual-environments
|
|
runs-on: ${{ matrix.os }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
path: bor
|
|
- name: Checkout submodules
|
|
run: |
|
|
cd bor
|
|
git submodule update --init --recursive --force
|
|
git fetch --no-tags --prune --depth=1 origin +refs/heads/master:refs/remotes/origin/master
|
|
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version: 1.23.x
|
|
|
|
- name: Checkout matic-cli
|
|
uses: actions/checkout@v4
|
|
with:
|
|
repository: maticnetwork/matic-cli
|
|
ref: master
|
|
path: matic-cli
|
|
|
|
- name: Install dependencies on Linux
|
|
if: runner.os == 'Linux'
|
|
run: |
|
|
sudo apt update
|
|
sudo apt install build-essential
|
|
curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash
|
|
sudo snap install solc
|
|
sudo apt install python2 jq curl
|
|
sudo ln -sf /usr/bin/python2 /usr/bin/python
|
|
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: '18.19.0'
|
|
cache: 'npm'
|
|
cache-dependency-path: |
|
|
matic-cli/package-lock.json
|
|
matic-cli/devnet/code/contracts/package-lock.json
|
|
matic-cli/devnet/code/genesis-contracts/package-lock.json
|
|
matic-cli/devnet/code/genesis-contracts/matic-contracts/package-lock.json
|
|
|
|
- name: Bootstrap devnet
|
|
run: |
|
|
cd matic-cli
|
|
npm install --prefer-offline --no-audit --progress=false
|
|
mkdir devnet
|
|
cd devnet
|
|
../bin/matic-cli.js setup devnet -c ../../bor/.github/matic-cli-config.yml
|
|
|
|
- name: Launch devnet
|
|
run: |
|
|
cd matic-cli/devnet
|
|
bash ../docker_devnet.sh
|
|
cd -
|
|
timeout 2m bash bor/integration-tests/bor_health.sh
|
|
|
|
- name: Run smoke tests
|
|
run: |
|
|
echo "Funding ganache accounts..."
|
|
timeout 10m bash bor/integration-tests/fund_ganache_accounts.sh
|
|
echo "Deposit 100 matic for each account to bor network"
|
|
cd matic-cli/devnet/code/contracts
|
|
npm run truffle exec scripts/deposit.js -- --network development $(jq -r .root.tokens.MaticToken contractAddresses.json) 100000000000000000000
|
|
cd -
|
|
timeout 60m bash bor/integration-tests/smoke_test.sh
|
|
|
|
- name: Upload logs
|
|
if: always()
|
|
uses: actions/upload-artifact@v4.4.0
|
|
with:
|
|
name: logs_${{ github.run_id }}
|
|
path: |
|
|
matic-cli/devnet/logs
|
|
|
|
- name: Package code and chain data
|
|
if: always()
|
|
run: |
|
|
cd matic-cli/devnet
|
|
docker compose down --remove-orphans
|
|
cd -
|
|
mkdir -p ${{ github.run_id }}/matic-cli
|
|
sudo mv bor ${{ github.run_id }}
|
|
sudo mv matic-cli/devnet ${{ github.run_id }}/matic-cli
|
|
sudo tar czf code.tar.gz ${{ github.run_id }}
|
|
|
|
- name: Upload code and chain data
|
|
if: always()
|
|
uses: actions/upload-artifact@v4.4.0
|
|
with:
|
|
name: code_${{ github.run_id }}
|
|
path: code.tar.gz
|