-
Notifications
You must be signed in to change notification settings - Fork 9
179 lines (163 loc) · 6.03 KB
/
release.yml
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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
---
name: 'Release'
on:
push:
branches:
- 'release'
jobs:
draft-release:
name: 'Draft Release'
runs-on: ubuntu-latest
outputs:
version: ${{ steps.make-release.outputs.version }}
steps:
- name: 'Check out code'
uses: actions/checkout@v4
- name: 'Make release'
id: 'make-release'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
set -x
VERSION=v$(cat package/version)
gh release create "${VERSION}" \
--repo runtimeverification/kontrol \
--draft \
--title ${VERSION} \
--target ${{ github.sha }}
echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
nix-cache:
name: 'Populate Nix Cache'
strategy:
matrix:
runner: [normal, MacIntel, ARM64]
runs-on: ${{ matrix.runner }}
needs: draft-release
steps:
- name: 'Check out code'
uses: actions/checkout@v4
with:
ref: ${{ github.event.push.head.sha }}
fetch-depth: 0
- name: 'Build and cache Kontrol'
uses: workflow/nix-shell-action@v3
env:
GC_DONT_GC: 1
CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_PUBLIC_TOKEN }}
with:
packages: jq
script: |
KONTROL=$(nix build --extra-experimental-features 'nix-command flakes' .#kontrol --json | jq -r '.[].outputs | to_entries[].value')
DRV=$(nix-store --query --deriver ${KONTROL})
nix-store --query --requisites --include-outputs ${DRV} | cachix push k-framework
- name: 'On failure, delete drafted release'
if: failure()
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
set -x
VERSION=v$(cat package/version)
gh release delete ${VERSION} \
--repo runtimeverification/kontrol \
--yes \
--cleanup-tag
nix-binary-cache:
name: 'Populate Nix Binary Cache'
strategy:
matrix:
runner: [normal, MacIntel, ARM64]
runs-on: ${{ matrix.runner }}
needs: draft-release
steps:
- name: 'Check out code'
uses: actions/checkout@v4
- name: 'Publish Kontrol to k-framework-binary cache'
uses: workflow/nix-shell-action@v3
env:
CACHIX_AUTH_TOKEN: '${{ secrets.CACHIX_PRIVATE_KFB_TOKEN }}'
GC_DONT_GC: '1'
with:
packages: jq
script: |
export PATH="$(nix build github:runtimeverification/kup --no-link --json | jq -r '.[].outputs | to_entries[].value')/bin:$PATH"
kup publish k-framework-binary .#kontrol --keep-days 180
kup publish k-framework-binary .#kontrol.solc_0_8_13 --keep-days 180
kup publish k-framework-binary .#kontrol.solc_0_8_15 --keep-days 180
- name: 'On failure, delete drafted release'
if: failure()
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
set -x
VERSION=v$(cat package/version)
gh release delete ${VERSION} \
--repo runtimeverification/kontrol \
--yes \
--cleanup-tag
dockerhub:
name: 'Build and Publish Docker Image'
runs-on: [self-hosted, linux, normal]
needs: draft-release
steps:
- name: 'Check out code'
uses: actions/checkout@v4
with:
ref: ${{ github.event.push.head.sha }}
fetch-depth: 0
- name: 'Set environment'
run: |
KONTROL_VERSION=$(cat package/version)
TAG=runtimeverificationinc/kontrol:ubuntu-jammy-${KONTROL_VERSION}
echo "TAG=${TAG}" >> ${GITHUB_ENV}
- name: 'Build Docker image'
run: |
K_VERSION=$(cat deps/k_release)
Z3_VERSION=$(cat deps/z3)
docker build . --no-cache --tag ${TAG} --build-arg K_VERSION=${K_VERSION} --build-arg Z3_VERSION=${Z3_VERSION}
- name: 'Run Docker image'
run: docker run --rm ${TAG} kontrol --help
- name: 'Push Docker image to Docker Hub'
run: |
echo "${{ secrets.DOCKERHUB_PASSWORD }}" | docker login --username rvdockerhub --password-stdin
docker image push ${TAG}
- name: 'On failure, delete drafted release'
if: failure()
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
set -x
VERSION=v$(cat package/version)
gh release delete ${VERSION} \
--repo runtimeverification/kontrol \
--yes \
--cleanup-tag
cut-release:
name: 'Cut Release'
runs-on: ubuntu-latest
needs: [dockerhub, nix-cache, nix-binary-cache]
steps:
- name: 'Check out code'
uses: actions/checkout@v4
with:
ref: ${{ github.event.push.head.sha }}
fetch-depth: 0
- name: 'Finalize Release'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
set -x
VERSION=v$(cat package/version)
gh release edit ${VERSION} \
--repo runtimeverification/kontrol \
--draft=false
- name: 'Update dependents'
run: |
set -x
VERSION=$(cat package/version)
curl --fail \
-X POST \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer ${{ secrets.JENKINS_GITHUB_PAT }}" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/runtimeverification/devops/dispatches \
-d '{"event_type":"on-demand-test","client_payload":{"repo":"runtimeverification/kontrol","version":"'${VERSION}'"}}'