mirror of
https://github.com/lightninglabs/lightning-terminal.git
synced 2026-08-13 12:33:36 +02:00
350 lines
9.6 KiB
YAML
350 lines
9.6 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- "master"
|
|
pull_request:
|
|
branches:
|
|
- "*"
|
|
|
|
env:
|
|
# go needs absolute directories, using the $HOME variable doesn't work here.
|
|
DOWNLOAD_CACHE: /home/runner/work/download_cache
|
|
|
|
# If you change this value, please change it in the following files as well:
|
|
# /Dockerfile
|
|
# /dev.Dockerfile
|
|
GO_VERSION: 1.18
|
|
|
|
jobs:
|
|
########################
|
|
# frontend build checks
|
|
########################
|
|
frontend:
|
|
name: frontend tests on ${{ matrix.os }}
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
strategy:
|
|
matrix:
|
|
node_version: [16.x]
|
|
os: [ubuntu-latest, windows-latest, macOS-latest]
|
|
|
|
steps:
|
|
- name: set git config
|
|
run: |
|
|
git config --global core.eol lf
|
|
git config --global core.autocrlf false
|
|
|
|
- name: git checkout
|
|
uses: actions/checkout@v2
|
|
|
|
- name: setup nodejs v${{ matrix.node_version }}
|
|
uses: actions/setup-node@v1
|
|
with:
|
|
node-version: ${{ matrix.node_version }}
|
|
|
|
- name: get yarn cache dir
|
|
id: yarn-cache-dir
|
|
run: echo "::set-output name=dir::$(yarn cache dir)"
|
|
|
|
- name: yarn cache
|
|
uses: actions/cache@v2
|
|
id: yarn-cache
|
|
with:
|
|
path: ${{ steps.yarn-cache-dir.outputs.dir }}
|
|
key: ${{ runner.os }}-yarn-${{ matrix.node_version }}-${{ hashFiles('**/yarn.lock') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-yarn-${{ matrix.node_version }}-${{ hashFiles('**/yarn.lock') }}
|
|
${{ runner.os }}-yarn-${{ matrix.node_version }}-
|
|
${{ runner.os }}-yarn-
|
|
|
|
- name: install dependencies
|
|
working-directory: ./app
|
|
run: yarn
|
|
|
|
- name: lint code
|
|
working-directory: ./app
|
|
run: yarn lint
|
|
|
|
- name: typescript compile
|
|
working-directory: ./app
|
|
run: yarn tsc
|
|
|
|
- name: unit tests
|
|
working-directory: ./app
|
|
run: yarn test:ci
|
|
|
|
########################
|
|
# backend build checks
|
|
########################
|
|
backend:
|
|
name: backend build on ${{ matrix.os }}
|
|
runs-on: ${{ matrix.os }}
|
|
|
|
strategy:
|
|
matrix:
|
|
go_version: [1.18.x]
|
|
os: [ubuntu-latest, windows-latest, macOS-latest]
|
|
|
|
steps:
|
|
- name: Set git to use LF
|
|
run: |
|
|
git config --global core.eol lf
|
|
git config --global core.autocrlf false
|
|
|
|
- name: git checkout
|
|
uses: actions/checkout@v2
|
|
|
|
- name: go cache
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ~/go/pkg/mod
|
|
key: ${{ runner.os }}-go-${{ matrix.go_version }}-${{ hashFiles('**/go.sum') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-go-${{ matrix.go_version }}-${{ hashFiles('**/go.sum') }}
|
|
${{ runner.os }}-go-${{ matrix.go_version }}-
|
|
${{ runner.os }}-go-
|
|
|
|
- name: get yarn cache dir
|
|
id: yarn-cache-dir
|
|
run: echo "::set-output name=dir::$(yarn cache dir)"
|
|
|
|
- name: yarn cache
|
|
uses: actions/cache@v2
|
|
id: yarn-cache
|
|
with:
|
|
path: ${{ steps.yarn-cache-dir.outputs.dir }}
|
|
key: ${{ runner.os }}-yarn-16.x-${{ hashFiles('**/yarn.lock') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-yarn-16.x-${{ hashFiles('**/yarn.lock') }}
|
|
${{ runner.os }}-yarn-16.x-
|
|
${{ runner.os }}-yarn-
|
|
|
|
- name: setup go v${{ matrix.go_version }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: '~${{ matrix.go_version }}'
|
|
|
|
- name: build backend binary
|
|
run: make build
|
|
|
|
- name: build CLI binaries
|
|
run: make go-install-cli
|
|
|
|
########################
|
|
# proto compile check
|
|
########################
|
|
proto-compile-check:
|
|
name: RPC proto compilation check
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: set git config
|
|
run: |
|
|
git config --global core.eol lf
|
|
git config --global core.autocrlf false
|
|
|
|
- name: git checkout
|
|
uses: actions/checkout@v2
|
|
|
|
- name: setup nodejs v16.x
|
|
uses: actions/setup-node@v1
|
|
with:
|
|
node-version: 16.x
|
|
|
|
- name: download cache
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: /home/runner/work/download_cache
|
|
key: litd-${{ runner.os }}-download-${{ hashFiles('**/install_protoc.sh') }}
|
|
restore-keys: |
|
|
litd-${{ runner.os }}-download-${{ hashFiles('**/install_protoc.sh') }}
|
|
litd-${{ runner.os }}-download-
|
|
|
|
- name: get yarn cache dir
|
|
id: yarn-cache-dir
|
|
run: echo "::set-output name=dir::$(yarn cache dir)"
|
|
|
|
- name: yarn cache
|
|
uses: actions/cache@v2
|
|
id: yarn-cache
|
|
with:
|
|
path: ${{ steps.yarn-cache-dir.outputs.dir }}
|
|
key: ${{ runner.os }}-yarn-${{ matrix.node_version }}-${{ hashFiles('**/yarn.lock') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-yarn-${{ matrix.node_version }}-${{ hashFiles('**/yarn.lock') }}
|
|
${{ runner.os }}-yarn-${{ matrix.node_version }}-
|
|
${{ runner.os }}-yarn-
|
|
|
|
- name: install dependencies
|
|
working-directory: ./app
|
|
run: yarn
|
|
|
|
- name: setup go ${{ env.GO_VERSION }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: '${{ env.GO_VERSION }}'
|
|
|
|
- name: compile rpc for golang
|
|
run: make rpc
|
|
|
|
- name: run check
|
|
run: make mod-check
|
|
|
|
########################
|
|
# 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: litd-${{ runner.os }}-go-${{ env.GO_VERSION }}-${{ github.job }}-${{ hashFiles('**/go.sum') }}
|
|
restore-keys: |
|
|
litd-${{ runner.os }}-go-${{ env.GO_VERSION }}-${{ github.job }}-${{ hashFiles('**/go.sum') }}
|
|
litd-${{ runner.os }}-go-${{ env.GO_VERSION }}-${{ github.job }}-
|
|
litd-${{ runner.os }}-go-${{ env.GO_VERSION }}-
|
|
litd-${{ 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 ${{ github.base_ref }}
|
|
run: |
|
|
git remote add upstream https://github.com/${{ github.repository }}
|
|
git fetch upstream
|
|
export GIT_COMMITTER_EMAIL="litd-ci@example.com"
|
|
export GIT_COMMITTER_NAME="LiT CI"
|
|
git rebase upstream/${{ github.base_ref }}
|
|
|
|
- name: check commits
|
|
run: scripts/check-each-commit.sh upstream/${{ github.base_ref }}
|
|
|
|
########################
|
|
# lint code
|
|
########################
|
|
lint:
|
|
name: lint
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: git checkout
|
|
uses: actions/checkout@v2
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: setup go ${{ env.GO_VERSION }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: '${{ env.GO_VERSION }}'
|
|
|
|
- name: prepare dummy static data
|
|
run: mkdir -p app/build; touch app/build/index.html
|
|
|
|
- name: run check
|
|
run: make lint mod-check
|
|
|
|
########################
|
|
# unit race tests
|
|
########################
|
|
unit-race:
|
|
name: unit-race
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: git checkout
|
|
uses: actions/checkout@v2
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: setup go ${{ env.GO_VERSION }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: '${{ env.GO_VERSION }}'
|
|
|
|
- name: run check
|
|
run: make unit-race
|
|
|
|
########################
|
|
# unit tests
|
|
########################
|
|
unit:
|
|
name: unit tests
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: git checkout
|
|
uses: actions/checkout@v2
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: setup go ${{ env.GO_VERSION }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: '${{ env.GO_VERSION }}'
|
|
|
|
- name: run check
|
|
run: make unit
|
|
|
|
########################
|
|
# integration tests
|
|
########################
|
|
itest:
|
|
name: integration test
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: set git config
|
|
run: |
|
|
git config --global core.eol lf
|
|
git config --global core.autocrlf false
|
|
|
|
- name: git checkout
|
|
uses: actions/checkout@v2
|
|
|
|
- name: setup nodejs v${{ matrix.node_version }}
|
|
uses: actions/setup-node@v1
|
|
with:
|
|
node-version: 16.x
|
|
|
|
- name: download cache
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: /home/runner/work/download_cache
|
|
key: litd-${{ runner.os }}-download-${{ hashFiles('**/install_protoc.sh') }}
|
|
restore-keys: |
|
|
litd-${{ runner.os }}-download-${{ hashFiles('**/install_protoc.sh') }}
|
|
litd-${{ runner.os }}-download-
|
|
|
|
- name: get yarn cache dir
|
|
id: yarn-cache-dir
|
|
run: echo "::set-output name=dir::$(yarn cache dir)"
|
|
|
|
- name: yarn cache
|
|
uses: actions/cache@v2
|
|
id: yarn-cache
|
|
with:
|
|
path: ${{ steps.yarn-cache-dir.outputs.dir }}
|
|
key: ${{ runner.os }}-yarn-${{ matrix.node_version }}-${{ hashFiles('**/yarn.lock') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-yarn-${{ matrix.node_version }}-${{ hashFiles('**/yarn.lock') }}
|
|
${{ runner.os }}-yarn-${{ matrix.node_version }}-
|
|
${{ runner.os }}-yarn-
|
|
|
|
- name: install dependencies
|
|
working-directory: ./app
|
|
run: yarn
|
|
|
|
- name: setup go ${{ env.GO_VERSION }}
|
|
uses: actions/setup-go@v2
|
|
with:
|
|
go-version: '${{ env.GO_VERSION }}'
|
|
|
|
- name: run check
|
|
run: make itest
|