-
Notifications
You must be signed in to change notification settings - Fork 0
134 lines (125 loc) · 4.36 KB
/
test.yml
File metadata and controls
134 lines (125 loc) · 4.36 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
name: 'Test'
on:
pull_request:
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
version-bump:
name: 'Version Bump'
runs-on: 'ubuntu-latest'
steps:
- uses: actions/checkout@v4
with:
token: ${{ secrets.JENKINS_GITHUB_PAT }}
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha }}
- name: 'Configure GitHub user'
run: |
git config user.name devops
git config user.email devops@runtimeverification.com
- name: 'Install uv'
uses: astral-sh/setup-uv@v5
with:
version: 0.7.2
- name: 'Update version'
run: |
og_version=$(git show origin/${GITHUB_BASE_REF}:package/version)
./package/version.sh bump ${og_version}
./package/version.sh sub
new_version=$(cat package/version)
uv lock --no-upgrade
git add --update && git commit --message "Set Version: $(cat package/version)" || true
- name: 'Push updates'
run: git push origin HEAD:${GITHUB_HEAD_REF}
code-quality-checks:
needs: version-bump
name: 'Code Quality Checks'
runs-on: ubuntu-latest
steps:
- name: 'Check out code'
uses: actions/checkout@v4
- name: 'Install uv'
uses: astral-sh/setup-uv@v5
with:
version: 0.7.2
- name: 'Run code quality checks'
run: make check
unit-tests:
needs: code-quality-checks
name: 'Unit Tests'
runs-on: ubuntu-latest
steps:
- name: 'Check out code'
uses: actions/checkout@v4
- name: 'Install uv'
uses: astral-sh/setup-uv@v5
with:
version: 0.7.2
- name: 'Run unit tests'
run: make test-unit
integration-tests:
needs: code-quality-checks
name: 'Integration Tests'
runs-on: [self-hosted, linux, normal]
env:
USER: kmir
steps:
- name: 'Check out code'
uses: actions/checkout@v4
with:
token: ${{ secrets.JENKINS_GITHUB_PAT }}
submodules: recursive
- name: 'Set up Docker'
uses: ./.github/actions/with-docker
with:
container-name: kompass-ci-${{ github.sha }}
container-user: kmir
- name: 'Build Kompass'
run: docker exec --user ${USER} kompass-ci-${GITHUB_SHA} make build
- name: 'Run integration tests'
run: |
docker exec --user ${USER} kompass-ci-${GITHUB_SHA} which stable_mir_json
docker exec --user ${USER} kompass-ci-${GITHUB_SHA} stable_mir_json --version
docker exec --user ${USER} kompass-ci-${GITHUB_SHA} rustup toolchain list
docker exec --user ${USER} kompass-ci-${GITHUB_SHA} make test-integration
- name: 'Tear down Docker'
if: always()
run: docker stop --time 0 kompass-ci-${GITHUB_SHA}
build-kompass-image:
name: Build Kompass Image
needs: [ integration-tests ]
runs-on: ubuntu-latest
env:
container_name: "kompass-${{ github.run_id }}"
outputs:
image-name: ${{ steps.set-image-name.outputs.image-name }}
kompass-version: ${{ steps.set-image-name.outputs.kompass-version }}
kmir-version: ${{ steps.set-image-name.outputs.kmir-version }}
short-sha: ${{ steps.set-image-name.outputs.short-sha }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3.10.0
- name: Set Image Name Parameters
id: set-image-name
run: |
echo "image-name=ghcr.io/runtimeverification/kompass" >> $GITHUB_OUTPUT
echo "kmir-version=$(cat deps/kmir_release)" >> $GITHUB_OUTPUT
echo "kompass-version=$(cat package/version)" >> $GITHUB_OUTPUT
echo "short-sha=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT
- name: Build Kmir Container
uses: docker/build-push-action@v6
with:
context: .
file: Dockerfile
platforms: linux/amd64
push: false
load: true
build-args: |
KMIR_VERSION=${{ steps.set-image-name.outputs.kmir-version }}
tags: ${{ steps.set-image-name.outputs.image-name }}:ubuntu-jammy-${{ steps.set-image-name.outputs.kompass-version }}-${{ steps.set-image-name.outputs.short-sha }}