133 lines
3.9 KiB
YAML
133 lines
3.9 KiB
YAML
# use Eclipse's JDK
|
|
image: gradle:eclipse-temurin
|
|
|
|
# all stages need to be defined here
|
|
stages:
|
|
- gradleSetup
|
|
- build
|
|
- merge
|
|
|
|
variables:
|
|
# Disable the Gradle daemon for Continuous Integration servers as correctness
|
|
# is usually a priority over speed in CI environments. Using a fresh
|
|
# runtime for each build is more reliable since the runtime is completely
|
|
# isolated from any previous builds.
|
|
GRADLE_OPTS: "-Dorg.gradle.daemon=false"
|
|
# Pull core when building
|
|
GIT_SUBMODULE_STRATEGY: recursive
|
|
|
|
|
|
before_script:
|
|
- echo $CI_JOB_ID
|
|
# Writing GE_JOB_ID variable to environment file, will need the value in the next stage.
|
|
- echo GE_JOB_ID=$CI_JOB_ID >> generate_jars.env
|
|
|
|
|
|
|
|
|
|
# first stage
|
|
# This prevents us from re-downloading Gradle every stage
|
|
gradleSetup:
|
|
stage: gradleSetup
|
|
script: ./gradlew --build-cache --gradle-user-home cache/ check
|
|
# build using Java 17
|
|
image: eclipse-temurin:17
|
|
cache:
|
|
key:
|
|
files:
|
|
- gradle/wrapper/gradle-wrapper.properties
|
|
policy: push
|
|
paths:
|
|
- cache/
|
|
|
|
|
|
|
|
# second stage
|
|
build:
|
|
stage: build
|
|
script: ./gradlew build --gradle-user-home cache/
|
|
# build using Java 17
|
|
image: eclipse-temurin:17
|
|
cache:
|
|
key: "$CI_COMMIT_REF_NAME"
|
|
policy: pull-push
|
|
paths:
|
|
- .architectury-transformer
|
|
- .gradle
|
|
- build
|
|
- common/.gradle
|
|
- common/build
|
|
- core/.gradle
|
|
- core/build
|
|
- fabric/.gradle
|
|
- fabric/src/generated
|
|
- forge/.gradle
|
|
- forge/src/generated
|
|
- build
|
|
- .gradle
|
|
- cache/
|
|
artifacts:
|
|
name: "NightlyBuild-$CI_COMMIT_SHORT_SHA}-${CI_COMMIT_TIMESTAMP}"
|
|
paths:
|
|
# relative to the root directory
|
|
- fabric/build/libs
|
|
- forge/build/libs
|
|
exclude:
|
|
- fabric/build/libs/*-dev.jar
|
|
- fabric/build/libs/*-dev-shadow.jar
|
|
- fabric/build/libs/*-sources-dev.jar
|
|
- fabric/build/libs/*-sources.jar
|
|
- forge/build/libs/*-dev.jar
|
|
- forge/build/libs/*-dev-shadow.jar
|
|
- forge/build/libs/*-sources-dev.jar
|
|
- forge/build/libs/*-sources.jar
|
|
reports:
|
|
# To ensure we've access to these files in the next stage
|
|
dotenv: generate_jars.env
|
|
expire_in: 1 day
|
|
|
|
# third stage
|
|
merge:
|
|
stage: merge
|
|
script: ./gradlew merge --gradle-user-home cache/
|
|
# build using Java 17
|
|
image: eclipse-temurin:17
|
|
cache:
|
|
key: "$CI_COMMIT_REF_NAME"
|
|
policy: pull-push
|
|
paths:
|
|
- build
|
|
- .gradle
|
|
- cache/
|
|
artifacts:
|
|
name: "Merged_NightlyBuild-${CI_COMMIT_SHORT_SHA}-${CI_COMMIT_TIMESTAMP}"
|
|
paths:
|
|
# relative to the root directory
|
|
- Merged
|
|
expire_in: 1 day
|
|
|
|
|
|
## forth stage
|
|
#deploy:
|
|
# stage: deploy
|
|
# image: registry.gitlab.com/gitlab-org/release-cli:latest
|
|
# script:
|
|
# - echo 'running release_job'
|
|
# - echo 'Previous Job ID is printed below'
|
|
# - echo $GE_JOB_ID
|
|
# # Specifying that this job requires artifacts from the previous job to succeed
|
|
# needs:
|
|
# - job: build
|
|
# artifacts: true
|
|
# release:
|
|
# name: 'Unstable Jars for Latest Commit' #: $CI_COMMIT_SHORT_SHA'
|
|
# description: 'Created automatically using the release-cli.'
|
|
# # tag_name is a mendatory field and can not be an empty string
|
|
# tag_name: 'Unstable-$CI_COMMIT_SHORT_SHA'
|
|
# assets:
|
|
# links:
|
|
# - name: 'Fabric Jars'
|
|
# url: 'https://gitlab.com/jeseibel/minecraft-lod-mod/cw/-/jobs/${GE_JOB_ID}/artifacts/file/fabric/build/libs'
|
|
# - name: 'Forge Jars'
|
|
# url: 'https://gitlab.com/jeseibel/minecraft-lod-mod/cw/-/jobs/${GE_JOB_ID}/artifacts/file/forge/build/libs'
|