-
Notifications
You must be signed in to change notification settings - Fork 22
161 lines (152 loc) · 6.16 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
name: release
on:
push:
tags:
# - "v[0-9]+.[0-9]+.[0-9]+"
permissions:
contents: write
jobs:
create-release:
strategy:
matrix:
os: [ubuntu-22.04]
runs-on: ${{ matrix.os }}
name: create-release
steps:
- uses: actions/checkout@v4
- name: Get the tag name
if: env.VERSION == ''
run: echo "VERSION=${{ github.ref_name }}" >> $GITHUB_ENV
- name: Print Version
run: echo "$VERSION"
- name: Print Cargo Version
run: cargo -V
- name: Package Version
run: echo "PKG_VER=$(cargo metadata --no-deps --format-version 1 | jq '.packages[0].version' | head -n 1)" >> $GITHUB_ENV
- name: Print Package Version
run: echo "$PKG_VER"
- name: Check Version
run: |
if ! [ "$PKG_VER" == "${VERSION#v}" ]; then
echo "version does not match tag"
# exit 1
fi
- name: Create release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# run: gh release create $VERSION --draft --verify-tag --title $VERSION
run: gh release create $VERSION --draft --title $VERSION
outputs:
version: ${{ env.VERSION }}
pkg_ver: ${{ env.PKG_VER }}
build:
name: build
needs: ['create-release']
env:
APPIMAGETOOL: tools/appimagetool
VERSION: ${{needs.create-release.outputs.version}}
PKG_VER: ${{needs.create-release.outputs.pkg_ver}}
strategy:
matrix:
os: [ubuntu-22.04, ubuntu-22.04-arm]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Runner Arch
run: |
# https://stackoverflow.com/questions/52996949/how-can-i-find-the-current-rust-compilers-default-llvm-target-triple
echo "RUSTC_HOST_ARCH=$(rustc -vV | sed -n 's|host: ||p')" >> $GITHUB_ENV
- name: Print Runner Arch
run: echo "$RUSTC_HOST_ARCH"
- name: Check Version env
run: |
if [ "$PKG_VER" == "" ]; then
exit 1
fi
if [ "$VERSION" == "" ]; then
exit 1
fi
- name: Install
run: |
sudo apt update
sudo apt install libdrm-dev mold desktop-file-utils appstream
- name: Download appimagetool
run: |
mkdir tools
if [ "${RUSTC_HOST_ARCH}" == "x86_64-unknown-linux-gnu" ]; then
curl -o $APPIMAGETOOL -L -O https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage
else
curl -o $APPIMAGETOOL -L -O https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-aarch64.AppImage
fi
chmod +x $APPIMAGETOOL
- name: Install cargo-deb
run: mold -run cargo install cargo-deb
- name: Install cargo-generate-rpm
run: mold -run cargo install cargo-generate-rpm
- name: Install cargo-appimage
run: mold -run cargo install cargo-appimage
- name: Build binary
run: mold -run cargo build --release --no-default-features --features="package"
- name: Upload binary
shell: bash
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
if [ "${RUSTC_HOST_ARCH}" == "x86_64-unknown-linux-gnu" ]; then
cp ./target/release/amdgpu_top ./
tar czf "amdgpu_top-${{ env.PKG_VER }}-x86_64-unknown-linux-gnu.tar.gz" amdgpu_top
gh release upload --clobber "$VERSION" "amdgpu_top-${{ env.PKG_VER }}-x86_64-unknown-linux-gnu.tar.gz"
else
cp ./target/release/amdgpu_top ./
tar czf "amdgpu_top-${{ env.PKG_VER }}-aarch64-unknown-linux-gnu.tar.gz" amdgpu_top
gh release upload --clobber "$VERSION" "amdgpu_top-${{ env.PKG_VER }}-aarch64-unknown-linux-gnu.tar.gz"
fi
- name: Build Deb Package
shell: bash
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
mold -run cargo deb -- --no-default-features --features="package"
if [ "${RUSTC_HOST_ARCH}" == "x86_64-unknown-linux-gnu" ]; then
gh release upload --clobber "$VERSION" ./target/debian/amdgpu-top_${{ env.PKG_VER }}-1_amd64.deb
else
gh release upload --clobber "$VERSION" ./target/debian/amdgpu-top_${{ env.PKG_VER }}-1_arm64.deb
fi
- name: Build RPM Pakcage
shell: bash
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
mold -run cargo generate-rpm
if [ "${RUSTC_HOST_ARCH}" == "x86_64-unknown-linux-gnu" ]; then
gh release upload --clobber "$VERSION" ./target/generate-rpm/amdgpu_top-${{ env.PKG_VER }}-1.x86_64.rpm
else
gh release upload --clobber "$VERSION" ./target/generate-rpm/amdgpu_top-${{ env.PKG_VER }}-1.aarch64.rpm
fi
- name: Build AppImage
shell: bash
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
PATH=$PATH:$PWD/tools/
mold -run cargo appimage --no-default-features --features="package"
if [ "${RUSTC_HOST_ARCH}" == "x86_64-unknown-linux-gnu" ]; then
cp ./target/appimage/amdgpu_top.AppImage amdgpu_top-x86_64.AppImage
gh release upload --clobber "$VERSION" amdgpu_top-x86_64.AppImage
else
cp ./target/appimage/amdgpu_top.AppImage amdgpu_top-aarch64.AppImage
gh release upload --clobber "$VERSION" amdgpu_top-aarch64.AppImage
fi
- name: Build Deb Package without GUI
shell: bash
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
mold -run cargo deb -- --no-default-features --features="tui, json"
if [ "${RUSTC_HOST_ARCH}" == "x86_64-unknown-linux-gnu" ]; then
mv ./target/debian/amdgpu-top{,_without_gui}_${{ env.PKG_VER }}-1_amd64.deb
gh release upload --clobber "$VERSION" ./target/debian/amdgpu-top_without_gui_${{ env.PKG_VER }}-1_amd64.deb
else
mv ./target/debian/amdgpu-top{,_without_gui}_${{ env.PKG_VER }}-1_arm64.deb
gh release upload --clobber "$VERSION" ./target/debian/amdgpu-top_without_gui_${{ env.PKG_VER }}-1_arm64.deb
fi