-
Notifications
You must be signed in to change notification settings - Fork 0
92 lines (87 loc) · 3.72 KB
/
Copy pathci.yml
File metadata and controls
92 lines (87 loc) · 3.72 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
name: CI
on:
# push は main と統合ブランチ(release/** と mission/**)だけで走らせる。
# それ以外のブランチは Pull Request の検査で見るため、二重に走らせない。
push:
branches: [main, 'release/**', 'mission/**']
# Pull Request は宛先を絞らない(積み重ねた Pull Request も検査する)。
pull_request:
jobs:
python-syntax:
name: Python syntax check
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12"]
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Compile-check Python sources
run: python -m compileall -q lib bin
lint:
name: Ruff lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: astral-sh/ruff-action@v3
with:
args: "check --select=E9,F63,F7,F82 lib"
shellcheck:
name: ShellCheck
runs-on: ubuntu-latest
env:
# 手元の基準 (devbase-base:latest の shellcheck) に揃える。containers/base/Dockerfile の版の確認と一緒に上げる (#247)
SHELLCHECK_VERSION: v0.11.0
SHELLCHECK_SHA256: 8c3be12b05d5c177a04c29e3c78ce89ac86f1595681cab149b65b97c4e227198
# どの step も水準を絞らない (既定の style まで)。検査の前に使う shellcheck の版をログへ出す。
steps:
- uses: actions/checkout@v4
- name: Install ShellCheck ${{ env.SHELLCHECK_VERSION }}
run: |
f="shellcheck-${SHELLCHECK_VERSION}.linux.x86_64.tar.xz"
curl -fsSL -o "$RUNNER_TEMP/$f" "https://github.com/koalaman/shellcheck/releases/download/${SHELLCHECK_VERSION}/$f"
echo "${SHELLCHECK_SHA256} $RUNNER_TEMP/$f" | sha256sum -c -
tar -xJf "$RUNNER_TEMP/$f" -C "$RUNNER_TEMP"
echo "$RUNNER_TEMP/shellcheck-${SHELLCHECK_VERSION}" >> "$GITHUB_PATH"
# GITHUB_PATH へ書いた場所は次の step から効くため、版の確認は導入と分ける
- name: Check ShellCheck version
run: |
shellcheck --version | grep -Fx "version: ${SHELLCHECK_VERSION#v}"
- name: Run ShellCheck on bin/
run: shellcheck --version | sed -n 2p && shellcheck bin/*
- name: Run ShellCheck on install.sh
run: shellcheck --version | sed -n 2p && shellcheck install.sh
# containers/base のシェルスクリプト (#259)。シェルスクリプトを足したらここへも足す。
# 漏れは tests/containers/test_base_shellcheck_ci.py が落とす
- name: Run ShellCheck on containers/base/
run: |
shellcheck --version | sed -n 2p && shellcheck \
containers/base/ai-cli-aliases.sh \
containers/base/dind \
containers/base/entrypoint.sh \
containers/base/shellrc-dir.sh \
containers/base/tmux-clean \
containers/base/tmux-first \
containers/base/tmux-session
pytest:
name: Pytest (Python ${{ matrix.python-version }})
runs-on: ubuntu-latest
timeout-minutes: 15
strategy:
fail-fast: false
matrix:
# requires-python の下限と、手元で使う版 (PLAN60 前提 1)
python-version: ["3.10", "3.13"]
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v6
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies from uv.lock
run: uv sync --locked
- name: Run pytest
# CI に DEVBASE_ROOT は無い。テストは自前の tmp を DEVBASE_ROOT に向ける (PLAN60 前提 4)
run: uv run --locked pytest tests/ -q