AeThex-OS/.gitlab-ci.yml

82 lines
2.5 KiB
YAML

stages:
- build
- release
build_iso:
stage: build
image: ubuntu:24.04
timeout: 90 minutes
tags:
- docker
variables:
DOCKER_PRIVILEGED: "true"
rules:
- if: '$CI_COMMIT_BRANCH == "main"'
- if: '$CI_COMMIT_TAG'
artifacts:
paths:
- aethex-linux-build/
- artifacts/local/
expire_in: 90 days
script:
# Install minimal dependencies
- apt-get update -qq
- apt-get install -y -qq xorriso genisoimage syslinux syslinux-common isolinux wget curl nodejs npm
# Install Node dependencies
- npm install
# Build client
- npm run build || echo "Build failed but continuing"
# Build ISO using simple method
- mkdir -p aethex-linux-build
- chmod +x script/build-linux-iso-simple.sh
- bash script/build-linux-iso-simple.sh
# Verify ISO exists (fail the build if not)
- |
ISO_PATH=$(ls aethex-linux-build/AeThex-Linux-*.iso 2>/dev/null | head -n 1)
if [ -n "$ISO_PATH" ]; then
echo "✅ ISO built successfully: $ISO_PATH"
ls -lh "$ISO_PATH"
sha256sum "$ISO_PATH" > aethex-linux-build/SHA256
mkdir -p artifacts/local
cp "$ISO_PATH" artifacts/local/
cp aethex-linux-build/SHA256 artifacts/local/$(basename "$ISO_PATH").sha256
else
echo "❌ ISO not found! Build failed."
ls -la aethex-linux-build/ || echo "Build directory doesn't exist"
exit 1
fi
release_iso:
stage: release
image: registry.gitlab.com/gitlab-org/release-cli:latest
needs:
- job: build_iso
artifacts: true
rules:
- if: '$CI_COMMIT_TAG'
variables:
RELEASE_NAME: "AeThex OS $CI_COMMIT_TAG"
script:
- echo "Creating GitLab release for tag $CI_COMMIT_TAG"
- |
ISO_PATH=$(ls artifacts/local/AeThex-Linux-*.iso 2>/dev/null | head -n 1)
if [ -z "$ISO_PATH" ]; then
echo "No ISO found in artifacts/local. Listing..." && ls -la artifacts/local || true
fi
- |
if [ -n "$ISO_PATH" ]; then
# Create release and attach asset link pointing to job artifact (90-day retention)
release-cli create \
--name "$RELEASE_NAME" \
--tag-name "$CI_COMMIT_TAG" \
--assets-link name="AeThex OS ISO" url="$CI_PROJECT_URL/-/jobs/$CI_JOB_ID/artifacts/file/$ISO_PATH"
else
# Create release without asset if ISO missing
release-cli create \
--name "$RELEASE_NAME" \
--tag-name "$CI_COMMIT_TAG"
fi