-
Notifications
You must be signed in to change notification settings - Fork 16
129 lines (113 loc) · 3.86 KB
/
main.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
name: Continuous integration
on:
push:
branches:
- master
- test
tags:
- '*'
pull_request:
env:
HAS_SECRETS: ${{ secrets.HAS_SECRETS }}
jobs:
build:
name: Continuous integration
runs-on: ubuntu-24.04
timeout-minutes: 50
if: "!startsWith(github.event.head_commit.message, '[skip ci] ')"
steps:
- run: docker system prune --all --force
- uses: actions/checkout@v4
if: env.HAS_SECRETS != 'HAS_SECRETS'
- uses: actions/checkout@v4
with:
token: ${{ secrets.TOKEN }}
fetch-depth: 0
if: env.HAS_SECRETS == 'HAS_SECRETS'
- uses: actions/setup-python@v5
with:
python-version: '3.13'
- run: python3 -m pip install --requirement=ci/requirements.txt
- uses: actions/cache@v4
with:
path: ~/.cache/pre-commit
key: pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
restore-keys: "pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}\npre-commit-"
- run: pre-commit run --all-files
- run: git diff --exit-code --patch > /tmp/pre-commit.patch || true
if: failure()
- uses: actions/upload-artifact@v4
with:
name: Apply pre-commit fix.patch
path: /tmp/pre-commit.patch
retention-days: 1
if: failure()
- name: Print environment information
run: c2cciutils-env
- name: GitHub event
run: echo ${GITHUB_EVENT} | python3 -m json.tool
env:
GITHUB_EVENT: ${{ toJson(github) }}
- run: poetry-dynamic-versioning
- run: make build
- run: make build-tests
- run: make prospector
- run: mkdir -p results/status
- name: Pytest
run: >
docker run --rm --env=PYTHONPATH=/opt/
--volume=$(pwd)/results:/results --volume=$(pwd)/tests:/tests
sbrunner/scan-to-paperless-tests bash -c '
cd /tests &&
pytest --durations=0 -vv --color=yes
--profile --profile-svg --junitxml=/results/test-reports/junit.xml .'
- run: sudo chmod -R go+r results || true
if: failure()
- name: Get the status images
run: cp tests/status/*.png results/status/ || true
if: failure()
- uses: actions/upload-artifact@v4
with:
name: results
path: results
if-no-files-found: ignore
retention-days: 5
if: failure()
- run: docker login --username=${{ secrets.DOCKER_USERNAME }} --password=${{ secrets.DOCKER_PASSWORD }}
- name: Init pypi
run: |-
echo "[pypi]" > ~/.pypirc
echo "username = ${{ secrets.PYPI_USERNAME }}" >> ~/.pypirc
echo "password = ${{ secrets.PYPI_PASSWORD }}" >> ~/.pypirc
if: env.HAS_SECRETS == 'HAS_SECRETS'
- name: Init Git
run: |
git config user.email "<ci@ci.com>"
git config user.name "CI"
if: env.HAS_SECRETS == 'HAS_SECRETS'
- name: Publish
run: c2cciutils-publish
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
GITHUB_TOKEN: ${{ secrets.TOKEN }}
if: env.HAS_SECRETS == 'HAS_SECRETS'
- run: make build-all
- name: Publish Docker all
run: |
c2cciutils-publish --group=docker-all
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
GITHUB_TOKEN: ${{ secrets.TOKEN }}
if: env.HAS_SECRETS == 'HAS_SECRETS'
- run: git diff --exit-code --patch > /tmp/dpkg-versions.patch || true
if: failure()
- run: git checkout pyproject.toml
if: failure()
- run: git diff --exit-code --patch > /tmp/dpkg-versions.patch || true
if: failure()
- uses: actions/upload-artifact@v4
with:
name: Update dpkg versions list.patch
path: /tmp/dpkg-versions.patch
retention-days: 1
if: failure()