mirror of
https://github.com/lightninglabs/loop.git
synced 2026-08-13 12:33:03 +02:00
Add a repository-local tool to lint, format, and safely reword commit messages. Preserve markdown lists, quotes, code blocks, and trailers while enforcing subject and body width limits. Expose linting, formatting, and rewording through Make targets and document the supported workflows. Run the linter in CI for pull request and push commit ranges so malformed messages are caught before merging.
233 lines
5.5 KiB
YAML
233 lines
5.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:
|
|
########################
|
|
# 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
|