Skip to content

Commit a47fc7d

Browse files
Fixed the security nightmare. Look through logs if you want to know.
1 parent 07bba2e commit a47fc7d

92 files changed

Lines changed: 4398 additions & 5672 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/build-32bit.yml

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
name: Build AcreetionOS32 32-bit ISO
2+
3+
on:
4+
schedule:
5+
- cron: '0 6 * * 1'
6+
workflow_dispatch:
7+
8+
permissions:
9+
contents: read
10+
11+
concurrency:
12+
group: build-32bit-${{ github.sha }}
13+
cancel-in-progress: false
14+
15+
jobs:
16+
build:
17+
runs-on: ubuntu-latest
18+
steps:
19+
- uses: actions/checkout@v4
20+
21+
- name: Checkout edition repo
22+
uses: actions/checkout@v4
23+
with:
24+
repository: spivanatalie64/acreetionos32
25+
path: src
26+
27+
- name: Apply AcreetionOS branding and repos
28+
run: |
29+
# Remove sudo from build.sh (not needed in Docker)
30+
sed -i 's/sudo //g' src/build.sh 2>/dev/null || true
31+
# Set ISO volume label to show AcreetionOS edition name
32+
sed -i 's/iso_label=.*/iso_label="AcreetionOS32"/' src/profiledef.sh 2>/dev/null || true
33+
sed -i 's/iso_name=.*/iso_name="AcreetionOS32"/' src/profiledef.sh 2>/dev/null || true
34+
sed -i 's/iso_publisher=.*/iso_publisher="AcreetionOS Project <https:\/\/acreetionos.org>"/' src/profiledef.sh 2>/dev/null || true
35+
sed -i 's/iso_application=.*/iso_application="AcreetionOS Linux Distribution"/' src/profiledef.sh 2>/dev/null || true
36+
37+
38+
- name: Write build start status
39+
id: start
40+
env:
41+
CF_ACCOUNT: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
42+
CF_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
43+
run: |
44+
SLUG="32bit"
45+
DATE_TAG=$(date +%Y%m%d)
46+
echo "slug=${SLUG}" >> $GITHUB_OUTPUT
47+
echo "date_tag=${DATE_TAG}" >> $GITHUB_OUTPUT
48+
ISO_NAME="32bit-${DATE_TAG}.iso"
49+
echo "iso_name=${ISO_NAME}" >> $GITHUB_OUTPUT
50+
STATUS='{"edition":"32-bit","slug":"'${SLUG}'","status":"building","started":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","run_url":"https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}","output":"AcreetionOS32-latest.iso","iso_name":"'${ISO_NAME}'","desktop":"Cinnamon","display":"XLibre","arch":"i686"}'
51+
echo "$STATUS" > /tmp/build-status.json
52+
if [ -n "$CF_TOKEN" ]; then
53+
curl -s -X PUT "https://api.cloudflare.com/client/v4/accounts/$CF_ACCOUNT/r2/buckets/build-status/objects/${SLUG}-status.json" -H "Authorization: Bearer $CF_TOKEN" --data-binary @/tmp/build-status.json -H "Content-Type: application/json" || true
54+
fi
55+
56+
- name: Build ISO in Docker
57+
id: build
58+
run: |
59+
mkdir -p /tmp/iso
60+
SLUG="32bit"
61+
docker run --privileged --rm \
62+
-v $PWD/src:/workspace \
63+
archlinux@sha256:fb47d15e0fd28369c700edcfa46dd44e234d8ab6fee9627ee5f1ead5f1fc6c21 \
64+
bash -c '
65+
pacman -Syu --noconfirm archiso grub && \
66+
cd /workspace && \
67+
chmod +x *.sh 2>/dev/null; \
68+
bash build.sh 2>&1 || { echo "BUILD_FAILED"; exit 1; }
69+
' 2>&1 | tee /tmp/build.log
70+
find / -name '*.iso' -maxdepth 5 | head -5
71+
ls -la src/out/ 2>/dev/null && cp src/out/*.iso /tmp/iso/ 2>/dev/null || true
72+
find / -name '*.iso' -maxdepth 5 2>/dev/null | head -5
73+
ls -la /tmp/iso/ 2>/dev/null || echo "No ISO found"
74+
if [ -z "$(ls /tmp/iso/*.iso 2>/dev/null)" ]; then
75+
echo "BUILD_FAILED"
76+
echo "build_ok=false" >> $GITHUB_OUTPUT
77+
else
78+
echo "BUILD_OK"
79+
echo "build_ok=true" >> $GITHUB_OUTPUT
80+
fi
81+
82+
- name: Upload build log to R2
83+
if: always()
84+
env:
85+
CF_ACCOUNT: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
86+
CF_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
87+
run: |
88+
SLUG="32bit"
89+
LOG_KEY="${SLUG}-build.log"
90+
if [ -n "$CF_TOKEN" ] && [ -f /tmp/build.log ]; then
91+
curl -s -X PUT "https://api.cloudflare.com/client/v4/accounts/$CF_ACCOUNT/r2/buckets/build-status/objects/${LOG_KEY}" -H "Authorization: Bearer $CF_TOKEN" --data-binary @/tmp/build.log -H "Content-Type: text/plain" || echo "Log upload failed"
92+
fi
93+
94+
- name: Prepare ISO for upload
95+
id: iso
96+
if: steps.build.outputs.build_ok == 'true'
97+
run: |
98+
ISO=$(ls /tmp/iso/*.iso 2>/dev/null | head -1)
99+
if [ -z "$ISO" ]; then
100+
find / -name '*.iso' -maxdepth 5 -exec cp {} /tmp/iso/ \; 2>/dev/null || true
101+
ISO=$(ls /tmp/iso/*.iso 2>/dev/null | head -1)
102+
fi
103+
if [ -n "$ISO" ]; then
104+
FINAL="${{ steps.start.outputs.iso_name }}"
105+
cp "$ISO" "/tmp/${FINAL}"
106+
echo "iso_path=/tmp/${FINAL}" >> $GITHUB_OUTPUT
107+
echo "iso_name=${FINAL}" >> $GITHUB_OUTPUT
108+
echo "ok=true" >> $GITHUB_OUTPUT
109+
else
110+
echo "ok=false" >> $GITHUB_OUTPUT
111+
fi
112+
113+
- name: Upload ISO to all mirrors
114+
if: steps.iso.outputs.ok == 'true'
115+
env:
116+
CF_ACCOUNT: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
117+
CF_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
118+
run: |
119+
bash scripts/upload-iso.sh \
120+
"${{ steps.iso.outputs.iso_path }}" \
121+
"32bit" \
122+
"${{ steps.start.outputs.date_tag }}"
123+
124+
- name: Update build status in R2
125+
if: always()
126+
env:
127+
CF_ACCOUNT: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
128+
CF_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
129+
run: |
130+
SLUG="32bit"
131+
if [ "${{ steps.iso.outputs.ok }}" = "true" ]; then
132+
STATUS='{"edition":"32-bit","slug":"'${SLUG}'","status":"success","finished":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","run_url":"https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}","iso_name":"${{ steps.iso.outputs.iso_name }}","download_url":"https://pub-173a1f638a3b4c95b5f58b09c0b968aa.r2.dev/${{ steps.iso.outputs.iso_name }}"}'
133+
else
134+
STATUS='{"edition":"32-bit","slug":"'${SLUG}'","status":"failed","finished":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","run_url":"https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}","desktop":"Cinnamon","display":"XLibre","arch":"i686"}'
135+
fi
136+
echo "$STATUS" > /tmp/build-status.json
137+
if [ -n "$CF_TOKEN" ]; then
138+
curl -s -X PUT "https://api.cloudflare.com/client/v4/accounts/$CF_ACCOUNT/r2/buckets/build-status/objects/${SLUG}-status.json" -H "Authorization: Bearer $CF_TOKEN" --data-binary @/tmp/build-status.json -H "Content-Type: application/json" || true
139+
fi

.github/workflows/build-gnome.yml

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
name: Build AcreetionOS GNOME ISO
2+
3+
on:
4+
schedule:
5+
- cron: '0 6 * * 1'
6+
workflow_dispatch:
7+
8+
permissions:
9+
contents: read
10+
11+
concurrency:
12+
group: build-gnome-${{ github.sha }}
13+
cancel-in-progress: false
14+
15+
jobs:
16+
build:
17+
runs-on: ubuntu-latest
18+
steps:
19+
- uses: actions/checkout@v4
20+
21+
- name: Checkout edition repo
22+
uses: actions/checkout@v4
23+
with:
24+
repository: spivanatalie64/acreetionos-gnome
25+
path: src
26+
27+
- name: Apply AcreetionOS branding and repos
28+
run: |
29+
# Remove sudo from build.sh (not needed in Docker)
30+
sed -i 's/sudo //g' src/build.sh 2>/dev/null || true
31+
# Set ISO volume label to show AcreetionOS edition name
32+
sed -i 's/iso_label=.*/iso_label="AcreetionOS GNOME"/' src/profiledef.sh 2>/dev/null || true
33+
sed -i 's/iso_name=.*/iso_name="AcreetionOS GNOME"/' src/profiledef.sh 2>/dev/null || true
34+
sed -i 's/iso_publisher=.*/iso_publisher="AcreetionOS Project <https:\/\/acreetionos.org>"/' src/profiledef.sh 2>/dev/null || true
35+
sed -i 's/iso_application=.*/iso_application="AcreetionOS Linux Distribution"/' src/profiledef.sh 2>/dev/null || true
36+
37+
38+
- name: Write build start status
39+
id: start
40+
env:
41+
CF_ACCOUNT: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
42+
CF_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
43+
run: |
44+
SLUG="gnome"
45+
DATE_TAG=$(date +%Y%m%d)
46+
echo "slug=${SLUG}" >> $GITHUB_OUTPUT
47+
echo "date_tag=${DATE_TAG}" >> $GITHUB_OUTPUT
48+
ISO_NAME="gnome-${DATE_TAG}.iso"
49+
echo "iso_name=${ISO_NAME}" >> $GITHUB_OUTPUT
50+
STATUS='{"edition":"GNOME","slug":"'${SLUG}'","status":"building","started":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","run_url":"https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}","output":"AcreetionOS-GNOME-latest.iso","iso_name":"'${ISO_NAME}'","desktop":"GNOME","display":"Wayland","arch":"x86_64"}'
51+
echo "$STATUS" > /tmp/build-status.json
52+
if [ -n "$CF_TOKEN" ]; then
53+
curl -s -X PUT "https://api.cloudflare.com/client/v4/accounts/$CF_ACCOUNT/r2/buckets/build-status/objects/${SLUG}-status.json" -H "Authorization: Bearer $CF_TOKEN" --data-binary @/tmp/build-status.json -H "Content-Type: application/json" || true
54+
fi
55+
56+
- name: Build ISO in Docker
57+
id: build
58+
run: |
59+
mkdir -p /tmp/iso
60+
SLUG="gnome"
61+
docker run --privileged --rm \
62+
-v $PWD/src:/workspace \
63+
archlinux@sha256:fb47d15e0fd28369c700edcfa46dd44e234d8ab6fee9627ee5f1ead5f1fc6c21 \
64+
bash -c '
65+
pacman -Syu --noconfirm archiso grub && \
66+
cd /workspace && \
67+
chmod +x *.sh 2>/dev/null; \
68+
bash build.sh 2>&1 || { echo "BUILD_FAILED"; exit 1; }
69+
' 2>&1 | tee /tmp/build.log
70+
find / -name '*.iso' -maxdepth 5 | head -5
71+
ls -la src/out/ 2>/dev/null && cp src/out/*.iso /tmp/iso/ 2>/dev/null || true
72+
find / -name '*.iso' -maxdepth 5 2>/dev/null | head -5
73+
ls -la /tmp/iso/ 2>/dev/null || echo "No ISO found"
74+
if [ -z "$(ls /tmp/iso/*.iso 2>/dev/null)" ]; then
75+
echo "BUILD_FAILED"
76+
echo "build_ok=false" >> $GITHUB_OUTPUT
77+
else
78+
echo "BUILD_OK"
79+
echo "build_ok=true" >> $GITHUB_OUTPUT
80+
fi
81+
82+
- name: Upload build log to R2
83+
if: always()
84+
env:
85+
CF_ACCOUNT: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
86+
CF_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
87+
run: |
88+
SLUG="gnome"
89+
LOG_KEY="${SLUG}-build.log"
90+
if [ -n "$CF_TOKEN" ] && [ -f /tmp/build.log ]; then
91+
curl -s -X PUT "https://api.cloudflare.com/client/v4/accounts/$CF_ACCOUNT/r2/buckets/build-status/objects/${LOG_KEY}" -H "Authorization: Bearer $CF_TOKEN" --data-binary @/tmp/build.log -H "Content-Type: text/plain" || echo "Log upload failed"
92+
fi
93+
94+
- name: Prepare ISO for upload
95+
id: iso
96+
if: steps.build.outputs.build_ok == 'true'
97+
run: |
98+
ISO=$(ls /tmp/iso/*.iso 2>/dev/null | head -1)
99+
if [ -z "$ISO" ]; then
100+
find / -name '*.iso' -maxdepth 5 -exec cp {} /tmp/iso/ \; 2>/dev/null || true
101+
ISO=$(ls /tmp/iso/*.iso 2>/dev/null | head -1)
102+
fi
103+
if [ -n "$ISO" ]; then
104+
FINAL="${{ steps.start.outputs.iso_name }}"
105+
cp "$ISO" "/tmp/${FINAL}"
106+
echo "iso_path=/tmp/${FINAL}" >> $GITHUB_OUTPUT
107+
echo "iso_name=${FINAL}" >> $GITHUB_OUTPUT
108+
echo "ok=true" >> $GITHUB_OUTPUT
109+
else
110+
echo "ok=false" >> $GITHUB_OUTPUT
111+
fi
112+
113+
- name: Upload ISO to all mirrors
114+
if: steps.iso.outputs.ok == 'true'
115+
env:
116+
CF_ACCOUNT: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
117+
CF_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
118+
run: |
119+
bash scripts/upload-iso.sh \
120+
"${{ steps.iso.outputs.iso_path }}" \
121+
"gnome" \
122+
"${{ steps.start.outputs.date_tag }}"
123+
124+
- name: Update build status in R2
125+
if: always()
126+
env:
127+
CF_ACCOUNT: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
128+
CF_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
129+
run: |
130+
SLUG="gnome"
131+
if [ "${{ steps.iso.outputs.ok }}" = "true" ]; then
132+
STATUS='{"edition":"GNOME","slug":"'${SLUG}'","status":"success","finished":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","run_url":"https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}","iso_name":"${{ steps.iso.outputs.iso_name }}","download_url":"https://pub-173a1f638a3b4c95b5f58b09c0b968aa.r2.dev/${{ steps.iso.outputs.iso_name }}"}'
133+
else
134+
STATUS='{"edition":"GNOME","slug":"'${SLUG}'","status":"failed","finished":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","run_url":"https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}","desktop":"GNOME","display":"Wayland","arch":"x86_64"}'
135+
fi
136+
echo "$STATUS" > /tmp/build-status.json
137+
if [ -n "$CF_TOKEN" ]; then
138+
curl -s -X PUT "https://api.cloudflare.com/client/v4/accounts/$CF_ACCOUNT/r2/buckets/build-status/objects/${SLUG}-status.json" -H "Authorization: Bearer $CF_TOKEN" --data-binary @/tmp/build-status.json -H "Content-Type: application/json" || true
139+
fi

0 commit comments

Comments
 (0)