Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
404b8d0
part1
divanshu-go Jan 7, 2026
241576a
part2
divanshu-go Jan 7, 2026
c211b2d
part3
Jan 8, 2026
5aea666
part4
Jan 9, 2026
4e631aa
part5
Jan 10, 2026
82ebb7a
part6
Jan 11, 2026
72f6fd6
Refactor Makefile and scripts for improved build process
Jan 11, 2026
d1e1a2c
Enhance GitHub Actions workflow for ISO and branding package builds
Jan 11, 2026
aac8af0
Update GitHub Actions workflow to enhance dependency management and s…
Jan 11, 2026
2882c18
Update GitHub Actions workflow to include 'make' in dependency instal…
Jan 11, 2026
922ee06
Disable Cortex APT repository configuration in the chroot hook until …
Jan 11, 2026
b304e3c
Update Cortex GRUB theme for improved aesthetics and layout
Jan 11, 2026
e8211b8
Refactor GitHub Actions workflow to optimize ISO build process
Jan 11, 2026
b071385
Enhance GitHub Actions workflow with additional disk cleanup steps
Jan 11, 2026
3b68a92
Refactor Makefile and GitHub Actions workflow for streamlined ISO bui…
Jan 12, 2026
13953b2
Refactor preseed files and provisioning script for Cortex Linux
Jan 12, 2026
aa34a92
Refactor Cortex Linux documentation and build scripts
Jan 12, 2026
070ed6b
Enhance build scripts and workflows with compression options
Jan 12, 2026
26cc7f5
Update compression variable in build scripts for consistency
Jan 12, 2026
c9c502b
Add GRUB theme copying to build scripts
Jan 12, 2026
09eede1
Remove reproducible builds workflow from GitHub Actions
Jan 12, 2026
6564a1a
Add Cortex terminal profile and PAM configurations
Jan 12, 2026
79c2cda
Enhance Plymouth theme configuration and initramfs update process
Jan 14, 2026
88b6dd9
Revise branding assets and Plymouth theme for Cortex Linux
Jan 16, 2026
e5cd996
Revise Cortex Linux Plymouth theme for minimal design
Jan 17, 2026
f160a26
Update branding assets and remove obsolete files for Cortex Linux
Jan 17, 2026
f1a9257
Enhance branding asset generation script for Cortex Linux
Jan 17, 2026
cf6c7d0
Refactor build scripts to enhance symlink handling and improve config…
Jan 17, 2026
6795845
Enhance Cortex Linux Plymouth theme with animated loading dots
Jan 17, 2026
8b08ced
Update branding assets and enhance logo handling for Cortex Linux
Jan 17, 2026
046fbd7
Update branding assets for Cortex Linux with gradient backgrounds and…
Jan 17, 2026
f8795e3
Refactor branding asset generation for Cortex Linux using Makefile
Jan 17, 2026
7b2b807
Remove outdated documentation files for Cortex Linux
Jan 17, 2026
85a1b65
Refactor Cortex Linux branding package and update asset management
Jan 17, 2026
f7efcb4
Refactor Makefile and build scripts for improved asset management and…
Jan 17, 2026
36a8505
Update GitHub Actions workflow for ISO build process
Jan 17, 2026
f58c26f
Update build script to improve package file handling
Jan 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
267 changes: 160 additions & 107 deletions .github/workflows/build-iso.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,187 +12,240 @@ on:
paths:
- 'iso/**'
- 'packages/**'
- 'scripts/**'
- 'docs/branding/**'
- 'Makefile'
- '.github/workflows/build-iso.yml'
pull_request:
branches: [main]
paths:
- 'iso/**'
- 'packages/**'
- 'scripts/**'
- 'docs/branding/**'
- 'Makefile'
workflow_dispatch:
inputs:
iso_type:
description: 'ISO type to build'
required: true
default: 'offline'
type: choice
options:
- netinst
- offline
- both

env:
DEBIAN_FRONTEND: noninteractive

jobs:
build-packages:
name: Build Debian Packages
validate:
name: Validate
runs-on: ubuntu-24.04
container:
image: debian:bookworm
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install build dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
dpkg-dev \
devscripts \
debhelper \
fakeroot \
gnupg

- name: Build cortex-archive-keyring
run: |
cd packages/cortex-archive-keyring
dpkg-buildpackage -us -uc -b

- name: Build cortex-core
- name: Install git
run: |
cd packages/cortex-core
dpkg-buildpackage -us -uc -b
apt-get update
apt-get install -y git sudo make shellcheck

- name: Build cortex-full
run: |
cd packages/cortex-full
dpkg-buildpackage -us -uc -b
- name: Checkout
uses: actions/checkout@v4

- name: Upload packages
uses: actions/upload-artifact@v4
with:
name: debian-packages
path: packages/*.deb
retention-days: 7
- name: Run validation
run: make validate

build-iso:
name: Build ISO Image
runs-on: ubuntu-24.04
needs: build-packages
name: Build ISO (${{ matrix.arch }})
runs-on: ${{ matrix.runner }}
needs: validate
strategy:
fail-fast: false
matrix:
arch: [amd64]
# arm64 builds require self-hosted runner with ARM
include:
- arch: amd64
runner: ubuntu-24.04
- arch: arm64
runner: ubuntu-24.04-arm
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Download packages
uses: actions/download-artifact@v4
- name: Free disk space
uses: jlumbroso/free-disk-space@main
with:
name: debian-packages
path: packages/

- name: Install live-build dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
live-build \
debootstrap \
squashfs-tools \
xorriso \
isolinux \
syslinux-efi \
grub-pc-bin \
grub-efi-amd64-bin \
mtools \
dosfstools

- name: Configure live-build
tool-cache: true
android: true
dotnet: true
haskell: true
large-packages: true
docker-images: true
swap-storage: true

- name: Additional cleanup
run: |
cd iso/live-build
chmod +x auto/*
sudo lb config
echo "=== Additional cleanup ==="
sudo rm -rf /home/runner/.rustup || true
sudo rm -rf /home/runner/.cargo || true
sudo rm -rf /usr/share/swift || true
sudo rm -rf /usr/lib/jvm || true
sudo rm -rf /usr/local/julia* || true
sudo rm -rf /usr/local/share/chromium || true
sudo rm -rf /usr/lib/google-cloud-sdk || true
sudo rm -rf /opt/hostedtoolcache/CodeQL || true
echo "=== Disk space after additional cleanup ==="
df -h

- name: Copy packages to chroot
run: |
mkdir -p iso/live-build/config/packages.chroot/
cp packages/*.deb iso/live-build/config/packages.chroot/
- name: Checkout
uses: actions/checkout@v4

- name: Build ISO
- name: Build in Debian container
run: |
cd iso/live-build
sudo lb build 2>&1 | tee build.log

- name: Generate checksums
# Use xz compression for releases (smaller), lz4 for PR/branch builds (faster)
if [[ "${{ github.ref }}" == refs/tags/v* ]]; then
COMPRESSION="xz"
else
COMPRESSION="lz4"
fi
docker run --rm --privileged \
-v "${{ github.workspace }}:/workspace" \
-w /workspace \
-e ARCH=${{ matrix.arch }} \
-e SQUASHFS_COMP=$COMPRESSION \
-e DEBIAN_FRONTEND=noninteractive \
debian:bookworm /bin/bash -c '
set -e
./scripts/install-deps.sh
make check-deps
make iso
'

- name: List output
if: always()
run: |
cd iso/live-build
sha256sum *.iso > SHA256SUMS
sha512sum *.iso > SHA512SUMS
ls -la output/ || echo "No output directory"
ls -la build/ || echo "No build directory"

- name: Upload ISO
uses: actions/upload-artifact@v4
with:
name: cortex-linux-${{ matrix.arch }}
path: |
iso/live-build/*.iso
iso/live-build/SHA256SUMS
iso/live-build/SHA512SUMS
output/*.iso
output/*.sha256
retention-days: 14

- name: Upload packages
uses: actions/upload-artifact@v4
with:
name: packages-${{ matrix.arch }}
path: output/*.deb
retention-days: 14

- name: Upload SBOM
uses: actions/upload-artifact@v4
with:
name: sbom-${{ matrix.arch }}
path: output/sbom/
retention-days: 14
continue-on-error: true

- name: Upload build log
if: always()
uses: actions/upload-artifact@v4
with:
name: build-log-${{ matrix.arch }}
path: iso/live-build/build.log
path: build.log
retention-days: 7

test-iso:
name: Test ISO (${{ matrix.arch }})
runs-on: ${{ matrix.runner }}
needs: build-iso
strategy:
fail-fast: false
matrix:
include:
- arch: amd64
runner: ubuntu-24.04
- arch: arm64
runner: ubuntu-24.04-arm
steps:
- name: Download ISO
uses: actions/download-artifact@v4
with:
name: cortex-linux-${{ matrix.arch }}

- name: Verify checksums
run: |
ls -la
for iso in *.iso; do
if [ -f "${iso}.sha256" ]; then
sha256sum -c "${iso}.sha256"
fi
done
Comment on lines +168 to +175
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Checksum verification loop may silently pass when no checksums exist.

If no .sha256 files are present, the loop completes without error. Consider adding a check to ensure at least one checksum file was verified.

🔧 Proposed fix
      - name: Verify checksums
        run: |
          ls -la
+          verified=0
          for iso in *.iso; do
            if [ -f "${iso}.sha256" ]; then
              sha256sum -c "${iso}.sha256"
+              verified=$((verified + 1))
            fi
          done
+          if [ $verified -eq 0 ]; then
+            echo "WARNING: No checksum files found to verify"
+            exit 1
+          fi
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: Verify checksums
run: |
ls -la
for iso in *.iso; do
if [ -f "${iso}.sha256" ]; then
sha256sum -c "${iso}.sha256"
fi
done
- name: Verify checksums
run: |
ls -la
verified=0
for iso in *.iso; do
if [ -f "${iso}.sha256" ]; then
sha256sum -c "${iso}.sha256"
verified=$((verified + 1))
fi
done
if [ $verified -eq 0 ]; then
echo "WARNING: No checksum files found to verify"
exit 1
fi
🤖 Prompt for AI Agents
In @.github/workflows/build-iso.yml around lines 192 - 199, The Verify checksums
step's loop can exit silently if no .sha256 files exist; modify the shell block
in the "Verify checksums" step to detect whether any checksum files were found
and validated (e.g., set a counter or use nullglob to list *.sha256) and fail
the step if none were verified by exiting non-zero or printing an error; ensure
you still run sha256sum -c for each existing "${iso}.sha256" but after the loop
check the counter (or absence of matches) and call exit 1 with a clear message
if zero checksum files were processed.


- name: Check ISO structure
run: |
sudo apt-get update
sudo apt-get install -y xorriso
for iso in *.iso; do
echo "=== Checking $iso ==="
xorriso -indev "$iso" -find / -maxdepth 1 2>/dev/null | head -20
done

release:
name: Create Release
runs-on: ubuntu-24.04
needs: build-iso
needs: [build-iso, test-iso]
if: startsWith(github.ref, 'refs/tags/v')
permissions:
contents: write
steps:
- name: Download ISO artifacts
- name: Download all ISO artifacts
uses: actions/download-artifact@v4
with:
pattern: cortex-linux-*
merge-multiple: true
path: release/

- name: Download packages
uses: actions/download-artifact@v4
with:
name: debian-packages
pattern: packages-*
merge-multiple: true
path: release/

- name: Download SBOMs
uses: actions/download-artifact@v4
with:
pattern: sbom-*
merge-multiple: true
path: release/sbom/
continue-on-error: true

- name: Generate combined checksums
run: |
cd release
sha256sum *.iso *.deb > SHA256SUMS 2>/dev/null || sha256sum *.iso > SHA256SUMS
sha512sum *.iso *.deb > SHA512SUMS 2>/dev/null || sha512sum *.iso > SHA512SUMS

- name: Create Release
uses: softprops/action-gh-release@v1
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Update to the latest version of softprops/action-gh-release.

The v1 tag uses an outdated runner version that may not work on GitHub Actions. Update to a more recent version (e.g., v2 or a specific commit SHA).

Based on the static analysis hint from actionlint.

📦 Proposed fix
       - name: Create Release
-        uses: softprops/action-gh-release@v1
+        uses: softprops/action-gh-release@v2
         with:
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
uses: softprops/action-gh-release@v1
uses: softprops/action-gh-release@v2
🧰 Tools
🪛 actionlint (1.7.10)

236-236: the runner of "softprops/action-gh-release@v1" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

🤖 Prompt for AI Agents
In @.github/workflows/build-iso.yml at line 236, The workflow currently pins the
GitHub Action as "softprops/action-gh-release@v1" which is outdated; update the
uses entry for softprops/action-gh-release to a newer release (e.g., "@v2" or a
specific commit SHA) to ensure compatibility with current runners and satisfy
actionlint; locate the "uses: softprops/action-gh-release@v1" line in the
workflow and replace the version tag with the chosen newer tag or SHA, then run
the workflow lint/CI to verify the change.

Comment on lines 222 to 223
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Update softprops/action-gh-release to a newer version.

The static analysis tool indicates that @v1 is too old to run on current GitHub Actions runners. This could cause failures or deprecated behavior warnings.

🔧 Update to v2
      - name: Create Release
-        uses: softprops/action-gh-release@v1
+        uses: softprops/action-gh-release@v2
        with:
          files: |
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: Create Release
uses: softprops/action-gh-release@v1
- name: Create Release
uses: softprops/action-gh-release@v2
🧰 Tools
🪛 actionlint (1.7.10)

260-260: the runner of "softprops/action-gh-release@v1" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

🤖 Prompt for AI Agents
In @.github/workflows/build-iso.yml around lines 259 - 260, The workflow's
"Create Release" step uses the outdated action reference
softprops/action-gh-release@v1 which may fail on modern runners; update the uses
entry to the newer major version (e.g., softprops/action-gh-release@v2) in the
Create Release job so the workflow pulls the updated action release instead of
@v1.

with:
files: |
*.iso
*.deb
SHA256SUMS
SHA512SUMS
release/*.iso
release/*.deb
release/SHA256SUMS
release/SHA512SUMS
release/sbom/*
Comment on lines 222 to +230
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Update softprops/action-gh-release to v2.

Static analysis indicates @v1 is too old for current GitHub Actions runners. The action should be updated to v2 for compatibility and continued support.

Suggested fix
       - name: Create Release
-        uses: softprops/action-gh-release@v1
+        uses: softprops/action-gh-release@v2
         with:
           files: |
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: Create Release
uses: softprops/action-gh-release@v1
with:
files: |
*.iso
*.deb
SHA256SUMS
SHA512SUMS
release/*.iso
release/*.deb
release/SHA256SUMS
release/SHA512SUMS
release/sbom/*
- name: Create Release
uses: softprops/action-gh-release@v2
with:
files: |
release/*.iso
release/*.deb
release/SHA256SUMS
release/SHA512SUMS
release/sbom/*
🧰 Tools
🪛 actionlint (1.7.10)

246-246: the runner of "softprops/action-gh-release@v1" action is too old to run on GitHub Actions. update the action's version to fix this issue

(action)

🤖 Prompt for AI Agents
In @.github/workflows/build-iso.yml around lines 245 - 253, The workflow is
using the outdated softprops/action-gh-release@v1 action which is incompatible
with newer runners; update the uses entry to softprops/action-gh-release@v2
(replace "softprops/action-gh-release@v1" with "@v2") and ensure the existing
inputs (the multi-line files list: release/*.iso, release/*.deb,
release/SHA256SUMS, release/SHA512SUMS, release/sbom/*) remain unchanged and
still supported by v2; run a test pipeline to confirm the release step executes
successfully and adjust any v2-specific input names if the action's docs require
it.

body: |
## Cortex Linux ${{ github.ref_name }}

### Downloads
- **cortex-linux-*-amd64-offline.iso** - Full offline installer
- **cortex-linux-*-amd64-netinst.iso** - Minimal network installer
- **cortex-linux-*.iso** - Cortex Linux ISO
- **cortex-branding_*.deb** - Branding package (standalone install)

### Verification
```bash
sha256sum -c SHA256SUMS
```

### Quick Start
1. Write ISO to USB: `dd if=cortex-linux-*.iso of=/dev/sdX bs=4M status=progress`
1. Write ISO to USB: `sudo dd if=cortex-linux-*.iso of=/dev/sdX bs=4M status=progress oflag=sync`
2. Boot from USB
3. Follow installation prompts
3. Select "Live Boot" or "Install"

### Documentation
See https://cortexlinux.com/docs for full documentation.
See https://github.com/cortexlinux/cortex-distro for documentation.
draft: false
prerelease: ${{ contains(github.ref, 'alpha') || contains(github.ref, 'beta') || contains(github.ref, 'rc') }}
Loading
Loading