-
Notifications
You must be signed in to change notification settings - Fork 6
130 lines (108 loc) · 3.59 KB
/
build.yaml
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
---
name: Build
on:
push:
pull_request:
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
build-and-test:
name: Build and Test
runs-on: ${{ matrix.os }}
strategy:
fail-fast: true
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python-version: ["3.10", "3.11", "3.12"]
defaults:
run:
shell: bash
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
# cache: 'poetry'
- name: Install Poetry
uses: snok/install-poetry@v1
with:
virtualenvs-create: true
virtualenvs-in-project: true
- name: Add poetry to path
run: echo "$(poetry env info --path)/bin" >> $GITHUB_PATH
- name: Set up cache
uses: actions/cache@v4
id: cached-poetry-dependencies
with:
path: .venv
key: venv-${{ runner.os }}-${{ matrix.python-version }}-${{ hashFiles('poetry.lock') }}
- name: Install dependencies
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true'
run: poetry install --no-interaction
- name: Check potry
run: |
poetry check
- name: PyTorch version
run: |
poetry run python -c "import torch; print(torch.__version__)"
- name: Install plugin
run: poetry add --group test pytest-github-actions-annotate-failures
- name: Build dependencies
run: poetry build
- name: Upload dist
uses: actions/upload-artifact@v4
with:
name: ${{ github.event.repository.name }}-${{ runner.os }}-${{ matrix.python-version }}-${{ github.sha }}
path: dist/
if: ${{ always() }}
- name: Run ruff
run: poetry run ruff check -v ./
# - name: Run Pyright
# uses: jakebailey/pyright-action@v2
- name: Run safety checks
run: |
poetry check
poetry run bandit -ll --recursive hooks
continue-on-error: true
- name: Run tests
run: |
poetry run pytest -c pyproject.toml --cov-report=xml --cov-report=html \
--junitxml=junit/test-results-${{ runner.os }}-${{ matrix.python-version }}.xml --cov=${{ github.event.repository.name }}
- name: Upload test results
uses: actions/upload-artifact@v4
with:
name: pytest-results-${{ runner.os }}-${{ matrix.python-version }}
path: junit/test-results-${{ runner.os }}-${{ matrix.python-version }}.xml
if: ${{ always() }}
publish:
permissions:
contents: read
issues: read
checks: write
pull-requests: write
name: Publish Unit Tests Results
needs: build-and-test
runs-on: ["ubuntu-latest"]
# the build-and-test job might be skipped, we don't need to run this job then
if: >
always() &&
github.event.workflow_run.conclusion != 'skipped' && (
github.event.sender.login != 'dependabot[bot]' ||
github.event.workflow_run.head_repository.full_name != github.repository
)
steps:
- name: Download Artifacts
uses: actions/download-artifact@v4
with:
path: artifacts
- name: Publish Unit Test Results
uses: EnricoMi/publish-unit-test-result-action@v2
if: github.event.sender.login != 'dependabot[bot]'
with:
files: artifacts/**/*.xml