Skip to content

Commit aa222df

Browse files
Merge pull request #50 from Githubguy132010/revert-49-WFRework
Revert "chore: remove outdated workflows and validation steps from GitHub Actions."
2 parents fd946a5 + 1651659 commit aa222df

File tree

4 files changed

+365
-49
lines changed

4 files changed

+365
-49
lines changed

β€Ž.github/workflows/build-check.yamlβ€Ž

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,36 @@ jobs:
2323
- name: Checkout Repository
2424
uses: actions/checkout@v4
2525

26+
- name: Validate package list
27+
run: |
28+
# Check if package list exists
29+
if [ ! -f packages.x86_64 ]; then
30+
echo "::error::packages.x86_64 file not found"
31+
exit 1
32+
fi
33+
34+
# Check for duplicate packages
35+
sort packages.x86_64 | uniq -d > duplicates.txt
36+
if [ -s duplicates.txt ]; then
37+
echo "::error::Duplicate packages found:"
38+
cat duplicates.txt
39+
exit 1
40+
fi
41+
42+
# Validate package names exist in Arch repos
43+
docker run --rm -v "${{ github.workspace }}/packages.x86_64:/packages.x86_64:ro" archlinux:latest bash -c "
44+
set -euo pipefail
45+
pacman -Syu --noconfirm
46+
while read -r pkg; do
47+
[[ \$pkg =~ ^# ]] && continue
48+
[[ -z \$pkg ]] && continue
49+
if ! pacman -Si \$pkg >/dev/null 2>&1; then
50+
echo \"::error::Package not found: \$pkg\"
51+
exit 1
52+
fi
53+
done < /packages.x86_64
54+
"
55+
2656
security-scan:
2757
runs-on: ubuntu-latest
2858
steps:
@@ -53,6 +83,14 @@ jobs:
5383
- name: Checkout Repository
5484
uses: actions/checkout@v4
5585

86+
- name: Cache Pacman packages
87+
uses: actions/cache@v4
88+
with:
89+
path: ${{ env.PACMAN_CACHE }}
90+
key: pacman-${{ runner.os }}-${{ github.sha }}
91+
restore-keys: |
92+
pacman-${{ runner.os }}-
93+
5694
- name: Set up Arch Linux Container
5795
run: |
5896
mkdir -p ${{ env.PACMAN_CACHE }}

β€Ž.github/workflows/build.yamlβ€Ž

Lines changed: 70 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,24 @@ jobs:
3030
run: |
3131
echo "DATE=$(date +'%Y-%m-%d')" >> $GITHUB_ENV
3232
echo "VERSION=$(date +'%Y.%m.%d')" >> $GITHUB_ENV
33+
echo "CACHE_KEY=$(date +'%Y-%m')" >> $GITHUB_ENV
3334
echo "WORKSPACE=${GITHUB_WORKSPACE}" >> $GITHUB_ENV
3435
36+
- name: Create Cache Directories
37+
run: |
38+
sudo mkdir -p /tmp/pacman-cache
39+
sudo chmod 777 /tmp/pacman-cache
40+
# Ensure the directory is empty to prevent tar errors
41+
sudo rm -rf /tmp/pacman-cache/*
42+
43+
- name: Cache Pacman packages
44+
uses: actions/cache@v4
45+
with:
46+
path: /tmp/pacman-cache
47+
key: pacman-${{ runner.os }}-${{ env.CACHE_KEY }}
48+
restore-keys: |
49+
pacman-${{ runner.os }}-
50+
3551
- name: Set up Arch Linux Container
3652
run: |
3753
docker run --privileged --name arch-container -d \
@@ -117,81 +133,86 @@ jobs:
117133
done
118134
"
119135
120-
- name: Clean Up
121-
if: always()
122-
run: |
123-
if docker ps -a | grep -q arch-container; then
124-
docker stop arch-container || true
125-
docker rm -f arch-container || true
126-
fi
127-
sudo rm -rf workdir/ out/ /tmp/pacman-cache/*
128-
129-
create-release:
130-
needs: build
131-
if: github.ref == 'refs/heads/main'
132-
runs-on: ubuntu-latest
133-
steps:
134-
- name: Checkout Repository
135-
uses: actions/checkout@v4
136-
with:
137-
fetch-depth: 0 # Nodig voor git history
138-
139136
- name: Generate Release Notes
140137
id: release_notes
141138
run: |
142139
# Create a temporary file for release notes
143140
TEMP_RELEASE_NOTES=$(mktemp)
144141
145-
{
146-
echo "πŸš€ Arch Linux ISO without system beeps (build ${{ env.DATE }})"
147-
echo ""
148-
echo "### Changes"
142+
docker exec arch-container bash -c "
143+
set -euo pipefail
144+
cd /workdir
149145
150-
# Get changes since last release
151-
if git tag | grep -q .; then
152-
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo '')
153-
if [ ! -z "$LAST_TAG" ]; then
154-
echo "#### Commits since last release:"
155-
git log "$LAST_TAG"..HEAD --pretty=format:'- %s' | grep -v 'Merge'
156-
echo ""
146+
# Initialize release notes
147+
{
148+
echo 'πŸš€ Arch Linux ISO without system beeps (build ${{ env.DATE }})'
149+
echo ''
150+
echo '### Changes'
151+
152+
# Get changes since last release
153+
if git tag | grep -q .; then
154+
LAST_TAG=\$(git describe --tags --abbrev=0 2>/dev/null || echo '')
155+
if [ ! -z \"\$LAST_TAG\" ]; then
156+
echo '#### Commits since last release:'
157+
git log \"\$LAST_TAG\"..HEAD --pretty=format:'- %s' | grep -v 'Merge'
158+
echo ''
159+
fi
157160
fi
158-
fi
159-
160-
echo "### Download"
161-
echo "- Download the ISO and verify checksums before use"
162-
echo ""
163-
echo "### Checksums"
164-
echo "SHA256 and SHA512 checksums are available in the uploaded files."
165-
} > $TEMP_RELEASE_NOTES
161+
162+
# Add standard information
163+
echo '### Features'
164+
echo '- Automatic daily build'
165+
echo '- System beeps disabled'
166+
echo '- ISO SHA256 and SHA512 checksums included'
167+
echo ''
168+
echo '### Download'
169+
echo '- Download the ISO and verify checksums before use'
170+
echo ''
171+
echo '### Checksums'
172+
echo 'SHA256 and SHA512 checksums are available in the uploaded files.'
173+
} > /tmp/release_notes
174+
"
175+
176+
# Copy release notes from container to host
177+
docker cp arch-container:/tmp/release_notes $TEMP_RELEASE_NOTES
166178
167-
echo "RELEASE_NOTES<<EOF" >> $GITHUB_ENV
179+
# Set the release notes in GITHUB_ENV
180+
echo 'RELEASE_NOTES<<EOF' >> $GITHUB_ENV
168181
cat $TEMP_RELEASE_NOTES >> $GITHUB_ENV
169-
echo "EOF" >> $GITHUB_ENV
182+
echo 'EOF' >> $GITHUB_ENV
170183
184+
# Cleanup
171185
rm -f $TEMP_RELEASE_NOTES
172186
173187
- name: Create Release
188+
id: create_release
174189
uses: softprops/action-gh-release@v2
190+
if: github.ref == 'refs/heads/main'
175191
with:
176192
tag_name: v${{ env.VERSION }}
177-
name: "Arch Linux without the beeps v${{ env.VERSION }}"
193+
name: "Arch Linux No Beeps v${{ env.VERSION }}"
178194
body: ${{ env.RELEASE_NOTES }}
179195
draft: false
180196
prerelease: false
181197
files: |
182198
${{ env.WORKSPACE }}/out/*.iso
183199
${{ env.WORKSPACE }}/out/*.sha*sum
184200
185-
upload-logs:
186-
needs: build
187-
if: failure()
188-
runs-on: ubuntu-latest
189-
steps:
190-
- name: Upload Build Logs
191-
uses: actions/upload-artifact@v4
201+
- name: Clean Up
202+
if: always()
203+
run: |
204+
if docker ps -a | grep -q arch-container; then
205+
docker stop arch-container || true
206+
docker rm -f arch-container || true
207+
fi
208+
sudo rm -rf workdir/ out/ /tmp/pacman-cache/*
209+
210+
- name: Upload Build Logs on Failure
211+
if: failure()
212+
uses: actions/upload-artifact@v4 # Upgrade to v4
192213
with:
193214
name: build-logs
194215
path: |
195216
${{ env.WORKSPACE }}/build.log
196217
retention-days: 5
197-
compression-level: 9
218+
compression-level: 9 # Maximum compression for logs
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
name: Update Documentation
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
- dev
8+
paths:
9+
- 'packages.x86_64'
10+
- 'airootfs/**'
11+
- '.github/workflows/**'
12+
workflow_dispatch:
13+
14+
jobs:
15+
update-docs:
16+
runs-on: ubuntu-latest
17+
permissions:
18+
contents: write
19+
pull-requests: write
20+
21+
steps:
22+
- name: Checkout Repository
23+
uses: actions/checkout@v4
24+
25+
- name: Set up Python
26+
uses: actions/setup-python@v5
27+
with:
28+
python-version: '3.x'
29+
30+
- name: Install Dependencies
31+
run: |
32+
python -m pip install --upgrade pip
33+
pip install PyYAML markdown
34+
35+
- name: Generate Package List Documentation
36+
run: |
37+
echo "## πŸ“¦ Installed Packages" > packages_doc.md
38+
echo "" >> packages_doc.md
39+
echo "This ISO contains the following packages:" >> packages_doc.md
40+
echo "" >> packages_doc.md
41+
echo "| Package | Description |" >> packages_doc.md
42+
echo "|---------|-------------|" >> packages_doc.md
43+
44+
# Set up Docker container for package info
45+
docker run --name arch-container -d archlinux:latest sleep infinity
46+
docker exec arch-container pacman -Sy
47+
48+
while read -r pkg; do
49+
# Skip comments and empty lines
50+
[[ "$pkg" =~ ^#.*$ ]] && continue
51+
[[ -z "$pkg" ]] && continue
52+
53+
# Get package description
54+
desc=$(docker exec arch-container bash -c "pacman -Si $pkg 2>/dev/null | grep Description | cut -d: -f2- || echo 'No description available'")
55+
echo "| \`$pkg\` | ${desc:-No description available} |" >> packages_doc.md
56+
done < packages.x86_64
57+
58+
docker stop arch-container
59+
docker rm arch-container
60+
61+
- name: Update README
62+
run: |
63+
# Backup current README
64+
cp README.md README.md.bak
65+
66+
# Update package section in README
67+
awk '
68+
/## πŸ“¦ Installed Packages/,/##/ { next }
69+
/## πŸ“¦ Installed Packages/ {
70+
print
71+
system("cat packages_doc.md")
72+
next
73+
}
74+
{ print }
75+
' README.md.bak > README.md
76+
77+
# Clean up
78+
rm README.md.bak packages_doc.md
79+
80+
- name: Generate Workflow Documentation
81+
run: |
82+
echo "## πŸ”„ Automated Workflows" > workflows_doc.md
83+
echo "" >> workflows_doc.md
84+
echo "This project uses the following GitHub Actions workflows:" >> workflows_doc.md
85+
echo "" >> workflows_doc.md
86+
87+
for workflow in .github/workflows/*.yaml; do
88+
name=$(grep "^name:" "$workflow" | head -n1 | cut -d: -f2- | xargs)
89+
echo "### $name" >> workflows_doc.md
90+
echo "" >> workflows_doc.md
91+
echo "File: \`$(basename "$workflow")\`" >> workflows_doc.md
92+
echo "" >> workflows_doc.md
93+
94+
# Extract description based on triggers
95+
echo "Triggered by:" >> workflows_doc.md
96+
if grep -q "workflow_dispatch:" "$workflow"; then
97+
echo "- πŸ”˜ Manual trigger" >> workflows_doc.md
98+
fi
99+
if grep -q "schedule:" "$workflow"; then
100+
cron=$(grep -A1 "schedule:" "$workflow" | grep "cron:" | cut -d"'" -f2)
101+
echo "- ⏰ Scheduled: \`$cron\`" >> workflows_doc.md
102+
fi
103+
if grep -q "push:" "$workflow"; then
104+
echo "- πŸ“€ Push to repository" >> workflows_doc.md
105+
fi
106+
if grep -q "pull_request:" "$workflow"; then
107+
echo "- πŸ”„ Pull request" >> workflows_doc.md
108+
fi
109+
echo "" >> workflows_doc.md
110+
done
111+
112+
- name: Create Pull Request
113+
uses: peter-evans/create-pull-request@v7
114+
with:
115+
token: ${{ secrets.GITHUB_TOKEN }}
116+
commit-message: "docs: update automated documentation"
117+
title: "πŸ“š Documentation Update"
118+
body: |
119+
πŸ”„ Automated documentation update
120+
121+
This PR includes:
122+
- Updated package list
123+
- Updated workflow documentation
124+
- General documentation improvements
125+
126+
This PR was automatically generated by the update-docs workflow.
127+
branch: update-documentation
128+
base: ${{ github.ref_name }}
129+
labels: |
130+
documentation
131+
automated
132+
draft: false

0 commit comments

Comments
Β (0)