Newer
Older
BUILD_CHANNEL:
value: "Test"
options:
- "Release"
- "Beta"
- "Project"
- "Test"
description: "The deployment channel target. Set to 'Test' by default."
PUBLIC_BUILD:
value: "FALSE"
options:
- "FALSE"
- "TRUE"
description: "Are package registry uploads public?. Set to 'TRUE' by default"
USE_SENTRY:
value: "TRUE"
options:
- "FALSE"
- "TRUE"
description: "Enable sentry crash reporting module. Set to 'TRUE' by default."
AUTOBUILD_BUILD_ID: $CI_PIPELINE_ID
AUTOBUILD_INSTALLABLE_CACHE: "$CI_PROJECT_DIR/.cache/autobuild"
PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
stage: build
tags:
- autobuild
- windows
cache:
key:
files:
- autobuild.xml
prefix: ${CI_JOB_NAME}
paths:
- .cache/autobuild
- .cache/pip
when: 'always'
- autobuild configure -c Release -- -DUSE_LTO=ON -DDISABLE_FATAL_WARNINGS=ON -DREVISION_FROM_VCS=FALSE
- autobuild build -c Release --no-configure
- autobuild graph -c Release --graph-file alchemy-windows${AUTOBUILD_ADDRSIZE}-dependencies.svg build-vc-64/autobuild-package.xml
- $AlchemyPdbPath = Resolve-Path build-vc-*/newview/Release/alchemy-bin.pdb
- If ($env:USE_SENTRY -eq 'TRUE') { sentry-cli difutil bundle-sources $AlchemyPdbPath }
artifacts:
name: "$env:CI_COMMIT_REF_NAME-$env:CI_COMMIT_SHORT_SHA"

Rye Mutt
committed
- build-vc-*/packages/lib/release/alut*.dll
- build-vc-*/packages/lib/release/fmod*.dll

Rye Mutt
committed
- build-vc-*/packages/lib/release/libapr*.dll
- build-vc-*/packages/lib/release/libexpat*.dll
- build-vc-*/packages/lib/release/libhunspell*.dll
- build-vc-*/packages/lib/release/libogg*.dll
- build-vc-*/packages/lib/release/libvorbis*.dll
- build-vc-*/packages/lib/release/OpenAL32*.dll
- build-vc-*/packages/lib/release/openjp2*.dll
- build-vc-*/packages/lib/release/sentry.dll
- build-vc-*/packages/lib/release/xmlrpc-epi*.dll
- build-vc-*/packages/lib/release/*.pdb
- build-vc-*/newview/Release/build_data.json
- build-vc-*/newview/Release/alchemy-bin.exe
- build-vc-*/newview/Release/alchemy-bin.pdb
- build-vc-*/newview/Release/alchemy-bin.src.zip
- build-vc-*/newview/Release/Alchemy_*_Setup.exe
cache:
key:
files:
- autobuild.xml
prefix: ${CI_JOB_NAME}
paths:
- .cache/autobuild
- .cache/pip
when: 'always'
before_script:
- pip3 install --upgrade llbase autobuild dmgbuild
- autobuild configure -c Release -- -DUSE_LTO=ON -DDISABLE_FATAL_WARNINGS=ON -DREVISION_FROM_VCS=FALSE
- autobuild build -c Release --no-configure
- autobuild graph -c Release --graph-file alchemy-darwin${AUTOBUILD_ADDRSIZE}-dependencies.svg build-darwin-64/autobuild-package.xml
- if [ "$USE_SENTRY" = "TRUE" ]; then sentry-cli difutil bundle-sources build-darwin-*/newview/Release/*.app.dSYM/Contents/Resources/DWARF/*; fi
name: "$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA"
expire_in: 1 week
paths:
- build-darwin-*/build_data.json
- build-darwin-*/packages/lib/release/discord_game_sdk.dylib
- build-darwin-*/packages/lib/release/libalut*.dylib
- build-darwin-*/packages/lib/release/libapr*.dylib

Rye Mutt
committed
- build-darwin-*/packages/lib/release/libfmod*.dylib
- build-darwin-*/packages/lib/release/libhunspell*.dylib
- build-darwin-*/packages/lib/release/libndofdev*.dylib
- build-darwin-*/packages/lib/release/libopenal*.dylib
- build-darwin-*/packages/lib/release/libxmlrpc*.dylib
- build-darwin-*/packages/lib/release/Sentry.framework
- build-darwin-*/packages/lib/release/*.dSYM
- build-darwin-*/newview/Release/*.app/Contents/MacOS/*
- build-darwin-*/newview/Release/*.dSYM

Rye Mutt
committed
- build-darwin-*/newview/Release/*.src.zip
image: r.alchemyviewer.org/alchemy/infrastructure/ubuntu-build-image:latest-llvm
cache:
key:
files:
- autobuild.xml
prefix: ${CI_JOB_NAME}
paths:
- .cache/autobuild
- .cache/pip
when: 'always'
before_script:
- autobuild configure -c Release -- -DUSE_LTO=ON -DDISABLE_FATAL_WARNINGS=ON -DREVISION_FROM_VCS=FALSE
- autobuild build -c Release --no-configure
- autobuild graph -c Release --graph-file alchemy-linuxs${AUTOBUILD_ADDRSIZE}-dependencies.svg build-linux-${AUTOBUILD_ADDRSIZE}/autobuild-package.xml
- if [ "$USE_SENTRY" = "TRUE" ]; then sentry-cli difutil bundle-sources build-linux-*/newview/alchemy-bin.debug; fi
name: "$CI_COMMIT_REF_NAME-$CI_COMMIT_SHORT_SHA"
- build-linux-*/packages/lib/release/discord_game_sdk.so*
- build-linux-*/packages/lib/release/libalut.so*
- build-linux-*/packages/lib/release/libapr-1.so*
- build-linux-*/packages/lib/release/libaprutil-1.so*
- build-linux-*/packages/lib/release/libexpat*.so*
- build-linux-*/packages/lib/release/libfmod*.so*
- build-linux-*/packages/lib/release/libjpeg.so*
- build-linux-*/packages/lib/release/libopenal.so*
- build-linux-*/packages/lib/release/libopenjp2.so*
- build-linux-*/packages/lib/release/libSDL2*.so*
- build-linux-*/newview/Alchemy_*.tar.*
- build-linux-*/newview/alchemy-bin
- build-linux-*/newview/alchemy-bin.debug
- build-linux-*/newview/alchemy-bin.src.zip
image: r.alchemyviewer.org/alchemy/infrastructure/ubuntu-build-image:latest-llvm-coverity
tags:
- linux
- docker
rules:
- if: '$CI_COMMIT_BRANCH == "coverity"'
cache:
key:
files:
- autobuild.xml
prefix: ${CI_JOB_NAME}
paths:
- .cache/autobuild
- .cache/pip
when: 'always'
variables:
before_script:
- virtualenv .venv -p python3
- source .venv/bin/activate
- cov-configure --template --comptype clangcc --compiler clang-12
- cov-configure --template --comptype clangcxx --compiler clang++-12
- autobuild configure -c Coverity -- -DLL_TESTS=OFF -DUSE_FMODSTUDIO=ON -DUSE_NVAPI=ON -DUSE_LTO=OFF -DDISABLE_FATAL_WARNINGS=ON -DREVISION_FROM_VCS=FALSE -DUSE_PRECOMPILED_HEADERS=OFF
- autobuild build -c Coverity --no-configure
- pushd "build-linux-64"
- tar caf alchemyviewer.xz cov-int
- curl --header "JOB-TOKEN:$CI_JOB_TOKEN" --upload-file alchemyviewer.xz "${CI_API_V4_URL}/projects/165/packages/generic/coverity/0.0.$CI_PIPELINE_ID/alchemyviewer.xz"
- popd
.win32_build:
extends: .win_build
variables:
AUTOBUILD_ADDRSIZE: 32
cache:
key:
prefix: windows32
.mac64_build:
extends: .mac_build
variables:
AUTOBUILD_ADDRSIZE: 64
cache:
key:
prefix: darwin64
.linux32_build:
extends: .linux_build
variables:
AUTOBUILD_ADDRSIZE: 32
cache:
key:
prefix: linux32
- if: $BUILD_CHANNEL != "Test" || $CI_COMMIT_TAG
when: never
- if: '$CI_PIPELINE_SOURCE == "web"'
- if: '$CI_PIPELINE_SOURCE == "schedule"'
#- if: '$CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == "push"'
VIEWER_CHANNEL_TYPE: Test
VIEWER_USE_CRASHPAD: "FALSE"
.project_rules:
rules:
- if: '$BUILD_CHANNEL == "Project" && ($CI_PIPELINE_SOURCE == "web" || $CI_PIPELINE_SOURCE == "schedule")'
- if: '$CI_COMMIT_TAG =~ /.*-project/'
variables:
VIEWER_CHANNEL_TYPE: Project
.beta_rules:
rules:
- if: '$BUILD_CHANNEL == "Beta" && ($CI_PIPELINE_SOURCE == "web" || $CI_PIPELINE_SOURCE == "schedule")'
- if: '$CI_COMMIT_TAG =~ /.*-beta/'
variables:
VIEWER_CHANNEL_TYPE: Beta
.release_rules:
rules:
- if: '$BUILD_CHANNEL == "Release" && ($CI_PIPELINE_SOURCE == "web" || $CI_PIPELINE_SOURCE == "schedule")'
- if: '$CI_COMMIT_TAG =~ /.*-release/'
build:project:linux64:
extends:
- .linux64_build
- .project_rules
build:project:mac64:
extends:
- .mac64_build
- .project_rules
.build:project:windows64:
extends:
- .win32_build
- .project_rules
build:project:windows64:
extends:
- .win64_build
- .project_rules
build:beta:mac64:
extends:
- .mac64_build
- .beta_rules
.build:beta:windows32:
extends:
- .win32_build
- .beta_rules
build:release:mac64:
extends:
- .mac64_build
- .release_rules
.build:release:windows32:
extends:
- .win32_build
- .release_rules
image: r.alchemyviewer.org/alchemy/infrastructure/viewer-deploy-image:latest
allow_failure: false
script:
- $BuildData = Get-Content ./build-vc-64/newview/Release/build_data.json | ConvertFrom-Json
- $BuildChannelVersion = $BuildData.Channel + ' ' + $BuildData.Version
- $PkgName = $BuildData.Channel.Replace(" ", "_")
- $PkgVer = $BuildData.Version
- $UploadDestURL = "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/${PkgName}/${PkgVer}"
- >
$UploadParams = @{
Method = "PUT";
Headers = @{
Verbose = $true;
};
- If ($env:USE_SENTRY -eq 'TRUE') { sentry-cli releases new $BuildChannelVersion && sentry-cli releases set-commits --auto $BuildChannelVersion }
- $DestStatus = "?select=package_file&status=default"
- If ($env:PUBLIC_BUILD -eq 'FALSE') { $DestStatus = "?select=package_file&status=hidden" }
- Push-Location ./build-linux-64/
- Push-Location ./newview/
- $LnxFileName = Get-ChildItem -Path . -Name -Include Alchemy_*.tar.*
- $LnxFileHash = (Get-FileHash .\$LnxFileName -a sha256).Hash
- $LnxPackageUrl = "${UploadDestURL}/${LnxFileName}"
- $LnxUploadResult = Invoke-WebRequest -HttpVersion 2.0 @UploadParams -InFile ./$LnxFileName -Uri "${LnxPackageUrl}${DestStatus}" | ConvertFrom-Json
- If ($LnxFileHash -ne $LnxUploadResult.file_sha256) { Write-Output "Upload hash mismatch. expected $Hash actual $($LnxUploadResult.file_sha256)" && Exit 1 }
- Pop-Location
- If ($env:USE_SENTRY -eq 'TRUE') { sentry-cli upload-dif newview/alchemy-bin newview/alchemy-bin.debug newview/alchemy-bin.src.zip packages/ }
- Pop-Location
- Push-Location ./build-darwin-64/
- Push-Location ./newview/
- $MacFileName = Get-ChildItem -Path . -Name -Include Alchemy_*.dmg
- $MacFileHash = (Get-FileHash .\$MacFileName -a sha256).Hash
- $MacPackageUrl = "${UploadDestURL}/${MacFileName}"
- $MacUploadResult = Invoke-WebRequest -HttpVersion 2.0 @UploadParams -InFile ./$MacFileName -Uri "${MacPackageUrl}${DestStatus}" | ConvertFrom-Json
- If ($MacFileHash -ne $MacUploadResult.file_sha256) { Write-Output "Upload hash mismatch. expected $Hash actual $($MacUploadResult.file_sha256)" && Exit 1 }
- Pop-Location
- If ($env:USE_SENTRY -eq 'TRUE') { sentry-cli upload-dif newview/Release/ packages/ }
- Pop-Location
- Push-Location ./build-vc-64/
- Push-Location ./newview/Release/
- $WinFileName = Get-ChildItem -Path . -Name -Include Alchemy_*_Setup.exe
- $WinFileHash = (Get-FileHash .\$WinFileName -a sha256).Hash
- $WinPackageUrl = "${UploadDestURL}/${WinFileName}"
- $WinUploadResult = Invoke-WebRequest -HttpVersion 2.0 @UploadParams -InFile ./$WinFileName -Uri "${WinPackageUrl}${DestStatus}" | ConvertFrom-Json
- If ($WinFileHash -ne $WinUploadResult.file_sha256) { Write-Output "Upload hash mismatch. expected $Hash actual $($WinUploadResult.file_sha256)" && Exit 1 }
- Pop-Location
- $AlchemyBinPath = Resolve-Path newview/Release/alchemy-bin.*
- If ($env:USE_SENTRY -eq 'TRUE') { sentry-cli upload-dif $AlchemyBinPath packages/ }
- Pop-Location
- If ($env:USE_SENTRY -eq 'TRUE') { sentry-cli releases finalize $BuildChannelVersion }
- Write-Output "Deploy Success!"
- Write-Output "Package Listing > https://git.alchemyviewer.org/alchemy/alchemy-next/-/packages/$($WinUploadResult.package_id)"
- Write-Output "Windows Package > ${WinPackageUrl}"
- Write-Output "macOS Package > ${MacPackageUrl}"
- Write-Output "Linux Package > ${LnxPackageUrl}"
upload:project:
extends:
- .upload_template
rules:
- if: '$BUILD_CHANNEL == "Project" && ($CI_PIPELINE_SOURCE == "web" || $CI_PIPELINE_SOURCE == "schedule")'
when: manual
- if: '$CI_COMMIT_TAG =~ /.*-project/'
when: manual
upload:beta:
extends:
- .upload_template
rules:
- if: '$BUILD_CHANNEL == "Beta" && ($CI_PIPELINE_SOURCE == "web" || $CI_PIPELINE_SOURCE == "schedule")'
when: manual
- if: '$CI_COMMIT_TAG =~ /.*-beta/'
when: manual
upload:release:
extends:
- .upload_template
rules:
- if: '$BUILD_CHANNEL == "Release" && ($CI_PIPELINE_SOURCE == "web" || $CI_PIPELINE_SOURCE == "schedule")'
when: manual
- if: '$CI_COMMIT_TAG =~ /.*-release/'
when: manual