Skip to content

Commit e96740e

Browse files
committed
Test WF
Signed-off-by: bakhtin <a@bakhtin.net>
1 parent 74f752e commit e96740e

2 files changed

Lines changed: 132 additions & 1 deletion

File tree

.github/workflows/release-test.yml

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
name: release-test
2+
3+
on:
4+
push:
5+
workflow_dispatch: {}
6+
7+
jobs:
8+
build:
9+
name: build image
10+
runs-on: warp-ubuntu-latest-x64-32x
11+
permissions:
12+
contents: read
13+
packages: write
14+
steps:
15+
- uses: actions/checkout@v5
16+
17+
- name: Set up Docker image name
18+
run: |
19+
echo "CACHE_IMAGE=ghcr.io/$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')/mkosi-buildernet-cache:latest" >> $GITHUB_ENV
20+
21+
- name: Login to GitHub Container Registry
22+
uses: docker/login-action@v3
23+
with:
24+
registry: ghcr.io
25+
username: ${{ github.actor }}
26+
password: ${{ secrets.GITHUB_TOKEN }}
27+
28+
- name: Restore cache from GHCR
29+
run: |
30+
echo "Restoring cache from $CACHE_IMAGE..."
31+
if docker pull $CACHE_IMAGE; then
32+
container_id=$(docker create $CACHE_IMAGE)
33+
docker cp $container_id:/cache.tar .
34+
docker rm $container_id
35+
else
36+
echo "No cache found or failed to pull."
37+
fi
38+
39+
- name: Extract cache
40+
run: |
41+
if [[ -f cache.tar ]]; then
42+
sudo tar -xf cache.tar
43+
sudo rm -f cache.tar
44+
fi
45+
46+
- name: Install tools
47+
run: |
48+
sudo apt-get update && sudo apt-get install -y \
49+
debian-archive-keyring \
50+
minisign\
51+
rclone
52+
pip3 install git+https://github.com/systemd/mkosi.git@$(cat .mkosi_version)
53+
54+
- name: Create rclone config
55+
env:
56+
R2_FLASHBOTS_PUBLIC_ARTIFACTS_ACCESS_KEY: ${{ secrets.R2_FLASHBOTS_PUBLIC_ARTIFACTS_ACCESS_KEY }}
57+
R2_FLASHBOTS_PUBLIC_ARTIFACTS_SECRET_KEY: ${{ secrets.R2_FLASHBOTS_PUBLIC_ARTIFACTS_SECRET_KEY }}
58+
R2_FLASHBOTS_PUBLIC_ARTIFACTS_ENDPOINT: ${{ secrets.R2_FLASHBOTS_PUBLIC_ARTIFACTS_ENDPOINT }}
59+
run: |
60+
mkdir -p ~/.config/rclone
61+
cat << EOF > ~/.config/rclone/rclone.conf
62+
[r2-flashbots-public-artifacts]
63+
type = s3
64+
provider = Cloudflare
65+
66+
access_key_id = $R2_FLASHBOTS_PUBLIC_ARTIFACTS_ACCESS_KEY
67+
secret_access_key = $R2_FLASHBOTS_PUBLIC_ARTIFACTS_SECRET_KEY
68+
region = auto
69+
endpoint = $R2_FLASHBOTS_PUBLIC_ARTIFACTS_ENDPOINT
70+
acl = private
71+
EOF
72+
73+
- name: Enable user namespaces
74+
run: |
75+
sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
76+
77+
# - name: Build image
78+
# run: |
79+
# umask 022
80+
# mkosi --force -I buildernet.conf --image-version=${GITHUB_REF_NAME#buildernet-v}-${GITHUB_SHA::8}
81+
82+
83+
- name: Create mock paths to test cache
84+
run: |
85+
mkdir -p mkosi.builddir mkosi.cache mkosi.tools
86+
echo "mock data" | tee mkosi.builddir/mockfile.txt
87+
echo "mock data" | tee mkosi.cache/mockfile.txt
88+
echo "mock data" | tee mkosi.tools/mockfile.txt
89+
90+
- name: Prepare cache
91+
run: |
92+
sudo find . \( -name "mkosi.builddir" -o -name "mkosi.cache" -o -name "mkosi.tools" \) -type d -print0 | \
93+
sudo tar --null -rf cache.tar -T - 2>/dev/null || true
94+
95+
- name: Save cache to GHCR
96+
run: |
97+
if [[ -f cache.tar ]]; then
98+
echo "Saving cache to $CACHE_IMAGE..."
99+
# Ensure we can read the file
100+
sudo chown $(id -u):$(id -g) cache.tar
101+
102+
echo "FROM scratch" > Dockerfile.cache
103+
echo "COPY cache.tar /" >> Dockerfile.cache
104+
105+
docker build -f Dockerfile.cache -t $CACHE_IMAGE .
106+
docker push $CACHE_IMAGE
107+
fi
108+
109+
# - name: Generate SHA256 checksums
110+
# run: |
111+
# cd mkosi.output
112+
# sha256sum buildernet-*.{efi,tar.gz,vhd,qcow2} | tee buildernet-${GITHUB_REF_NAME#buildernet-v}-${GITHUB_SHA::8}.sha256
113+
114+
# - name: Sign artifacts
115+
# env:
116+
# MINISIGN_SECRET_KEY: ${{ secrets.MINISIGN_SECRET_KEY }}
117+
# MINISIGN_SECRET_KEY_PASSWORD: ${{ secrets.MINISIGN_SECRET_KEY_PASSWORD }}
118+
# run: |
119+
# mkdir -p ~/.minisign
120+
# echo "$MINISIGN_SECRET_KEY" > ~/.minisign/minisign.key
121+
# chmod 600 ~/.minisign/minisign.key
122+
# echo "$MINISIGN_SECRET_KEY_PASSWORD" | minisign -Sm mkosi.output/buildernet-${GITHUB_REF_NAME#buildernet-v}-${GITHUB_SHA::8}.sha256 \
123+
# -t "github.com/${GITHUB_REPOSITORY}/commit/${GITHUB_SHA}"
124+
125+
# - name: Upload to R2
126+
# run: |
127+
# rclone copy -P --retries 3 --retries-sleep 20s --error-on-no-transfer \
128+
# --s3-upload-concurrency=8 --transfers=8 --include "buildernet-*.{efi,tar.gz,vhd,qcow2,minisig,sha256}" \
129+
# mkosi.output r2-flashbots-public-artifacts:flashbots-public-artifacts/buildernet-images/${GITHUB_REF_NAME#buildernet-}/
130+

.github/workflows/release.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ jobs:
2020
path: |
2121
cache.tar
2222
key: mkosi-buildernet-${{ github.run_id }}
23-
restore-keys: mkosi-buildernet-
23+
restore-keys: |
24+
mkosi-buildernet-
2425
2526
- name: Extract cache
2627
run: |

0 commit comments

Comments
 (0)