mirror of
https://github.com/sp-tarkov/build.git
synced 2025-02-13 04:50:46 -05:00
Upgrades!
- Adds new build type for nightly's - Dynamically looks up if mods are enabled - Cleans up file naming so there's less chance of an overwrite
This commit is contained in:
parent
70454fe0bc
commit
0ba38a21f0
@ -4,7 +4,8 @@ on:
|
|||||||
schedule:
|
schedule:
|
||||||
- cron: '* 19 * * *' # Every day at 7pm UTC (3pm ET)
|
- cron: '* 19 * * *' # Every day at 7pm UTC (3pm ET)
|
||||||
push:
|
push:
|
||||||
branches: [ trigger ]
|
# main can be removed when actions are available in the sub-project repos
|
||||||
|
branches: [ main, trigger ]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
prepare:
|
prepare:
|
||||||
@ -20,6 +21,10 @@ jobs:
|
|||||||
target_tag: ${{ steps.determine-context.outputs.target_tag }}
|
target_tag: ${{ steps.determine-context.outputs.target_tag }}
|
||||||
client_version: ${{ steps.versions.outputs.client_version }}
|
client_version: ${{ steps.versions.outputs.client_version }}
|
||||||
spt_version: ${{ steps.versions.outputs.spt_version }}
|
spt_version: ${{ steps.versions.outputs.spt_version }}
|
||||||
|
mod_enabled_bleeding: ${{ steps.mod-config.outputs.bleeding }}
|
||||||
|
mod_enabled_debug: ${{ steps.mod-config.outputs.debug }}
|
||||||
|
mod_enabled_release: ${{ steps.mod-config.outputs.release }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Determine Build Context
|
- name: Determine Build Context
|
||||||
id: determine-context
|
id: determine-context
|
||||||
@ -109,6 +114,45 @@ jobs:
|
|||||||
echo "::set-output name=spt_version::${SPT_VERSION}"
|
echo "::set-output name=spt_version::${SPT_VERSION}"
|
||||||
shell: bash
|
shell: bash
|
||||||
|
|
||||||
|
- name: Extract Mod Configurations
|
||||||
|
id: mod-config
|
||||||
|
run: |
|
||||||
|
rm -rf /workspace/refringe/Build/server-mods-config
|
||||||
|
git init /workspace/refringe/Build/server-mods-config
|
||||||
|
cd /workspace/refringe/Build/server-mods-config
|
||||||
|
git remote add origin https://dev.sp-tarkov.com/SPT-AKI/Server.git
|
||||||
|
git config core.sparseCheckout true
|
||||||
|
|
||||||
|
echo "project/src/ide/BleedingEdgeEntry.ts" >> .git/info/sparse-checkout
|
||||||
|
echo "project/src/ide/DebugEntry.ts" >> .git/info/sparse-checkout
|
||||||
|
echo "project/src/ide/ReleaseEntry.ts" >> .git/info/sparse-checkout
|
||||||
|
|
||||||
|
if [[ "${{ steps.determine-context.outputs.is_nightly }}" == "true" ]]; then
|
||||||
|
REF=${{ steps.determine-context.outputs.branch_server }}
|
||||||
|
else
|
||||||
|
REF=${{ steps.determine-context.outputs.target_tag }}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Fetch and checkout the specific reference (branch or tag)
|
||||||
|
git fetch --depth=1 origin "${REF}"
|
||||||
|
git checkout FETCH_HEAD
|
||||||
|
ls -la project/src/ide
|
||||||
|
|
||||||
|
# Function to parse G_MODS_ENABLED value
|
||||||
|
parse_mods_enabled() {
|
||||||
|
grep 'G_MODS_ENABLED' $1 | sed -e 's/.*G_MODS_ENABLED\s*=\s*\(.*\);/\1/'
|
||||||
|
}
|
||||||
|
|
||||||
|
# Extract the configuration options
|
||||||
|
MODS_BLEEDING=$(parse_mods_enabled "project/src/ide/BleedingEdgeEntry.ts")
|
||||||
|
MODS_DEBUG=$(parse_mods_enabled "project/src/ide/DebugEntry.ts")
|
||||||
|
MODS_RELEASE=$(parse_mods_enabled "project/src/ide/ReleaseEntry.ts")
|
||||||
|
|
||||||
|
echo "::set-output name=bleeding::${MODS_BLEEDING}"
|
||||||
|
echo "::set-output name=debug::${MODS_DEBUG}"
|
||||||
|
echo "::set-output name=release::${MODS_RELEASE}"
|
||||||
|
shell: bash
|
||||||
|
|
||||||
build-server:
|
build-server:
|
||||||
needs: [prepare]
|
needs: [prepare]
|
||||||
if: needs.prepare.outputs.proceed == 'true'
|
if: needs.prepare.outputs.proceed == 'true'
|
||||||
@ -366,17 +410,36 @@ jobs:
|
|||||||
BUILD_TYPE=${{ needs.build-server.outputs.build_type }}
|
BUILD_TYPE=${{ needs.build-server.outputs.build_type }}
|
||||||
SPT_VERSION=${{ needs.prepare.outputs.spt_version }}
|
SPT_VERSION=${{ needs.prepare.outputs.spt_version }}
|
||||||
CLIENT_VERSION=${{ needs.prepare.outputs.client_version }}
|
CLIENT_VERSION=${{ needs.prepare.outputs.client_version }}
|
||||||
|
TARGET_TAG=${{ needs.prepare.outputs.target_tag }}
|
||||||
DATE=$(date +%Y%m%d)
|
DATE=$(date +%Y%m%d)
|
||||||
|
|
||||||
# Make BUILD_TYPE uppercase
|
# Conditionally format the BASE_NAME based on BUILD_TYPE and if it's a nightly build
|
||||||
|
if [[ "${{ needs.prepare.outputs.is_nightly }}" == "true" ]]; then
|
||||||
|
BASE_NAME="SPT-NIGHTLY-${SPT_VERSION}-${CLIENT_VERSION}-${DATE}"
|
||||||
|
else
|
||||||
|
# Make BUILD_TYPE and TARGET_TAG uppercase
|
||||||
UPPER_BUILD_TYPE=$(echo "$BUILD_TYPE" | tr '[:lower:]' '[:upper:]')
|
UPPER_BUILD_TYPE=$(echo "$BUILD_TYPE" | tr '[:lower:]' '[:upper:]')
|
||||||
|
UPPER_TARGET_TAG=$(echo "$TARGET_TAG" | tr '[:lower:]' '[:upper:]')
|
||||||
|
|
||||||
# Conditionally format the BASE_NAME based on BUILD_TYPE
|
|
||||||
if [ "$BUILD_TYPE" = "release" ]; then
|
if [ "$BUILD_TYPE" = "release" ]; then
|
||||||
BASE_NAME="SPT-${SPT_VERSION}-${CLIENT_VERSION}-${DATE}"
|
BASE_NAME="SPT-${SPT_VERSION}-${CLIENT_VERSION}"
|
||||||
|
else
|
||||||
|
# For debug and non-nightly-bleeding builds, include either TAG_PART or DATE, but not both
|
||||||
|
# Determine TAG_PART based on TARGET_TAG structure
|
||||||
|
TAG_PART=""
|
||||||
|
if [[ "$UPPER_TARGET_TAG" == *-*-* ]]; then
|
||||||
|
SUFFIX="${UPPER_TARGET_TAG##*-}"
|
||||||
|
if [ "$SUFFIX" != "$UPPER_TARGET_TAG" ]; then
|
||||||
|
TAG_PART="-${SUFFIX}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ -n "$TAG_PART" ]; then
|
||||||
|
BASE_NAME="SPT-${UPPER_BUILD_TYPE}-${SPT_VERSION}-${CLIENT_VERSION}${TAG_PART}"
|
||||||
else
|
else
|
||||||
BASE_NAME="SPT-${UPPER_BUILD_TYPE}-${SPT_VERSION}-${CLIENT_VERSION}-${DATE}"
|
BASE_NAME="SPT-${UPPER_BUILD_TYPE}-${SPT_VERSION}-${CLIENT_VERSION}-${DATE}"
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
echo "::set-output name=base_name::${BASE_NAME}"
|
echo "::set-output name=base_name::${BASE_NAME}"
|
||||||
echo "::set-output name=build_name::${BASE_NAME}.7z"
|
echo "::set-output name=build_name::${BASE_NAME}.7z"
|
||||||
@ -392,7 +455,7 @@ jobs:
|
|||||||
overwrite: true
|
overwrite: true
|
||||||
|
|
||||||
publish-release:
|
publish-release:
|
||||||
needs: [assemble-release, build-server]
|
needs: [prepare, assemble-release, build-server]
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
container:
|
container:
|
||||||
image: refringe/spt-build-node:1.0.5
|
image: refringe/spt-build-node:1.0.5
|
||||||
@ -543,6 +606,9 @@ jobs:
|
|||||||
LINK_MEGA: ${{ steps.upload-mega.outputs.link_mega }}
|
LINK_MEGA: ${{ steps.upload-mega.outputs.link_mega }}
|
||||||
LINK_HTTPS: ${{ steps.upload-https-7z.outputs.link_https }}
|
LINK_HTTPS: ${{ steps.upload-https-7z.outputs.link_https }}
|
||||||
LINK_TORRENT: ${{ steps.upload-https-torrent.outputs.link_torrent }}
|
LINK_TORRENT: ${{ steps.upload-https-torrent.outputs.link_torrent }}
|
||||||
|
MODS_ENABLED_BLEEDING: ${{ needs.prepare.outputs.mod_enabled_bleeding }}
|
||||||
|
MODS_ENABLED_DEBUG: ${{ needs.prepare.outputs.mod_enabled_debug }}
|
||||||
|
MODS_ENABLED_RELEASE: ${{ needs.prepare.outputs.mod_enabled_release }}
|
||||||
run: |
|
run: |
|
||||||
cd /workspace/refringe/Build/
|
cd /workspace/refringe/Build/
|
||||||
FOOTER_MESSAGES=("You look great today!" "Powered by coffee" "Did you remember to hydrate today?" "Have you tried turning it off and on again?" "In Chomp we trust" "Beep boop, I'm a bot" "Keep calm and commit your code" "May the source be with you" "Go to bed, Terk" "Please direct all support requests to Drakia" "Meaw")
|
FOOTER_MESSAGES=("You look great today!" "Powered by coffee" "Did you remember to hydrate today?" "Have you tried turning it off and on again?" "In Chomp we trust" "Beep boop, I'm a bot" "Keep calm and commit your code" "May the source be with you" "Go to bed, Terk" "Please direct all support requests to Drakia" "Meaw")
|
||||||
@ -550,21 +616,32 @@ jobs:
|
|||||||
TIMESTAMP=$(date --iso-8601=seconds)
|
TIMESTAMP=$(date --iso-8601=seconds)
|
||||||
FILE_SIZE_MB=$(stat -c %s "$BUILD_NAME" | awk '{printf "%.2f MB", $1 / 1024 / 1024}')
|
FILE_SIZE_MB=$(stat -c %s "$BUILD_NAME" | awk '{printf "%.2f MB", $1 / 1024 / 1024}')
|
||||||
FILE_HASH=$(sha256sum "$BUILD_NAME" | awk '{print $1}')
|
FILE_HASH=$(sha256sum "$BUILD_NAME" | awk '{print $1}')
|
||||||
|
MODS=""
|
||||||
|
|
||||||
if [ "$BUILD_TYPE" == "bleeding" ]; then
|
if [[ "${{ needs.prepare.outputs.is_nightly }}" == "true" ]]; then
|
||||||
EMBED_COLOR=14423100
|
EMBED_COLOR=0xfff700
|
||||||
EMBED_TITLE="A New BLEEDING Build Released"
|
EMBED_TITLE="Fresh Nightly Build"
|
||||||
EMBED_DESCRIPTION=$'A new bleeding build is now available for download. Mods are disabled for bleeding builds. 7-Zip is *required* to extract the release.'
|
EMBED_DESCRIPTION=$'A new nightly build is now available. These are untested and considered unstable. Absolutely no support is provided—If you ask for help you **will be banned from the #dev-builds channel without notice**. 7-Zip is *required* to extract the release.'
|
||||||
elif [ "$BUILD_TYPE" == "debug" ]; then
|
MODS="$MODS_ENABLED_BLEEDING"
|
||||||
EMBED_COLOR=5789784
|
|
||||||
EMBED_TITLE="New DEBUG Build Available"
|
|
||||||
EMBED_DESCRIPTION=$'A new debug build is now available for download. Mods are disabled for debug builds. 7-Zip is *required* to extract the release.'
|
|
||||||
else
|
else
|
||||||
EMBED_COLOR=1374720
|
if [ "$BUILD_TYPE" == "bleeding" ]; then
|
||||||
EMBED_TITLE="Release Build Now Available"
|
EMBED_COLOR=0xff0000
|
||||||
|
EMBED_TITLE="New Bleeding Build"
|
||||||
|
EMBED_DESCRIPTION=$'A new bleeding edge build is now available. These are for testing issues and not for general gameplay. 7-Zip is *required* to extract the release.'
|
||||||
|
MODS="$MODS_ENABLED_BLEEDING"
|
||||||
|
elif [ "$BUILD_TYPE" == "debug" ]; then
|
||||||
|
EMBED_COLOR=0x000055
|
||||||
|
EMBED_TITLE="New Debug Build"
|
||||||
|
EMBED_DESCRIPTION=$'A new debug build is now available. These have extra-verbose logging enabled. 7-Zip is *required* to extract the release.'
|
||||||
|
MODS="$MODS_ENABLED_DEBUG"
|
||||||
|
else
|
||||||
|
EMBED_COLOR=0x33ff00
|
||||||
|
EMBED_TITLE="New Stable Build"
|
||||||
EMBED_DESCRIPTION=$'A new stable release build is now ready for download. 7-Zip is *required* to extract the release.'
|
EMBED_DESCRIPTION=$'A new stable release build is now ready for download. 7-Zip is *required* to extract the release.'
|
||||||
|
MODS="$MODS_ENABLED_RELEASE"
|
||||||
fi
|
fi
|
||||||
EMBED_DESCRIPTION+=$'\n\n**Build Information:** 📊\nName: *'"${BASE_NAME}"$'*\nFile Size: *'"${FILE_SIZE_MB}"$'*\nSHA-256 Hash: *'"${FILE_HASH}"$'*\n\n**Primary Download Link:** 🚀\n'"${LINK_MEGA}"$'\n\n**Torrent Link:** 🔗\n'"${LINK_TORRENT}"$'\n\nIn order to conserve bandwidth, please consider using the *above* methods to download the release. If you have issues using those methods, you are free to download using any of the following HTTP mirrors.\n\nWhile the links *below* are not secret, **do not advertise them**. The primary MEGA link or torrent should be used to advertise any downloads.\n\n**Mirrors:** 🌐\n'"${LINK_HTTPS}"
|
fi
|
||||||
|
EMBED_DESCRIPTION+=$'\n\n**Build Information:** 📊\nName: *'"${BASE_NAME}"$'*\nMods Enabled: *'"${MODS}"$'*\nFile Size: *'"${FILE_SIZE_MB}"$'*\nSHA-256 Hash: *'"${FILE_HASH}"$'*\n\n**Primary Download Link:** 🚀\n'"${LINK_MEGA}"$'\n\n**Torrent Link:** 🔗\n'"${LINK_TORRENT}"$'\n\nIn order to conserve bandwidth, please consider using the *above* methods to download the release. If you have issues using those methods, you are free to download using any of the following HTTP mirrors.\n\nWhile the links *below* are not secret, **do not advertise them**. The primary MEGA link or torrent should be used to advertise any downloads.\n\n**Mirrors:** 🌐\n'"${LINK_HTTPS}"
|
||||||
|
|
||||||
jq -n \
|
jq -n \
|
||||||
--arg EMBED_TITLE "$EMBED_TITLE" \
|
--arg EMBED_TITLE "$EMBED_TITLE" \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user