-
Notifications
You must be signed in to change notification settings - Fork 0
122 lines (104 loc) · 3.62 KB
/
Copy pathrelease.yaml
File metadata and controls
122 lines (104 loc) · 3.62 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
name: Release
on:
push:
branches:
- trunk
workflow_dispatch:
permissions:
contents: write
jobs:
release-meta:
runs-on: ubuntu-latest
outputs:
release_name: ${{ steps.meta.outputs.release_name }}
tag: ${{ steps.meta.outputs.tag }}
version: ${{ steps.meta.outputs.version }}
steps:
- uses: actions/checkout@v4
- id: meta
shell: bash
run: |
set -euo pipefail
version="v6.1"
short_sha="${GITHUB_SHA::7}"
tag="kernel-${version}-main-${short_sha}"
release_name="kernel ${version} (${short_sha})"
{
echo "release_name=${release_name}"
echo "tag=${tag}"
echo "version=${version}"
} >> "${GITHUB_OUTPUT}"
build-assets:
needs: release-meta
runs-on: ubuntu-latest
timeout-minutes: 240
strategy:
fail-fast: false
matrix:
arch: [x86_64, aarch64]
flavor: [firecracker, cloud-hypervisor]
steps:
- uses: actions/checkout@v4
- name: Build kernel
run: ARCH=${{ matrix.arch }} FLAVOR=${{ matrix.flavor }} VERSION=${{ needs.release-meta.outputs.version }} USE_DOCKER=1 ./build.sh
- name: Upload packaged assets
uses: actions/upload-artifact@v4
with:
name: kernel-release-${{ matrix.flavor }}-${{ matrix.arch }}
path: dist/*.tar.gz
if-no-files-found: error
publish-release:
needs:
- release-meta
- build-assets
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Download packaged assets
uses: actions/download-artifact@v4
with:
merge-multiple: true
path: dist
pattern: kernel-release-*
- name: Create stable alias assets
shell: bash
run: |
set -euo pipefail
x86_asset="$(ls dist/vmlinux-x86_64-*.tar.gz | head -n1)"
arm_asset="$(ls dist/vmlinux-aarch64-*.tar.gz | head -n1)"
ch_x86_asset="$(ls dist/cloud-hypervisor-kernel-x86_64-*.tar.gz | head -n1)"
ch_arm_asset="$(ls dist/cloud-hypervisor-kernel-aarch64-*.tar.gz | head -n1)"
cp "${x86_asset}" dist/kernel-x86_64.tar.gz
cp "${arm_asset}" dist/kernel-aarch64.tar.gz
cp "${ch_x86_asset}" dist/cloud-hypervisor-kernel-x86_64.tar.gz
cp "${ch_arm_asset}" dist/cloud-hypervisor-kernel-aarch64.tar.gz
- name: Write release notes
shell: bash
run: |
cat <<EOF > release-notes.md
Automated kernel release from trunk.
- Version: \`${{ needs.release-meta.outputs.version }}\`
- Commit: [\`${{ github.sha }}\`](https://github.com/${{ github.repository }}/commit/${{ github.sha }})
EOF
- name: Create or update GitHub release
env:
GH_TOKEN: ${{ github.token }}
RELEASE_NAME: ${{ needs.release-meta.outputs.release_name }}
REPOSITORY: ${{ github.repository }}
TAG: ${{ needs.release-meta.outputs.tag }}
shell: bash
run: |
set -euo pipefail
if gh release view "${TAG}" --repo "${REPOSITORY}" >/dev/null 2>&1; then
gh release edit "${TAG}" \
--notes-file release-notes.md \
--repo "${REPOSITORY}" \
--title "${RELEASE_NAME}"
else
gh release create "${TAG}" \
--notes-file release-notes.md \
--repo "${REPOSITORY}" \
--target "${GITHUB_SHA}" \
--title "${RELEASE_NAME}"
fi
gh release upload "${TAG}" dist/* --clobber --repo "${REPOSITORY}"