-
-
Notifications
You must be signed in to change notification settings - Fork 0
142 lines (123 loc) · 5.69 KB
/
ci.yml
File metadata and controls
142 lines (123 loc) · 5.69 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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
name: CI
on:
# Run on pull requests into dev or master.
pull_request:
branches: [master, dev]
# Push to dev also triggers tests to ensure dev branch is always stable
push:
branches: [dev]
jobs:
test:
# * Runs unit-test matrix:
# - On pull_request (to dev or master)
# - On push to dev
if: |
github.event_name == 'pull_request' ||
(github.event_name == 'push' && github.ref == 'refs/heads/dev')
name: Test on Python ${{ matrix.python-version }} (beta=${{ matrix.beta }})
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13"]
beta: [false, true]
steps:
- name: Checkout repository
uses: actions/checkout@v4
# For pull_request we check out the PR commit; for push we stay on the pushed ref (dev).
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.22"
- name: Cache Go modules
uses: actions/cache@v4
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-go-
- name: Build Go parsers
run: pwsh -File ./build_goparser.ps1
shell: bash
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Cache pip
uses: actions/cache@v4
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/pyproject.toml') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install .[dev]
- name: CLI smoke test
run: |
agent-docstrings --version
if [ "${{ matrix.beta }}" = "true" ]; then
agent-docstrings --beta --version
fi
- name: Run tests with coverage
run: |
pytest --cov=agent_docstrings --cov-report=xml --cov-report=term-missing
- name: Upload coverage artifact
uses: actions/upload-artifact@v4
with:
name: coverage-${{ matrix.python-version }}-${{ matrix.beta }}
path: coverage.xml
report:
# * Only for master: either in PR to master (so reviewers see comment) or after merge push to master.
if: github.event_name == 'pull_request' && github.base_ref == 'master'
name: Report Coverage
runs-on: ubuntu-latest
needs: test
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Download all coverage artifacts
uses: actions/download-artifact@v4
with:
path: coverage-artifacts
pattern: coverage-*
merge-multiple: true
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
directory: ./coverage-artifacts/
fail_ci_if_error: false
check-version:
# * Only on PRs into dev: prevent accidental version bumps.
# This check is skipped for the automated post-release merge from master back to dev.
if: github.event_name == 'pull_request' && github.base_ref == 'dev' && github.head_ref != 'master'
name: Check for accidental version bump
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Verify that version was not bumped
run: |
echo "Checking for version changes in pyproject.toml..."
DEV_PYPROJECT_VERSION=$(git show origin/dev:pyproject.toml | grep '^version = ' | awk -F'"' '{print $2}')
HEAD_PYPROJECT_VERSION=$(grep '^version = ' pyproject.toml | awk -F'"' '{print $2}')
if [ "$DEV_PYPROJECT_VERSION" != "$HEAD_PYPROJECT_VERSION" ]; then
echo "::error::Version in pyproject.toml was changed in a PR to dev. (dev: $DEV_PYPROJECT_VERSION, HEAD: $HEAD_PYPROJECT_VERSION)"
echo "Version bumping should only happen in a release PR to master."
exit 1
fi
echo "Version check passed for pyproject.toml"
echo "Checking for version changes in agent_docstrings/__init__.py..."
DEV_INIT_VERSION=$(git show origin/dev:agent_docstrings/__init__.py | grep '^__version__ = ' | awk -F'"' '{print $2}')
HEAD_INIT_VERSION=$(grep '^__version__ = ' agent_docstrings/__init__.py | awk -F'"' '{print $2}')
if [ "$DEV_INIT_VERSION" != "$HEAD_INIT_VERSION" ]; then
echo "::error::Version in agent_docstrings/__init__.py was changed in a PR to dev. (dev: $DEV_INIT_VERSION, HEAD: $HEAD_INIT_VERSION)"
echo "Version bumping should only happen in a release PR to master."
exit 1
fi
echo "Version check passed for agent_docstrings/__init__.py"