-
Notifications
You must be signed in to change notification settings - Fork 9
130 lines (107 loc) · 3.35 KB
/
package-rpm.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
# yaml-language-server: $schema=https://json.schemastore.org/github-workflow.json
name: package-rpm
"on":
push:
paths:
- .github/actions/**
- .github/workflows/package-rpm.yml
- debian/**
- rpm/**
pull_request:
paths:
- .github/actions/**
- .github/workflows/package-rpm.yml
- debian/**
- rpm/**
release:
types: [published]
workflow_dispatch:
inputs:
release:
description: 'Debian package release number'
default: '1'
permissions: write-all
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CARGO_TERM_COLOR: always
CARGO_INCREMENTAL: 0
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse
RUST_BACKTRACE: 1
PROTOC_VERSION: "23.4"
jobs:
build-rpm:
name: "${{ matrix.distro }}:${{ matrix.version }} (${{ matrix.arch }})"
runs-on: buildjet-16vcpu-ubuntu-2204${{ matrix.arch == 'arm64' && '-arm' || '' }}
container: "${{ matrix.distro }}:${{ matrix.version }}"
strategy:
matrix:
# minimum kernel version is 5.5
include:
- { distro: rockylinux, version: 9, arch: x86_64 }
- { distro: rockylinux, version: 9, arch: arm64 }
fail-fast: false
steps:
- uses: actions/checkout@v4
- name: install rust
run: |
curl -sSf https://sh.rustup.rs | sh /dev/stdin -y
echo "PATH=$HOME/.cargo/bin:$PATH" >> "$GITHUB_ENV"
- name: install build dependencies
shell: bash
run: |
yum install -y gcc elfutils-devel clang
- uses: Swatinem/rust-cache@v2
with:
shared-key: build-rpm-${{ matrix.distro }}-${{ matrix.version}}-${{ matrix.arch }}
- name: install rpm packaging tool
run: cargo install cargo-generate-rpm
- name: check cargo
shell: bash
run: |
echo "::group::rustc -vV"
rustc -vV
echo "::endgroup::"
echo "::group::cargo -vV"
cargo -vV
echo "::endgroup::"
- name: set release env var
if: ${{ github.event_name == 'workflow_dispatch' }}
shell: bash
run: |
echo 'RELEASE=${{ github.event.inputs.release }}' >> $GITHUB_ENV
- name: build
shell: bash
run: |
cargo build --release --locked
- name: package
shell: bash
run: |
cargo generate-rpm
- uses: actions/upload-artifact@v4
with:
path: target/generate-rpm/*
name: ${{ matrix.distro }}_${{ matrix.version }}_${{ matrix.arch }}
upload-release-artifacts:
if: ${{ github.event_name == 'release' }}
runs-on: ubuntu-latest
needs:
- build-rpm
steps:
- uses: actions/checkout@v4
- uses: actions/[email protected]
with:
path: target/rpm/
- name: upload packages
shell: bash
run: |
set -x
shopt -s nullglob
mkdir -p target/artifacts
for artifact in target/rpm/**/*; do
name="$(basename "$artifact")"
directory="$(basename "$(dirname "$artifact")")"
distro="$(echo "$directory" | cut -d _ -f 1)"
version="$(echo "$directory" | cut -d _ -f 2)"
mv "$artifact" "target/artifacts/${distro}_${version}_${name}"
done
gh release upload "${{ github.event.release.tag_name }}" target/artifacts/*