This commit is contained in:
AG 2025-09-26 14:35:38 +02:00
parent 1a38cce3b8
commit e1b202efd2
3 changed files with 132 additions and 0 deletions

76
.gitlab-ci.yml Normal file
View File

@ -0,0 +1,76 @@
stages:
- build
- release
variables:
# Use official NixOS container
NIX_IMAGE: "nixos/nix:latest"
# Binary path relative to project root
BINARY_PATH: "build/compose/binaries/main/app/Theorycrafter/bin/Theorycrafter"
build:
stage: build
image: $NIX_IMAGE
# Only run on new tags for main branch
only:
- tags
before_script:
- echo "Setting up Nix environment..."
- nix --version
- nix-channel --update
script:
- echo "Building Java project with Gradle via Nix shell..."
# Enter nix-shell and run the build
- nix-shell --run "./gradlew package"
# Verify the binary exists
- ls -la $BINARY_PATH
- file $BINARY_PATH
# Create the tarball with the tag name
- mkdir -p release
- tar -czf "release/Theorycrafter-${CI_COMMIT_TAG}-x86_64-linux.tar.gz" -C "$(dirname $BINARY_PATH)" "$(basename $BINARY_PATH)"
# Verify the tarball was created
- ls -la release/
artifacts:
paths:
- release/Theorycrafter-${CI_COMMIT_TAG}-x86_64-linux.tar.gz
expire_in: 1 week
cache:
key: gradle-cache-$CI_COMMIT_REF_SLUG
paths:
- .gradle/caches/
- .gradle/wrapper/
release:
stage: release
image: registry.gitlab.com/gitlab-org/release-cli:latest
# Only run on new tags for main branch
only:
- tags
# Depend on build job completion
dependencies:
- build
before_script:
- apk add --no-cache curl jq
script:
- echo "Creating GitLab release for tag ${CI_COMMIT_TAG}..."
# Create release using GitLab Release CLI
- |
release-cli create \
--name "Theorycrafter ${CI_COMMIT_TAG}" \
--tag-name "${CI_COMMIT_TAG}" \
--description "Release ${CI_COMMIT_TAG}" \
--assets-link "{\"name\":\"Theorycrafter-${CI_COMMIT_TAG}-x86_64-linux.tar.gz\",\"url\":\"${CI_PROJECT_URL}/-/jobs/${CI_JOB_ID}/artifacts/file/release/Theorycrafter-${CI_COMMIT_TAG}-x86_64-linux.tar.gz\"}"

28
nvim Normal file
View File

@ -0,0 +1,28 @@
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
buildInputs = with pkgs; [
openjdk17
gradle
git
mesa
libglvnd
];
shellHook = ''
echo "Java development environment loaded!"
echo "- OpenJDK 17: $(java -version 2>&1 | head -n1)"
echo "- Gradle: $(gradle --version | grep 'Gradle' | head -n1 2>/dev/null || echo 'Gradle available')"
echo "- OpenGL libraries available"
export LD_LIBRARY_PATH=${pkgs.mesa.out}/lib:${pkgs.libglvnd.out}/lib:$LD_LIBRARY_PATH
export JAVA_HOME=${pkgs.openjdk17}
echo ""
echo "Environment variables set:"
echo "- JAVA_HOME: $JAVA_HOME"
echo "- LD_LIBRARY_PATH: $LD_LIBRARY_PATH"
echo ""
echo "Ready to build! Run: ./gradlew package"
'';
}

28
shell.nix Normal file
View File

@ -0,0 +1,28 @@
{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell {
buildInputs = with pkgs; [
openjdk17
gradle
git
mesa
libglvnd
];
shellHook = ''
echo "Java development environment loaded!"
echo "- OpenJDK 17: $(java -version 2>&1 | head -n1)"
echo "- Gradle: $(gradle --version | grep 'Gradle' | head -n1 2>/dev/null || echo 'Gradle available')"
echo "- OpenGL libraries available"
export LD_LIBRARY_PATH=${pkgs.mesa.out}/lib:${pkgs.libglvnd.out}/lib:$LD_LIBRARY_PATH
export JAVA_HOME=${pkgs.openjdk17}
echo ""
echo "Environment variables set:"
echo "- JAVA_HOME: $JAVA_HOME"
echo "- LD_LIBRARY_PATH: $LD_LIBRARY_PATH"
echo ""
echo "Ready to build! Run: ./gradlew package"
'';
}