loop/.github/workflows/main.yml

269 lines
6.5 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
GO111MODULE: on
# If you change this value, please change it in the following files as well:
# /Dockerfile
GO_VERSION: 1.26
LITD_ITEST_BRANCH: master
jobs:
########################
# release notes
########################
release-notes:
name: Release Notes
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
steps:
- name: git checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Check for a release note
env:
BASE_SHA: ${{ github.event.pull_request.base.sha }}
HEAD_SHA: ${{ github.event.pull_request.head.sha }}
RELEASE_NOTES_FILE: docs/release-notes/release-notes-next.md
run: |
if git diff --unified=0 "$BASE_SHA...$HEAD_SHA" -- \
"$RELEASE_NOTES_FILE" |
awk '
/^@@/ { in_hunk = 1; next }
in_hunk && /^\+/ {
line = substr($0, 2)
if (line ~ /[^[:space:]]/) found = 1
}
END { exit found ? 0 : 1 }
'
then
exit 0
fi
echo "::error file=$RELEASE_NOTES_FILE::Add a release note for this PR."
exit 1
########################
# commit message lint
########################
commit-message:
name: Commit Message
runs-on: ubuntu-latest
steps:
- name: git checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Lint commit messages
env:
EVENT_NAME: ${{ github.event_name }}
BASE_SHA: ${{ github.event.pull_request.base.sha }}
HEAD_SHA: ${{ github.event.pull_request.head.sha }}
BEFORE_SHA: ${{ github.event.before }}
GITHUB_SHA: ${{ github.sha }}
run: |
if [ "$EVENT_NAME" = "pull_request" ]; then
range="$BASE_SHA..$HEAD_SHA"
elif [ "$EVENT_NAME" = "push" ] &&
[ "$BEFORE_SHA" != "0000000000000000000000000000000000000000" ]; then
range="$BEFORE_SHA..$GITHUB_SHA"
else
range="$(git rev-parse HEAD^ 2>/dev/null)..HEAD"
fi
make commitmsg-lint range="$range"
########################
# RPC compile and check
########################
rpc-check:
name: RPC compilation check
runs-on: ubuntu-latest
steps:
- name: git checkout
uses: actions/checkout@v4
- name: setup go ${{ env.GO_VERSION }}
uses: actions/setup-go@v2
with:
go-version: '~${{ env.GO_VERSION }}'
- name: RPC for JS compilation
run: make rpc-js-compile
- name: run check
run: make rpc-check
########################
# SQL compile and check
########################
sqlc-check:
name: SQL compilation check
runs-on: ubuntu-latest
steps:
- name: git checkout
uses: actions/checkout@v4
- name: setup go ${{ env.GO_VERSION }}
uses: actions/setup-go@v2
with:
go-version: '~${{ env.GO_VERSION }}'
- name: run check
run: make sqlc-check
########################
# go mod check
########################
mod-check:
name: go mod check
runs-on: ubuntu-latest
steps:
- name: git checkout
uses: actions/checkout@v4
- name: setup go ${{ env.GO_VERSION }}
uses: actions/setup-go@v2
with:
go-version: '~${{ env.GO_VERSION }}'
- name: run check
run: make mod-check
########################
# build and lint code
########################
lint:
name: build and lint code
runs-on: ubuntu-latest
steps:
- name: git checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: setup go ${{ env.GO_VERSION }}
uses: actions/setup-go@v5
with:
go-version: '~${{ env.GO_VERSION }}'
- name: build
run: make build tags=dev
- name: lint
run: make lint
########################
# Verify documentation
########################
docs-check:
name: verify that auto-generated documentation is up-to-date
runs-on: ubuntu-latest
steps:
- name: git checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: setup go ${{ env.GO_VERSION }}
uses: actions/setup-go@v5
with:
go-version: '~${{ env.GO_VERSION }}'
- name: check
run: make docs-check
- name: check generated FSM diagrams
run: make fsm-check
########################
# run unit-test sqlite3 race
########################
unit-test:
name: run unit-test sqlite3 race
runs-on: ubuntu-latest
steps:
- name: git checkout
uses: actions/checkout@v4
- name: setup go ${{ env.GO_VERSION }}
uses: actions/setup-go@v5
with:
go-version: '~${{ env.GO_VERSION }}'
- name: run unit-test sqlite3 race
run: make unit-race
########################
# run unit-test postgres race
########################
unit-test-postgres:
name: run unit-test postgres race
runs-on: ubuntu-latest
steps:
- name: git checkout
uses: actions/checkout@v4
- name: setup go ${{ env.GO_VERSION }}
uses: actions/setup-go@v5
with:
go-version: '~${{ env.GO_VERSION }}'
- name: run unit-test postgres race
run: make unit-postgres-race
########################
# Run LiTd tests
########################
run-lit-itests:
name: run LiT itests
runs-on: ubuntu-latest
continue-on-error: true
steps:
- name: git checkout
uses: actions/checkout@v4
- name: Prepare LiT workspace
uses: ./.github/actions/lit-setup
- name: Run LiT itests
working-directory: ./lightning-terminal
run: make itest icase='terminal .*'
########################
# Run LiTd unit tests
########################
run-lit-unit:
name: run LiT unit tests
runs-on: ubuntu-latest
continue-on-error: true
steps:
- name: git checkout
uses: actions/checkout@v4
- name: Prepare LiT workspace
uses: ./.github/actions/lit-setup
- name: Run LiT unit tests
working-directory: ./lightning-terminal
run: make unit