aff1a0334e
Because we now build a docker image for the RPC compilation, we can save some execution minutes if we run the mobile RPC and code compilation check in the same step of the CI workflow.
261 lines
7.8 KiB
YAML
261 lines
7.8 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- "master"
|
|
pull_request:
|
|
branches:
|
|
- "*"
|
|
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
|
|
env:
|
|
# go needs absolute directories, using the $HOME variable doesn't work here.
|
|
GOCACHE: /home/runner/work/go/pkg/build
|
|
GOPATH: /home/runner/work/go
|
|
BITCOIN_VERSION: 0.20.1
|
|
|
|
# If you change this value, please change it in the following files as well:
|
|
# /.travis.yml
|
|
# /Dockerfile
|
|
# /dev.Dockerfile
|
|
# /make/builder.Dockerfile
|
|
# /.github/workflows/release.yml
|
|
GO_VERSION: 1.15.6
|
|
|
|
jobs:
|
|
########################
|
|
# RPC and mobile compilation check
|
|
########################
|
|
rpc-check:
|
|
name: RPC and mobile compilation check
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: git checkout
|
|
uses: actions/checkout@v2
|
|
|
|
- name: go cache
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: /home/runner/work/go
|
|
key: lnd-${{ runner.os }}-go-${{ env.GO_VERSION }}-${{ github.job }}-${{ hashFiles('**/go.sum') }}
|
|
restore-keys: |
|
|
lnd-${{ runner.os }}-go-${{ env.GO_VERSION }}-${{ github.job }}-${{ hashFiles('**/go.sum') }}
|
|
lnd-${{ runner.os }}-go-${{ env.GO_VERSION }}-${{ github.job }}-
|
|
lnd-${{ runner.os }}-go-${{ env.GO_VERSION }}-
|
|
lnd-${{ runner.os }}-go-
|
|
|
|
- name: setup go ${{ env.GO_VERSION }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: '~${{ env.GO_VERSION }}'
|
|
|
|
- name: run check
|
|
run: make rpc-check
|
|
|
|
- name: build mobile RPC bindings
|
|
run: make mobile-rpc
|
|
|
|
- name: build mobile specific code
|
|
run: go build --tags="mobile" ./mobile
|
|
|
|
########################
|
|
# check commits
|
|
########################
|
|
check-commits:
|
|
name: check commits
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: git checkout
|
|
uses: actions/checkout@v2
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: go cache
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: /home/runner/work/go
|
|
key: lnd-${{ runner.os }}-go-${{ env.GO_VERSION }}-${{ github.job }}-${{ hashFiles('**/go.sum') }}
|
|
restore-keys: |
|
|
lnd-${{ runner.os }}-go-${{ env.GO_VERSION }}-${{ github.job }}-${{ hashFiles('**/go.sum') }}
|
|
lnd-${{ runner.os }}-go-${{ env.GO_VERSION }}-${{ github.job }}-
|
|
lnd-${{ runner.os }}-go-${{ env.GO_VERSION }}-
|
|
lnd-${{ runner.os }}-go-
|
|
|
|
- name: setup go ${{ env.GO_VERSION }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: '~${{ env.GO_VERSION }}'
|
|
|
|
- name: fetch and rebase on master
|
|
run: |
|
|
git remote add upstream https://github.com/lightningnetwork/lnd
|
|
git fetch upstream
|
|
export GIT_COMMITTER_EMAIL="lnd-ci@example.com"
|
|
export GIT_COMMITTER_NAME="LND CI"
|
|
git rebase upstream/master
|
|
|
|
- name: check commits
|
|
run: scripts/check-each-commit.sh upstream/master
|
|
|
|
########################
|
|
# lint code
|
|
########################
|
|
lint:
|
|
name: lint code
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: git checkout
|
|
uses: actions/checkout@v2
|
|
|
|
- name: Fetch all history for linter
|
|
run: git fetch --prune --unshallow
|
|
|
|
- name: go cache
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: /home/runner/work/go
|
|
key: lnd-${{ runner.os }}-go-${{ env.GO_VERSION }}-${{ github.job }}-${{ hashFiles('**/go.sum') }}
|
|
restore-keys: |
|
|
lnd-${{ runner.os }}-go-${{ env.GO_VERSION }}-${{ github.job }}-${{ hashFiles('**/go.sum') }}
|
|
lnd-${{ runner.os }}-go-${{ env.GO_VERSION }}-${{ github.job }}-
|
|
lnd-${{ runner.os }}-go-${{ env.GO_VERSION }}-
|
|
lnd-${{ runner.os }}-go-
|
|
|
|
- name: setup go ${{ env.GO_VERSION }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: '~${{ env.GO_VERSION }}'
|
|
|
|
- name: lint
|
|
run: make lint
|
|
|
|
########################
|
|
# cross compilation
|
|
########################
|
|
cross-compile:
|
|
name: cross compilation
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: git checkout
|
|
uses: actions/checkout@v2
|
|
|
|
- name: go cache
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: /home/runner/work/go
|
|
key: lnd-${{ runner.os }}-go-${{ env.GO_VERSION }}-${{ github.job }}-${{ hashFiles('**/go.sum') }}
|
|
restore-keys: |
|
|
lnd-${{ runner.os }}-go-${{ env.GO_VERSION }}-${{ github.job }}-${{ hashFiles('**/go.sum') }}
|
|
lnd-${{ runner.os }}-go-${{ env.GO_VERSION }}-${{ github.job }}-
|
|
lnd-${{ runner.os }}-go-${{ env.GO_VERSION }}-
|
|
lnd-${{ runner.os }}-go-
|
|
|
|
- name: setup go ${{ env.GO_VERSION }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: '~${{ env.GO_VERSION }}'
|
|
|
|
- name: build release for all architectures
|
|
run: make release
|
|
|
|
########################
|
|
# sample configuration check
|
|
########################
|
|
sample-conf-check:
|
|
name: sample configuration check
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: git checkout
|
|
uses: actions/checkout@v2
|
|
|
|
- name: go cache
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: /home/runner/work/go
|
|
key: lnd-${{ runner.os }}-go-${{ env.GO_VERSION }}-${{ github.job }}-${{ hashFiles('**/go.sum') }}
|
|
restore-keys: |
|
|
lnd-${{ runner.os }}-go-${{ env.GO_VERSION }}-${{ github.job }}-${{ hashFiles('**/go.sum') }}
|
|
lnd-${{ runner.os }}-go-${{ env.GO_VERSION }}-${{ github.job }}-
|
|
lnd-${{ runner.os }}-go-${{ env.GO_VERSION }}-
|
|
lnd-${{ runner.os }}-go-
|
|
|
|
- name: setup go ${{ env.GO_VERSION }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: '~${{ env.GO_VERSION }}'
|
|
|
|
- name: check all command line flags exist in sample-lnd.conf file
|
|
run: make sample-conf-check
|
|
|
|
########################
|
|
# run unit tests
|
|
########################
|
|
unit-test:
|
|
name: run unit tests
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
# Allow other tests in the matrix to continue if one fails.
|
|
fail-fast: false
|
|
matrix:
|
|
unit_type:
|
|
- btcd unit-cover
|
|
- unit tags=kvdb_etcd
|
|
- travis-race
|
|
steps:
|
|
- name: git checkout
|
|
uses: actions/checkout@v2
|
|
|
|
- name: go cache
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: /home/runner/work/go
|
|
key: lnd-${{ runner.os }}-go-${{ env.GO_VERSION }}-${{ github.job }}-${{ hashFiles('**/go.sum') }}
|
|
restore-keys: |
|
|
lnd-${{ runner.os }}-go-${{ env.GO_VERSION }}-${{ github.job }}-${{ hashFiles('**/go.sum') }}
|
|
lnd-${{ runner.os }}-go-${{ env.GO_VERSION }}-${{ github.job }}-
|
|
lnd-${{ runner.os }}-go-${{ env.GO_VERSION }}-
|
|
lnd-${{ runner.os }}-go-
|
|
|
|
- name: setup go ${{ env.GO_VERSION }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: '~${{ env.GO_VERSION }}'
|
|
|
|
- name: install bitcoind
|
|
run: ./scripts/install_bitcoind.sh
|
|
|
|
- name: run ${{ matrix.unit_type }}
|
|
run: make ${{ matrix.unit_type }}
|
|
|
|
- name: Send coverage
|
|
uses: shogo82148/actions-goveralls@v1
|
|
if: matrix.unit_type == 'btcd unit-cover'
|
|
with:
|
|
path-to-profile: coverage.txt
|
|
parallel: true
|
|
|
|
########################
|
|
# check pinned dependencies
|
|
########################
|
|
dep-pin:
|
|
name: check pinned dependencies
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
# Allow other tests in the matrix to continue if one fails.
|
|
fail-fast: false
|
|
matrix:
|
|
pinned_dep:
|
|
- google.golang.org/grpc v1.24.0
|
|
- github.com/golang/protobuf v1.3.2
|
|
|
|
steps:
|
|
- name: git checkout
|
|
uses: actions/checkout@v2
|
|
|
|
- name: ensure dependences at correct version
|
|
run: if ! grep -q "${{ matrix.pinned_dep }}" go.mod; then echo dependency ${{ matrix.pinned_dep }} should not be altered ; exit 1 ; fi
|