-
Notifications
You must be signed in to change notification settings - Fork 0
201 lines (181 loc) · 7.3 KB
/
build_deb_package.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
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
name: Package OVIS-LDMS SlingShot Switch Sampler for Debian ARM64
on:
push:
branches: [ "debian", "tidy" ]
pull_request:
branches: [ "debian" ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
inputs:
logLevel:
description: 'Log level'
required: true
default: 'warning'
type: choice
options:
- info
- warning
- debug
print_tags:
description: 'True to print to STDOUT'
required: true
type: boolean
tags:
description: 'Test scenario tags'
required: true
type: string
environment:
description: 'Environment to run tests against'
type: environment
required: true
jobs:
build:
runs-on: ubuntu-20.04
env:
DOCKER_REGISTRY: docker.io
DOCKER_IMAGE: jkgreen76/ldms-slingshot-sampler
DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }}
DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }}
GPG_USERNAME: ${{ secrets.GPG_USERNAME }}
GPG_EMAIL: ${{ secrets.GPG_EMAIL }}
GPG_PASSWORD: ${{ secrets.GPG_PASSWORD }}
GPG_PUBLIC_KEY: ${{ secrets.GPG_PUBLIC_KEY }}
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
DOCKER_TARGET_PLATFORM: 'linux/arm64'
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: 'linux/arm64'
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
version: latest
- name: Prepare
if: success()
id: prepare
run: |
echo "docker_image=${DOCKER_REGISTRY}/${DOCKER_IMAGE}" >> "$GITHUB_OUTPUT"
echo "buildx_version=${GITHUB_RUN_NUMBER}" >> "$GITHUB_OUTPUT"
echo "docker_platform=${DOCKER_TARGET_PLATFORM}" >> "$GITHUB_OUTPUT"
echo ":white_check_mark: Prepare Step Successful" >> $GITHUB_STEP_SUMMARY
- name: Docker Login
if: success()
run: |
echo "${DOCKER_PASSWORD}" | docker login ${DOCKER_REGISTRY} --username "${DOCKER_USERNAME}" --password-stdin
echo ":white_check_mark: Docker Login Successful" >> $GITHUB_STEP_SUMMARY
- name: Build Debian Package
if: success()
run: |
docker buildx build \
--platform ${{ steps.prepare.outputs.docker_platform }} \
--tag ${{ steps.prepare.outputs.docker_image }} \
--provenance false \
--sbom false \
--file ./Dockerfile \
--output "type=image,push=true" .
echo ":white_check_mark: ovis-ldms_4.4.3-1_arm.deb created!" >> $GITHUB_STEP_SUMMARY
- name: Stage artifacts to bindmount
if: success()
run: |
mkdir -p ldms-slingshot-sampler
sudo chmod -R 777 $(pwd)/ldms-slingshot-sampler
docker run -i \
-v $(pwd)/ldms-slingshot-sampler:/ldms-slingshot-sampler:rw ${DOCKER_IMAGE} \
cp -Rf /ovis-ldms-debian-package/ovis-ldms_4.4.3-1_arm64.deb /ldms-slingshot-sampler/.
echo ":white_check_mark: Artifacts staged to bindmount" >> $GITHUB_STEP_SUMMARY
- name: list directory contents of ldms-slingshot-sampler
if: success()
run: |
ls -al ldms-slingshot-sampler
- name: 🔍 Check for dependencies
run: |
command -v apt-ftparchive || sudo apt install apt-utils
sudo apt-get install --reinstall ca-certificates
- name: Create APT repo
if: success()
run: |
set -e
do_hash() {
HASH_NAME=$1
HASH_CMD=$2
echo "${HASH_NAME}:"
for f in $(find -type f); do
f=$(echo $f | cut -c3-) # remove ./ prefix
if [ "$f" = "Release" ]; then
continue
fi
echo " $(${HASH_CMD} ${f} | cut -d" " -f1) $(wc -c $f)"
done
}
mkdir -p ovis-ldms/apt-repo/dists/stable/main/binary-arm64
mkdir -p ovis-ldms/apt-repo/pool/main
[ -f $(pwd)/ldms-slingshot-sampler/ovis-ldms_4.4.3-1_arm64.deb ]
cp $(pwd)/ldms-slingshot-sampler/ovis-ldms_4.4.3-1_arm64.deb ovis-ldms/apt-repo/pool/main/.
cd ovis-ldms/apt-repo
dpkg-scanpackages --arch arm64 pool/ > dists/stable/main/binary-arm64/Packages
cat dists/stable/main/binary-arm64/Packages | gzip -9 > dists/stable/main/binary-arm64/Packages.gz
cd dists/stable
cat << EOF > Release
Architectures: arm64
Components: main
Date: $(date -Ru)
Version: 4.4.3-1
Suite: stable
EOF
do_hash "MD5Sum" "md5sum" >> Release
do_hash "SHA1" "sha1sum" >> Release
do_hash "SHA256" "sha256sum" >> Release
cat Release
echo ":white_check_mark: APT Repo Creation Successful" >> $GITHUB_STEP_SUMMARY
- name: Import GPG key
if: success()
run: |
mkdir -p ~/.gnupg
chmod 0700 ~/.gnupg
echo "${GPG_PUBLIC_KEY}" > ~/.gnupg/public.key
echo "${GPG_PRIVATE_KEY}" > ~/.gnupg/private.key
chmod 0700 ~/.gnupg
chmod 0600 ~/.gnupg/*.key
gpg -v --batch --import ~/.gnupg/public.key
gpg -v --batch --import ~/.gnupg/private.key
echo ":white_check_mark: ### Private and Public GPG Keys imported" >> $GITHUB_STEP_SUMMARY
GPG_KEY=$(gpg --list-keys --keyid-format=long | grep "^pub"| awk '{print $2}' | awk -F'/' '{print $2}')
echo -e "$GPG_USERNAME\n$GPG_EMAIL\nNo Comment\no\n" | gpg --batch --command-fd 0 --expert --edit-key ${GPG_KEY} adduid | tee -a $GITHUB_STEP_SUMMARY
echo -e "5\ny\n" | gpg --batch --command-fd 0 --expert --edit-key ${GPG_KEY} trust | tee -a $GITHUB_STEP_SUMMARY
echo ":white_check_mark: ### GPG key edit adduid and trust complete" >> $GITHUB_STEP_SUMMARY
gpg --list-keys ${GPG_USERNAME} | tee -a $GITHUB_STEP_SUMMARY
cat ovis-ldms/apt-repo/dists/stable/Release | gpg --debug-all --default-key ${GPG_USERNAME} -abs > /ovis-ldms/apt-repo/dists/stable/Release.gpg
cat ovis-ldms/apt-repo/dists/stable/Release | gpg --debug-all --default-key ${GPG_USERNAME} -abs --clearsign > /ovis-ldms/apt-repo/dists/stable/InRelease
echo ":white_check_mark: ### Apt-repo signed" >> $GITHUB_STEP_SUMMARY
- name: Build Test Server
if: success()
run: |
docker buildx build \
--platform ${{ steps.prepare.outputs.docker_platform }} \
--tag arm64-ubuntu-apt-webserver \
--provenance false \
--sbom false \
--file ./test-apt-server/Dockerfile \
--output "type=image,push=true" .
echo ":white_check_mark: ### ubuntu-arm64-apt-webserver created!" >> $GITHUB_STEP_SUMMARY
# - name: Start Webserver
# if: success()
# users: hoverkraft-tech/compose-action@v2.0.1
# command -v python3 || apt-get update && apt-get install -y python3
# mkdir /www
# cp -Rf /ovis-ldms/apt-repo /www/apt-repo
# python3 -m "http.server"
# - name: Test APT repo
- name: Upload artifact
if: success()
uses: actions/upload-pages-artifact@v3.0.1
with:
name: ldms-slingshot-sampler
path: ldms-slingshot-sampler
- name: Artifact Upload
if: success()
run: |
echo "### ovis-ldms_4.4.3-1_arm.deb artifact uploaded! :rocket:" >> $GITHUB_STEP_SUMMARY