9bd8784ae8
Because we now have conditionally compiled code that depends on the architecture it is built for, we want to make sure we can build all architectures that we also release. Since GitHub builds are very fast, we can easily do this instead of only compiling for certain select architectures.
283 lines
8.8 KiB
YAML
283 lines
8.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
|
|
DOWNLOAD_CACHE: /home/runner/work/download_cache
|
|
BITCOIN_VERSION: 0.20.1
|
|
GO_VERSION: 1.15.2
|
|
|
|
jobs:
|
|
########################
|
|
# RPC compilation check
|
|
########################
|
|
rpc-check:
|
|
name: RPC 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: download cache
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: /home/runner/work/download_cache
|
|
key: lnd-${{ runner.os }}-download-${{ hashFiles('**/install_travis_proto.sh') }}
|
|
restore-keys: |
|
|
lnd-${{ runner.os }}-download-${{ hashFiles('**/install_travis_proto.sh') }}
|
|
lnd-${{ runner.os }}-download-
|
|
|
|
- name: install protoc and protobuf libraries
|
|
run: ./scripts/install_travis_proto.sh
|
|
|
|
- name: run check
|
|
run: make rpc-check
|
|
|
|
########################
|
|
# compile unit tests
|
|
########################
|
|
unit-compile:
|
|
name: compile unit tests
|
|
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: compile
|
|
run: make unit pkg=... case=_NONE_
|
|
|
|
########################
|
|
# 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
|
|
|
|
########################
|
|
# mobile compilation
|
|
########################
|
|
mobile-compile:
|
|
name: mobile 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: download cache
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: /home/runner/work/download_cache
|
|
key: lnd-${{ runner.os }}-download-${{ hashFiles('**/install_travis_proto.sh') }}
|
|
restore-keys: |
|
|
lnd-${{ runner.os }}-download-${{ hashFiles('**/install_travis_proto.sh') }}
|
|
lnd-${{ runner.os }}-download-
|
|
|
|
- name: install protoc and protobuf libraries
|
|
run: ./scripts/install_travis_proto.sh
|
|
|
|
- name: build mobile RPC bindings
|
|
run: make mobile-rpc
|
|
|
|
- name: build mobile specific code
|
|
run: go build --tags="mobile" ./mobile
|
|
|
|
########################
|
|
# 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: download cache
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: /home/runner/work/download_cache
|
|
key: lnd-${{ runner.os }}-download-${{ hashFiles('**/install_travis_proto.sh') }}
|
|
restore-keys: |
|
|
lnd-${{ runner.os }}-download-${{ hashFiles('**/install_travis_proto.sh') }}
|
|
lnd-${{ runner.os }}-download-
|
|
|
|
- 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
|