name: Build on: workflow_dispatch: pull_request: push: branches: - dev.v2 jobs: # Run the full Tilt build and wait for it to converge tilt: runs-on: tilt-kube-public # Cancel previous builds on the same branch/ref. Full runs are expensive # and capacity is limited, so we want to avoid running multiple builds # in parallel even if it means skipping CI runs on permanent branches # (unfortunately, we can't differentiate between temporary and permanent # refs without duplicating the entire logic). concurrency: group: ${{ github.workflow }}-tilt-${{ github.ref }} cancel-in-progress: true steps: - uses: actions/checkout@v2 - name: Expand for link to Tilt dashboard (only available during build) run: > echo "Tilt progress dashboard: https://$DASHBOARD_URL" - run: | kubectl config set-context ci --namespace=$DEPLOY_NS kubectl config use-context ci - run: tilt ci -- --ci --namespace=$DEPLOY_NS --num=2 timeout-minutes: 60 # Clean up k8s resources - run: kubectl delete --namespace=$DEPLOY_NS service,statefulset,configmap,pod,job --all if: always() # Verify whether the Makefile builds the node (no dependencies other than Go) node: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 - uses: actions/setup-go@v2 with: go-version: "1.17.5" - run: make node algorand: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v3 with: python-version: "3.10" - run: pip install -r algorand/requirements.txt - run: cd algorand && make test ethereum: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: node-version: "16" - run: cd ethereum && make test terra: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: node-version: "16" - run: cd terra && make test terra-2: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 - uses: actions/setup-node@v2 with: node-version: "16" - run: cd cosmwasm && make test # Run linters, Go tests and other outside-of-Tilt things. lint-and-tests: # The linter is slow enough that we want to run it on the self-hosted runner runs-on: tilt-kube-public concurrency: group: ${{ github.workflow }}-lint-${{ github.ref }} cancel-in-progress: true steps: - uses: actions/checkout@v2 - uses: actions/setup-go@v2 with: go-version: "1.17.5" # ensure that code is formatted - run: GOFMT_OUTPUT="$(gofmt -l `find ./node ./event_database -name '*.go' | grep -v vendor` 2>&1)"; if [ -n "$GOFMT_OUTPUT" ]; then printf "All the following files are not correctly formatted\n${GOFMT_OUTPUT}\n"; exit 1; fi # run linters - run: make generate && ./lint.sh # The go-ethereum and celo-blockchain packages both implement secp256k1 using the exact same header, but that causes duplicate symbols. - run: cd node && go test -v -ldflags '-extldflags "-Wl,--allow-multiple-definition" ' ./... # Run rust lints and tests rust-lint-and-tests: runs-on: ubuntu-20.04 strategy: matrix: manifest: - terra/Cargo.toml - sdk/rust/Cargo.toml steps: - name: Check out source uses: actions/checkout@v2 - name: Install stable rust toolchain uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable default: true - name: Run `cargo check` uses: actions-rs/cargo@v1 with: command: check args: --workspace --manifest-path ${{ matrix.manifest }} - name: Run `cargo test` uses: actions-rs/cargo@v1 with: command: test args: --workspace --manifest-path ${{ matrix.manifest }}