lightning-terminal/.github/workflows/main.yml
2022-11-02 11:56:26 +02:00

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