mirror of
https://github.com/Redot-Engine/redot-engine.git
synced 2025-12-05 23:07:42 -05:00
Moved all build steps to a single stage. Fixed various typos. Reordered the Mac stages so that they occur earlier in the pipeline maximizing efficiency. Bug fixes to the Mac signing jobs. Added packaging stage to create a single download file from artifacts. Fixed the nuget push command.
1391 lines
41 KiB
YAML
1391 lines
41 KiB
YAML
stages:
|
|
- build
|
|
- package
|
|
|
|
.template-build:
|
|
tags: [ docker ]
|
|
rules:
|
|
- if: $DO_RELEASE == "true"
|
|
before_script:
|
|
- export SCONS="scons -j$(nproc) verbose=no warnings=no progress=no"
|
|
- export BUILD_NAME="official"
|
|
script:
|
|
- /root/scripts/Fetch_Deps.sh "$PLATFORM"
|
|
- mkdir -p out/$PLATFORM/$ARCH/$TYPE
|
|
- $SCONS platform=$PLATFORM arch=$ARCH $OPTIONS target=$TARGET
|
|
- cp -r bin/* out/$PLATFORM/$ARCH/$TYPE/
|
|
artifacts:
|
|
expire_in: 3 days
|
|
public: false
|
|
paths:
|
|
- out/$PLATFORM/$ARCH/$TYPE
|
|
|
|
.build-release-template:
|
|
rules:
|
|
- if: $DO_RELEASE == "true"
|
|
script:
|
|
- /root/scripts/Fetch_Deps.sh "$PLATFORM"
|
|
- mkdir -p out/templates
|
|
- $SCONS platform=$PLATFORM arch=$ARCH $OPTIONS target=$TARGET
|
|
- cp -r bin/* out/templates
|
|
|
|
.build-release-template-mono:
|
|
needs: [linux-editor-x64-mono]
|
|
rules:
|
|
- if: $DO_RELEASE == "true"
|
|
script:
|
|
- /root/scripts/Fetch_Deps.sh "$PLATFORM"
|
|
- cp -r mono-glue/GodotSharp/GodotSharp/Generated modules/mono/glue/GodotSharp/GodotSharp/
|
|
- cp -r mono-glue/GodotSharp/GodotSharpEditor/Generated modules/mono/glue/GodotSharp/GodotSharpEditor/
|
|
- mkdir -p out/templates-mono
|
|
- $SCONS platform=$PLATFORM arch=$ARCH $OPTIONS module_mono_enabled=yes target=$TARGET
|
|
- cp -r bin/* out/templates-mono
|
|
|
|
.Template-Linux:
|
|
extends: .template-build
|
|
image: $CI_REGISTRY/redot-engine/redot-production-containers/redot-linux:latest
|
|
rules:
|
|
- if: $DO_RELEASE == "true"
|
|
before_script:
|
|
# Detect the right SDK and compiler paths
|
|
- !reference [.template-build, before_script]
|
|
- |
|
|
case "$ARCH" in
|
|
x86_32)
|
|
export PATH="$GODOT_SDK_LINUX_X86_32/bin:$PATH"
|
|
export CC="i686-godot-linux-gnu-gcc"
|
|
export CXX="i686-godot-linux-gnu-g++"
|
|
;;
|
|
x86_64)
|
|
export PATH="$GODOT_SDK_LINUX_X86_64/bin:$PATH"
|
|
export CC="x86_64-godot-linux-gnu-gcc"
|
|
export CXX="x86_64-godot-linux-gnu-g++"
|
|
;;
|
|
arm64)
|
|
export PATH="$GODOT_SDK_LINUX_ARM64/bin:$PATH"
|
|
export CC="aarch64-godot-linux-gnu-gcc"
|
|
export CXX="aarch64-godot-linux-gnu-g++"
|
|
;;
|
|
arm32)
|
|
export PATH="$GODOT_SDK_LINUX_ARM32/bin:$PATH"
|
|
export CC="arm-godot-linux-gnueabihf-gcc"
|
|
export CXX="arm-godot-linux-gnueabihf-g++"
|
|
;;
|
|
esac
|
|
variables:
|
|
OPTIONS: "production=yes"
|
|
PLATFORM: "linuxbsd"
|
|
|
|
.Template-Linux-Mono:
|
|
extends: .template-build-mono
|
|
image: $CI_REGISTRY/redot-engine/redot-production-containers/redot-linux:latest
|
|
before_script:
|
|
- !reference [.Template-Linux, before_script]
|
|
variables:
|
|
OPTIONS: "production=yes"
|
|
PLATFORM: "linuxbsd"
|
|
|
|
.Template-Release-Template-Linux:
|
|
extends: .Template-Linux
|
|
rules:
|
|
- if: $DO_RELEASE == "true"
|
|
script:
|
|
- !reference [.build-release-template, script]
|
|
artifacts:
|
|
public: false
|
|
expire_in: 3 days
|
|
paths:
|
|
- out/templates
|
|
|
|
.Template-Release-Template-Linux-Mono:
|
|
extends: .Template-Linux
|
|
needs: [ linux-editor-x64-mono ]
|
|
rules:
|
|
- if: $DO_RELEASE == "true"
|
|
script:
|
|
- !reference [.build-release-template-mono, script]
|
|
artifacts:
|
|
public: false
|
|
expire_in: 3 days
|
|
paths:
|
|
- out/templates-mono
|
|
|
|
.Template-Windows:
|
|
extends: .template-build
|
|
rules:
|
|
- if: $DO_RELEASE == "true"
|
|
image: $CI_REGISTRY/redot-engine/redot-production-containers/redot-windows:latest
|
|
before_script:
|
|
- !reference [.template-build, before_script]
|
|
- export OPTIONS="production=yes use_mingw=yes angle_libs=$(pwd)/deps/angle mesa_libs=$(pwd)/deps/mesa"
|
|
variables:
|
|
PLATFORM: "windows"
|
|
|
|
.Template-Windows-Mono:
|
|
extends: .template-build-mono
|
|
rules:
|
|
- if: $DO_RELEASE == "true"
|
|
image: $CI_REGISTRY/redot-engine/redot-production-containers/redot-windows:latest
|
|
before_script:
|
|
- !reference [.template-build, before_script]
|
|
- export OPTIONS="production=yes use_mingw=yes angle_libs=$(pwd)/deps/angle mesa_libs=$(pwd)/deps/mesa"
|
|
variables:
|
|
PLATFORM: "windows"
|
|
|
|
.Template-Release-Template-Windows:
|
|
extends: .template-build
|
|
rules:
|
|
- if: $DO_RELEASE == "true"
|
|
image: $CI_REGISTRY/redot-engine/redot-production-containers/redot-windows:latest
|
|
before_script:
|
|
- !reference [.template-build, before_script]
|
|
- export OPTIONS="production=yes use_mingw=yes angle_libs=$(pwd)/deps/angle mesa_libs=$(pwd)/deps/mesa"
|
|
script:
|
|
- !reference [ .build-release-template, script ]
|
|
variables:
|
|
PLATFORM: "windows"
|
|
artifacts:
|
|
public: false
|
|
expire_in: 3 days
|
|
paths:
|
|
- out/templates
|
|
|
|
.Template-Release-Template-Windows-Mono:
|
|
extends: .template-build-mono
|
|
rules:
|
|
- if: $DO_RELEASE == "true"
|
|
image: $CI_REGISTRY/redot-engine/redot-production-containers/redot-windows:latest
|
|
before_script:
|
|
- !reference [.template-build, before_script]
|
|
- export OPTIONS="production=yes use_mingw=yes angle_libs=$(pwd)/deps/angle mesa_libs=$(pwd)/deps/mesa"
|
|
script:
|
|
- !reference [ .build-release-template-mono, script ]
|
|
variables:
|
|
PLATFORM: "windows"
|
|
artifacts:
|
|
public: false
|
|
expire_in: 3 days
|
|
paths:
|
|
- out/templates-mono
|
|
|
|
|
|
.Template-macos:
|
|
extends: .template-build
|
|
rules:
|
|
- if: $DO_RELEASE == "true"
|
|
image: $CI_REGISTRY/redot-engine/redot-production-containers/redot-osx:latest
|
|
before_script:
|
|
- !reference [ .template-build, before_script ]
|
|
- export OPTIONS="osxcross_sdk=darwin24.2 production=yes use_volk=no vulkan_sdk_path=$(pwd)/deps/moltenvk angle_libs=$(pwd)/deps/angle"
|
|
variables:
|
|
PLATFORM: "macos"
|
|
|
|
.Template-macos-mono:
|
|
extends: .template-build-mono
|
|
rules:
|
|
- if: $DO_RELEASE == "true"
|
|
image: $CI_REGISTRY/redot-engine/redot-production-containers/redot-osx:latest
|
|
before_script:
|
|
- !reference [ .template-build-mono, before_script ]
|
|
- export OPTIONS="osxcross_sdk=darwin24.2 production=yes use_volk=no vulkan_sdk_path=$(pwd)/deps/moltenvk angle_libs=$(pwd)/deps/angle"
|
|
variables:
|
|
PLATFORM: "macos"
|
|
|
|
.Template-Release-Template-macos:
|
|
extends: .template-build
|
|
rules:
|
|
- if: $DO_RELEASE == "true"
|
|
image: $CI_REGISTRY/redot-engine/redot-production-containers/redot-osx:latest
|
|
before_script:
|
|
- !reference [ .template-build, before_script ]
|
|
- export OPTIONS="osxcross_sdk=darwin24.2 production=yes use_volk=no vulkan_sdk_path=$(pwd)/deps/moltenvk angle_libs=$(pwd)/deps/angle"
|
|
script:
|
|
- !reference [ .build-release-template, script ]
|
|
variables:
|
|
PLATFORM: "macos"
|
|
artifacts:
|
|
public: false
|
|
expire_in: 3 days
|
|
paths:
|
|
- out/templates
|
|
|
|
.Template-Release-Template-macos-mono:
|
|
extends: .template-build-mono
|
|
rules:
|
|
- if: $DO_RELEASE == "true"
|
|
image: $CI_REGISTRY/redot-engine/redot-production-containers/redot-osx:latest
|
|
before_script:
|
|
- !reference [ .template-build-mono, before_script ]
|
|
- export OPTIONS="osxcross_sdk=darwin24.2 production=yes use_volk=no vulkan_sdk_path=$(pwd)/deps/moltenvk angle_libs=$(pwd)/deps/angle"
|
|
script:
|
|
- !reference [ .build-release-template-mono, script ]
|
|
variables:
|
|
PLATFORM: "macos"
|
|
artifacts:
|
|
public: false
|
|
expire_in: 3 days
|
|
paths:
|
|
- out/templates-mono
|
|
|
|
|
|
.Template-Ios:
|
|
extends: .template-build
|
|
rules:
|
|
- if: $DO_RELEASE == "true"
|
|
image: $CI_REGISTRY/redot-engine/redot-production-containers/redot-ios:latest
|
|
variables:
|
|
OPTIONS: "production=yes use_lto=no"
|
|
PLATFORM: "ios"
|
|
before_script:
|
|
- !reference [ .template-build, before_script ]
|
|
- export IOS_SDK="18.2"
|
|
- |
|
|
if [ "$TYPE" == "iPhoneSimulator" ]; then
|
|
if [ "$ARCH" == "x86_64" ]; then
|
|
export TOOLCHAIN_PATH="/root/ioscross/x86_64_sim/"
|
|
else
|
|
export TOOLCHAIN_PATH="/root/ioscross/arm64_sim/"
|
|
fi
|
|
export OPTIONS="production=yes use_lto=no IOS_SDK_PATH=${TOOLCHAIN_PATH}SDK/${TYPE}${IOS_SDK}.sdk IOS_TOOLCHAIN_PATH=${TOOLCHAIN_PATH} ios_triple=$ARCH-apple-darwin11- ios_simulator=yes"
|
|
else
|
|
export TOOLCHAIN_PATH="/root/ioscross/arm64/"
|
|
export OPTIONS="production=yes use_lto=no IOS_SDK_PATH=${TOOLCHAIN_PATH}SDK/${TYPE}${IOS_SDK}.sdk IOS_TOOLCHAIN_PATH=${TOOLCHAIN_PATH} ios_triple=arm-apple-darwin11- ios_simulator=no"
|
|
fi
|
|
- export TERM=xterm
|
|
- export IOS_LIPO="/root/ioscross/arm64/bin/arm-apple-darwin11-lipo"
|
|
script:
|
|
- !reference [ .build-release-template, script ]
|
|
artifacts:
|
|
public: false
|
|
expire_in: 3 days
|
|
paths:
|
|
- out/templates/
|
|
|
|
.Template-Ios-Mono:
|
|
extends: .template-build-mono
|
|
needs: [linux-editor-x64-mono]
|
|
rules:
|
|
- if: $DO_RELEASE == "true"
|
|
image: $CI_REGISTRY/redot-engine/redot-production-containers/redot-ios:latest
|
|
variables:
|
|
PLATFORM: "ios"
|
|
before_script:
|
|
- !reference [.template-build, before_script]
|
|
- export IOS_SDK="18.2"
|
|
- |
|
|
if [ "$TYPE" == "iPhoneSimulator" ]; then
|
|
if [ "$ARCH" == "x86_64" ]; then
|
|
export TOOLCHAIN_PATH="/root/ioscross/x86_64_sim/"
|
|
else
|
|
export TOOLCHAIN_PATH="/root/ioscross/arm64_sim/"
|
|
fi
|
|
export OPTIONS="production=yes use_lto=no IOS_SDK_PATH=${TOOLCHAIN_PATH}SDK/${TYPE}${IOS_SDK}.sdk IOS_TOOLCHAIN_PATH=${TOOLCHAIN_PATH} ios_triple=$ARCH-apple-darwin11- ios_simulator=yes"
|
|
else
|
|
export TOOLCHAIN_PATH="/root/ioscross/arm64/"
|
|
export OPTIONS="production=yes use_lto=no IOS_SDK_PATH=${TOOLCHAIN_PATH}SDK/${TYPE}${IOS_SDK}.sdk IOS_TOOLCHAIN_PATH=${TOOLCHAIN_PATH} ios_triple=arm-apple-darwin11- ios_simulator=no"
|
|
fi
|
|
- export TERM=xterm
|
|
- export IOS_LIPO="/root/ioscross/arm64/bin/arm-apple-darwin11-lipo"
|
|
script:
|
|
- !reference [ .build-release-template-mono, script ]
|
|
artifacts:
|
|
public: false
|
|
expire_in: 3 days
|
|
paths:
|
|
- out/templates-mono/
|
|
|
|
|
|
|
|
.template-build-mono:
|
|
extends: .template-build
|
|
needs: [ linux-editor-x64-mono ]
|
|
script:
|
|
- /root/scripts/Fetch_Deps.sh "$PLATFORM"
|
|
- mkdir -p out/$PLATFORM/$ARCH/$TYPE-mono
|
|
- $SCONS platform=$PLATFORM arch=$ARCH $OPTIONS module_mono_enabled=yes target=$TARGET
|
|
- cp -r mono-glue/GodotSharp/GodotSharp/Generated modules/mono/glue/GodotSharp/GodotSharp/
|
|
- cp -r mono-glue/GodotSharp/GodotSharpEditor/Generated modules/mono/glue/GodotSharp/GodotSharpEditor/
|
|
- ./modules/mono/build_scripts/build_assemblies.py --godot-output-dir=./bin --godot-platform=$PLATFORM
|
|
- cp -r bin/* out/$PLATFORM/$ARCH/$TYPE-mono/
|
|
artifacts:
|
|
public: false
|
|
expire_in: 3 days
|
|
paths:
|
|
- out/$PLATFORM/$ARCH/$TYPE-mono
|
|
- mono-glue/
|
|
|
|
# -- Build the Linux Editors --
|
|
linux-editor-x64-mono:
|
|
tags: [ docker ]
|
|
image: $CI_REGISTRY/redot-engine/redot-production-containers/redot-linux:latest
|
|
rules:
|
|
- when: always
|
|
stage: build
|
|
before_script:
|
|
- export SCONS="scons -j$(nproc) verbose=no warnings=no progress=no"
|
|
- export BUILD_NAME="official"
|
|
- |
|
|
case "$ARCH" in
|
|
x86_32)
|
|
export PATH="$GODOT_SDK_LINUX_X86_32/bin:$PATH"
|
|
export CC="i686-godot-linux-gnu-gcc"
|
|
export CXX="i686-godot-linux-gnu-g++"
|
|
;;
|
|
x86_64)
|
|
export PATH="$GODOT_SDK_LINUX_X86_64/bin:$PATH"
|
|
export CC="x86_64-godot-linux-gnu-gcc"
|
|
export CXX="x86_64-godot-linux-gnu-g++"
|
|
;;
|
|
arm64)
|
|
export PATH="$GODOT_SDK_LINUX_ARM64/bin:$PATH"
|
|
export CC="aarch64-godot-linux-gnu-gcc"
|
|
export CXX="aarch64-godot-linux-gnu-g++"
|
|
;;
|
|
arm32)
|
|
export PATH="$GODOT_SDK_LINUX_ARM32/bin:$PATH"
|
|
export CC="arm-godot-linux-gnueabihf-gcc"
|
|
export CXX="arm-godot-linux-gnueabihf-g++"
|
|
;;
|
|
esac
|
|
script:
|
|
- /root/scripts/Fetch_Deps.sh "$PLATFORM"
|
|
- mkdir -p out/$PLATFORM/$ARCH/$TYPE-mono
|
|
- mkdir -p mono-glue
|
|
- $SCONS platform=$PLATFORM arch=$ARCH $OPTIONS module_mono_enabled=yes target=$TARGET
|
|
- bin/redot.linuxbsd.editor.x86_64.mono --headless --generate-mono-glue "$(pwd)/mono-glue"
|
|
- cp -r mono-glue/GodotSharp/GodotSharp/Generated modules/mono/glue/GodotSharp/GodotSharp/
|
|
- cp -r mono-glue/GodotSharp/GodotSharpEditor/Generated modules/mono/glue/GodotSharp/GodotSharpEditor/
|
|
- ./modules/mono/build_scripts/build_assemblies.py --godot-output-dir=./bin --godot-platform=$PLATFORM
|
|
- cp -r bin/* out/$PLATFORM/$ARCH/$TYPE-mono/
|
|
variables:
|
|
OPTIONS: "production=yes"
|
|
PLATFORM: "linuxbsd"
|
|
ARCH: "x86_64"
|
|
TYPE: "tools"
|
|
TARGET: "editor"
|
|
MONO: "-mono"
|
|
artifacts:
|
|
public: false
|
|
expire_in: 3 days
|
|
paths:
|
|
- out/$PLATFORM/$ARCH/$TYPE-mono
|
|
- mono-glue/
|
|
|
|
linux-editor-x64:
|
|
stage: build
|
|
extends: .Template-Linux
|
|
variables:
|
|
ARCH: "x86_64"
|
|
TYPE: "tools"
|
|
TARGET: "editor"
|
|
|
|
linux-editor-x86:
|
|
stage: build
|
|
extends: .Template-Linux
|
|
variables:
|
|
ARCH: "x86_32"
|
|
TYPE: "tools"
|
|
TARGET: "editor"
|
|
|
|
linux-editor-arm32:
|
|
stage: build
|
|
extends: .Template-Linux
|
|
variables:
|
|
ARCH: "arm32"
|
|
TYPE: "tools"
|
|
TARGET: "editor"
|
|
|
|
linux-editor-arm64:
|
|
stage: build
|
|
extends: .Template-Linux
|
|
variables:
|
|
ARCH: "arm64"
|
|
TYPE: "tools"
|
|
TARGET: "editor"
|
|
|
|
linux-editor-mono-x86:
|
|
stage: build
|
|
extends: .Template-Linux-Mono
|
|
variables:
|
|
ARCH: "x86_32"
|
|
TYPE: "tools"
|
|
TARGET: "editor"
|
|
|
|
linux-editor-mono-arm32:
|
|
stage: build
|
|
extends: .Template-Linux-Mono
|
|
variables:
|
|
ARCH: "arm32"
|
|
TYPE: "tools"
|
|
TARGET: "editor"
|
|
|
|
linux-editor-mono-arm64:
|
|
stage: build
|
|
extends: .Template-Linux-Mono
|
|
variables:
|
|
ARCH: "arm64"
|
|
TYPE: "tools"
|
|
TARGET: "editor"
|
|
|
|
|
|
# -- Build the Windows Editors --
|
|
|
|
windows-editor-x64:
|
|
stage: build
|
|
extends: .Template-Windows
|
|
variables:
|
|
ARCH: "x86_64"
|
|
TYPE: "tools"
|
|
TARGET: "editor"
|
|
|
|
windows-editor-x32:
|
|
stage: build
|
|
extends: .Template-Windows
|
|
variables:
|
|
ARCH: "x86_32"
|
|
TYPE: "tools"
|
|
TARGET: "editor"
|
|
|
|
windows-editor-arm64:
|
|
stage: build
|
|
extends: .Template-Windows
|
|
before_script:
|
|
- !reference [ .template-build, before_script ]
|
|
- export OPTIONS="production=yes use_mingw=yes angle_libs=$(pwd)/deps/angle mesa_libs=$(pwd)/deps/mesa use_llvm=yes mingw_prefix=/root/llvm-mingw"
|
|
variables:
|
|
ARCH: "arm64"
|
|
TYPE: "tools"
|
|
TARGET: "editor"
|
|
|
|
# -- Windows Editor Mono --
|
|
|
|
windows-editor-x64-mono:
|
|
stage: build
|
|
extends: .Template-Windows-Mono
|
|
variables:
|
|
ARCH: "x86_64"
|
|
TYPE: "tools"
|
|
TARGET: "editor"
|
|
|
|
windows-editor-x32-mono:
|
|
stage: build
|
|
extends: .Template-Windows-Mono
|
|
variables:
|
|
ARCH: "x86_32"
|
|
TYPE: "tools"
|
|
TARGET: "editor"
|
|
|
|
windows-editor-arm64-mono:
|
|
stage: build
|
|
extends: .Template-Windows-Mono
|
|
before_script:
|
|
- !reference [ .template-build, before_script ]
|
|
- export OPTIONS="production=yes use_mingw=yes angle_libs=$(pwd)/deps/angle mesa_libs=$(pwd)/deps/mesa use_llvm=yes mingw_prefix=/root/llvm-mingw"
|
|
variables:
|
|
ARCH: "arm64"
|
|
TYPE: "tools"
|
|
TARGET: "editor"
|
|
|
|
# -- Build Mac editor --
|
|
macos-editor-x64:
|
|
stage: build
|
|
extends: .Template-macos
|
|
variables:
|
|
ARCH: "x86_64"
|
|
TYPE: "tools"
|
|
TARGET: "editor"
|
|
|
|
macos-editor-arm64:
|
|
stage: build
|
|
extends: .Template-macos
|
|
variables:
|
|
ARCH: "arm64"
|
|
TYPE: "tools"
|
|
TARGET: "editor"
|
|
|
|
# -- Build Mac Editor Mono --
|
|
|
|
macos-editor-x64-mono:
|
|
stage: build
|
|
extends: .Template-macos-mono
|
|
variables:
|
|
ARCH: "x86_64"
|
|
TYPE: "tools"
|
|
TARGET: "editor"
|
|
|
|
macos-editor-arm64-mono:
|
|
stage: build
|
|
extends: .Template-macos-mono
|
|
variables:
|
|
ARCH: "arm64"
|
|
TYPE: "tools"
|
|
TARGET: "editor"
|
|
|
|
|
|
|
|
# Release templates below this point.
|
|
# -- 64 bit Linux --
|
|
build-Linux-Release-Template-x64:
|
|
stage: build
|
|
extends: .Template-Release-Template-Linux
|
|
variables:
|
|
ARCH: "x86_64"
|
|
TYPE: "template"
|
|
TARGET: "template_release"
|
|
|
|
|
|
build-Linux-Debug-Template-x64:
|
|
stage: build
|
|
extends: .Template-Release-Template-Linux
|
|
variables:
|
|
ARCH: "x86_64"
|
|
TYPE: "template"
|
|
TARGET: "template_debug"
|
|
|
|
build-Linux-Release-Template-x64-Mono:
|
|
stage: build
|
|
extends: .Template-Release-Template-Linux-Mono
|
|
variables:
|
|
ARCH: "x86_64"
|
|
TYPE: "template"
|
|
TARGET: "template_release"
|
|
|
|
|
|
build-Linux-Debug-Template-x64-Mono:
|
|
stage: build
|
|
extends: .Template-Release-Template-Linux-Mono
|
|
variables:
|
|
ARCH: "x86_64"
|
|
TYPE: "template"
|
|
TARGET: "template_debug"
|
|
|
|
# -- 32 bit Linux --
|
|
build-Linux-Release-Template-x86:
|
|
stage: build
|
|
extends: .Template-Release-Template-Linux
|
|
variables:
|
|
ARCH: "x86_32"
|
|
TYPE: "template"
|
|
TARGET: "template_release"
|
|
|
|
|
|
build-Linux-Debug-Template-x86:
|
|
stage: build
|
|
extends: .Template-Release-Template-Linux
|
|
variables:
|
|
ARCH: "x86_32"
|
|
TYPE: "template"
|
|
TARGET: "template_debug"
|
|
|
|
build-Linux-Release-Template-x86-Mono:
|
|
stage: build
|
|
extends: .Template-Release-Template-Linux-Mono
|
|
variables:
|
|
ARCH: "x86_32"
|
|
TYPE: "template"
|
|
TARGET: "template_release"
|
|
|
|
|
|
build-Linux-Debug-Template-x86-Mono:
|
|
stage: build
|
|
extends: .Template-Release-Template-Linux-Mono
|
|
variables:
|
|
ARCH: "x86_32"
|
|
TYPE: "template"
|
|
TARGET: "template_debug"
|
|
|
|
# -- ARM64 LINUX
|
|
build-Linux-Release-Template-arm64:
|
|
stage: build
|
|
extends: .Template-Release-Template-Linux
|
|
variables:
|
|
ARCH: "arm64"
|
|
TYPE: "template"
|
|
TARGET: "template_release"
|
|
|
|
|
|
build-Linux-Debug-Template-arm64:
|
|
stage: build
|
|
extends: .Template-Release-Template-Linux
|
|
variables:
|
|
ARCH: "arm64"
|
|
TYPE: "template"
|
|
TARGET: "template_debug"
|
|
|
|
build-Linux-Release-Template-arm64-Mono:
|
|
stage: build
|
|
extends: .Template-Release-Template-Linux-Mono
|
|
variables:
|
|
ARCH: "arm64"
|
|
TYPE: "template"
|
|
TARGET: "template_release"
|
|
|
|
|
|
build-Linux-Debug-Template-arm64-Mono:
|
|
stage: build
|
|
extends: .Template-Release-Template-Linux-Mono
|
|
variables:
|
|
ARCH: "arm64"
|
|
TYPE: "template"
|
|
TARGET: "template_debug"
|
|
|
|
# ARM 32 LINUX
|
|
build-Linux-Release-Template-arm32:
|
|
stage: build
|
|
extends: .Template-Release-Template-Linux
|
|
variables:
|
|
ARCH: "arm32"
|
|
TYPE: "template"
|
|
TARGET: "template_release"
|
|
|
|
|
|
build-Linux-Debug-Template-arm32:
|
|
stage: build
|
|
extends: .Template-Release-Template-Linux
|
|
variables:
|
|
ARCH: "arm32"
|
|
TYPE: "template"
|
|
TARGET: "template_debug"
|
|
|
|
build-Linux-Release-Template-arm32-Mono:
|
|
stage: build
|
|
extends: .Template-Release-Template-Linux-Mono
|
|
variables:
|
|
ARCH: "arm32"
|
|
TYPE: "template"
|
|
TARGET: "template_release"
|
|
|
|
|
|
build-Linux-Debug-Template-arm32-Mono:
|
|
stage: build
|
|
extends: .Template-Release-Template-Linux-Mono
|
|
variables:
|
|
ARCH: "arm32"
|
|
TYPE: "template"
|
|
TARGET: "template_debug"
|
|
|
|
# -- WINDOWS TEMPLATES
|
|
# -- 64 bit Windows --
|
|
build-Windows-Release-Template-x64:
|
|
stage: build
|
|
extends: .Template-Release-Template-Windows
|
|
variables:
|
|
ARCH: "x86_64"
|
|
TYPE: "template"
|
|
TARGET: "template_release"
|
|
|
|
|
|
build-Windows-Debug-Template-x64:
|
|
stage: build
|
|
extends: .Template-Release-Template-Windows
|
|
variables:
|
|
ARCH: "x86_64"
|
|
TYPE: "template"
|
|
TARGET: "template_debug"
|
|
|
|
build-Windows-Release-Template-x64-Mono:
|
|
stage: build
|
|
extends: .Template-Release-Template-Windows-Mono
|
|
variables:
|
|
ARCH: "x86_64"
|
|
TYPE: "template"
|
|
TARGET: "template_release"
|
|
|
|
|
|
build-Windows-Debug-Template-x64-Mono:
|
|
stage: build
|
|
extends: .Template-Release-Template-Windows-Mono
|
|
variables:
|
|
ARCH: "x86_64"
|
|
TYPE: "template"
|
|
TARGET: "template_debug"
|
|
|
|
# -- 32 bit WINDOWS --
|
|
build-Windows-Release-Template-x86:
|
|
stage: build
|
|
extends: .Template-Release-Template-Windows
|
|
variables:
|
|
ARCH: "x86_32"
|
|
TYPE: "template"
|
|
TARGET: "template_release"
|
|
|
|
|
|
build-Windows-Debug-Template-x86:
|
|
stage: build
|
|
extends: .Template-Release-Template-Windows
|
|
variables:
|
|
ARCH: "x86_32"
|
|
TYPE: "template"
|
|
TARGET: "template_debug"
|
|
|
|
build-Windows-Release-Template-x86-Mono:
|
|
stage: build
|
|
extends: .Template-Release-Template-Windows-Mono
|
|
variables:
|
|
ARCH: "x86_32"
|
|
TYPE: "template"
|
|
TARGET: "template_release"
|
|
|
|
|
|
build-Windows-Debug-Template-x86-Mono:
|
|
stage: build
|
|
extends: .Template-Release-Template-Windows-Mono
|
|
variables:
|
|
ARCH: "x86_32"
|
|
TYPE: "template"
|
|
TARGET: "template_debug"
|
|
|
|
# -- ARM64 WINDOWS --
|
|
build-Windows-Release-Template-arm64:
|
|
stage: build
|
|
extends: .Template-Release-Template-Windows
|
|
before_script:
|
|
- !reference [ .template-build, before_script ]
|
|
- export OPTIONS="production=yes use_mingw=yes angle_libs=$(pwd)/deps/angle mesa_libs=$(pwd)/deps/mesa use_llvm=yes mingw_prefix=/root/llvm-mingw"
|
|
variables:
|
|
ARCH: "arm64"
|
|
TYPE: "template"
|
|
TARGET: "template_release"
|
|
|
|
|
|
build-Windows-Debug-Template-arm64:
|
|
stage: build
|
|
extends: .Template-Release-Template-Windows
|
|
before_script:
|
|
- !reference [ .template-build, before_script ]
|
|
- export OPTIONS="production=yes use_mingw=yes angle_libs=$(pwd)/deps/angle mesa_libs=$(pwd)/deps/mesa use_llvm=yes mingw_prefix=/root/llvm-mingw"
|
|
variables:
|
|
ARCH: "arm64"
|
|
TYPE: "template"
|
|
TARGET: "template_debug"
|
|
|
|
build-Windows-Release-Template-arm64-Mono:
|
|
stage: build
|
|
before_script:
|
|
- !reference [ .template-build, before_script ]
|
|
- export OPTIONS="production=yes use_mingw=yes angle_libs=$(pwd)/deps/angle mesa_libs=$(pwd)/deps/mesa use_llvm=yes mingw_prefix=/root/llvm-mingw"
|
|
extends: .Template-Release-Template-Windows-Mono
|
|
variables:
|
|
ARCH: "arm64"
|
|
TYPE: "template"
|
|
TARGET: "template_release"
|
|
|
|
|
|
build-Windows-Debug-Template-arm64-Mono:
|
|
stage: build
|
|
extends: .Template-Release-Template-Windows-Mono
|
|
before_script:
|
|
- !reference [ .template-build, before_script ]
|
|
- export OPTIONS="production=yes use_mingw=yes angle_libs=$(pwd)/deps/angle mesa_libs=$(pwd)/deps/mesa use_llvm=yes mingw_prefix=/root/llvm-mingw"
|
|
variables:
|
|
ARCH: "arm64"
|
|
TYPE: "template"
|
|
TARGET: "template_debug"
|
|
|
|
|
|
# --Release templates for Macos --
|
|
|
|
# -- 64 bit Macos --
|
|
build-Macos-Release-Template-x64:
|
|
stage: build
|
|
extends: .Template-Release-Template-macos
|
|
variables:
|
|
ARCH: "x86_64"
|
|
TYPE: "template"
|
|
TARGET: "template_release"
|
|
|
|
|
|
build-Macos-Debug-Template-x64:
|
|
stage: build
|
|
extends: .Template-Release-Template-macos
|
|
variables:
|
|
ARCH: "x86_64"
|
|
TYPE: "template"
|
|
TARGET: "template_debug"
|
|
|
|
build-Macos-Release-Template-x64-Mono:
|
|
stage: build
|
|
extends: .Template-Release-Template-macos-mono
|
|
variables:
|
|
ARCH: "x86_64"
|
|
TYPE: "template"
|
|
TARGET: "template_release"
|
|
|
|
|
|
build-Macos-Debug-Template-x64-Mono:
|
|
stage: build
|
|
extends: .Template-Release-Template-macos-mono
|
|
variables:
|
|
ARCH: "x86_64"
|
|
TYPE: "template"
|
|
TARGET: "template_debug"
|
|
|
|
|
|
# -- ARM64 Macos
|
|
build-Macos-Release-Template-arm64:
|
|
stage: build
|
|
extends: .Template-Release-Template-macos
|
|
variables:
|
|
ARCH: "arm64"
|
|
TYPE: "template"
|
|
TARGET: "template_release"
|
|
|
|
|
|
build-Macos-Debug-Template-arm64:
|
|
stage: build
|
|
extends: .Template-Release-Template-macos
|
|
variables:
|
|
ARCH: "arm64"
|
|
TYPE: "template"
|
|
TARGET: "template_debug"
|
|
|
|
build-Macos-Release-Template-arm64-Mono:
|
|
stage: build
|
|
extends: .Template-Release-Template-macos-mono
|
|
variables:
|
|
ARCH: "arm64"
|
|
TYPE: "template"
|
|
TARGET: "template_release"
|
|
|
|
|
|
build-Macos-Debug-Template-arm64-Mono:
|
|
stage: build
|
|
extends: .Template-Release-Template-macos-mono
|
|
variables:
|
|
ARCH: "arm64"
|
|
TYPE: "template"
|
|
TARGET: "template_debug"
|
|
|
|
Merge-Mac-Editor:
|
|
stage: build
|
|
needs: [macos-editor-x64, macos-editor-arm64, macos-editor-arm64-mono, macos-editor-x64-mono]
|
|
tags: [docker]
|
|
image: $CI_REGISTRY/redot-engine/redot-production-containers/redot-osx:latest
|
|
rules:
|
|
- if: $DO_RELEASE == "true"
|
|
script:
|
|
- LOCTOOLS="out/macos/universal/tools"
|
|
- LOCMONO="out/macos/universal/tools-mono"
|
|
- mkdir -p $LOCTOOLS
|
|
- mkdir -p "out/macos/universal/tools-mono"
|
|
- lipo -create "out/macos/x86_64/tools/redot.macos.editor.x86_64" "out/macos/arm64/tools/redot.macos.editor.arm64" -output "$LOCTOOLS/redot.macos.editor.universal"
|
|
- lipo -create "out/macos/x86_64/tools-mono/redot.macos.editor.x86_64.mono" "out/macos/arm64/tools-mono/redot.macos.editor.arm64.mono" -output "$LOCMONO/redot.macos.editor.universal.mono"
|
|
- cp -r out/macos/arm64/tools-mono/GodotSharp "$LOCMONO/"
|
|
artifacts:
|
|
public: false
|
|
paths:
|
|
- out/macos/*
|
|
|
|
Merge-Mac-Templates:
|
|
stage: build
|
|
needs: [build-Macos-Debug-Template-arm64, build-Macos-Debug-Template-arm64-Mono, build-Macos-Debug-Template-x64, build-Macos-Debug-Template-x64-Mono, build-Macos-Release-Template-arm64, build-Macos-Release-Template-arm64-Mono, build-Macos-Release-Template-x64, build-Macos-Release-Template-x64-Mono]
|
|
tags: [docker]
|
|
rules:
|
|
- if: $DO_RELEASE == "true"
|
|
image: $CI_REGISTRY/redot-engine/redot-production-containers/redot-osx:latest
|
|
script:
|
|
- lipo -create out/templates/redot.macos.template_debug.x86_64 out/templates/redot.macos.template_debug.arm64 -output out/templates/redot.macos.template_debug.universal
|
|
- lipo -create out/templates/redot.macos.template_release.x86_64 out/templates/redot.macos.template_release.arm64 -output out/templates/redot.macos.template_release.universal
|
|
- lipo -create out/templates-mono/redot.macos.template_debug.x86_64.mono out/templates-mono/redot.macos.template_debug.arm64.mono -output out/templates-mono/redot.macos.template_debug.universal.mono
|
|
- lipo -create out/templates-mono/redot.macos.template_release.x86_64.mono out/templates-mono/redot.macos.template_release.arm64.mono -output out/templates-mono/redot.macos.template_release.universal.mono
|
|
artifacts:
|
|
public: false
|
|
paths:
|
|
- out/templates/*
|
|
- out/templates-mono/*
|
|
|
|
# -- Build Web Template
|
|
|
|
Web-Release-Template:
|
|
stage: build
|
|
tags: [docker]
|
|
rules:
|
|
- if: $DO_RELEASE == "true"
|
|
image: $CI_REGISTRY/redot-engine/redot-production-containers/redot-web:latest
|
|
script:
|
|
- export BUILD_NAME="official"
|
|
- /root/scripts/buildWeb.sh
|
|
artifacts:
|
|
public: false
|
|
expire_in: 3 days
|
|
paths:
|
|
- out/templates/
|
|
# --Build Android Targets --
|
|
|
|
Android-Release-Template:
|
|
extends: .template-build
|
|
stage: build
|
|
image: $CI_REGISTRY/redot-engine/redot-production-containers/redot-android:latest
|
|
before_script:
|
|
- !reference [ .template-build, before_script ]
|
|
- export OPTIONS="production=yes use_mingw=yes angle_libs=$(pwd)/deps/angle mesa_libs=$(pwd)/deps/mesa"
|
|
variables:
|
|
PLATFORM: "android"
|
|
script:
|
|
- /root/scripts/Fetch_Deps.sh "$PLATFORM"
|
|
- 7za x -y deps/swappy/godot-swappy.7z -othirdparty/swappy-frame-pacing/
|
|
- mkdir -p out/templates
|
|
- $SCONS platform=android arch=arm32 $OPTIONS target=template_debug
|
|
- $SCONS platform=android arch=arm32 $OPTIONS target=template_release
|
|
|
|
- $SCONS platform=android arch=arm64 $OPTIONS target=template_debug
|
|
- $SCONS platform=android arch=arm64 $OPTIONS target=template_release
|
|
|
|
- $SCONS platform=android arch=x86_32 $OPTIONS target=template_debug
|
|
- $SCONS platform=android arch=x86_32 $OPTIONS target=template_release
|
|
|
|
- $SCONS platform=android arch=x86_64 $OPTIONS target=template_debug
|
|
- $SCONS platform=android arch=x86_64 $OPTIONS target=template_release
|
|
- pushd platform/android/java
|
|
- ./gradlew generateGodotTemplates
|
|
- popd
|
|
- ls bin/
|
|
- cp bin/*.zip out/templates/
|
|
- cp bin/*.apk out/templates/
|
|
- cp bin/*.aar out/templates/
|
|
artifacts:
|
|
public: false
|
|
expire_in: 3 days
|
|
paths:
|
|
- out/templates
|
|
|
|
Android-Release-Template-Mono:
|
|
extends: .template-build
|
|
stage: build
|
|
needs: [ linux-editor-x64-mono ]
|
|
tags: [ docker ]
|
|
|
|
image: $CI_REGISTRY/redot-engine/redot-production-containers/redot-android:latest
|
|
before_script:
|
|
- !reference [ .template-build, before_script ]
|
|
- export OPTIONS="production=yes use_mingw=yes angle_libs=$(pwd)/deps/angle mesa_libs=$(pwd)/deps/mesa"
|
|
variables:
|
|
PLATFORM: "android"
|
|
script:
|
|
- /root/scripts/Fetch_Deps.sh "$PLATFORM"
|
|
- 7za x -y deps/swappy/godot-swappy.7z -othirdparty/swappy-frame-pacing/
|
|
- mkdir -p out/templates-mono
|
|
- cp -r mono-glue/GodotSharp/GodotSharp/Generated modules/mono/glue/GodotSharp/GodotSharp/
|
|
- cp -r mono-glue/GodotSharp/GodotSharpEditor/Generated modules/mono/glue/GodotSharp/GodotSharpEditor/
|
|
- $SCONS platform=android arch=arm32 $OPTIONS module_mono_enabled=yes target=template_debug
|
|
- $SCONS platform=android arch=arm32 $OPTIONS module_mono_enabled=yes target=template_release
|
|
|
|
- $SCONS platform=android arch=arm64 $OPTIONS module_mono_enabled=yes target=template_debug
|
|
- $SCONS platform=android arch=arm64 $OPTIONS module_mono_enabled=yes target=template_release
|
|
|
|
- $SCONS platform=android arch=x86_32 $OPTIONS module_mono_enabled=yes target=template_debug
|
|
- $SCONS platform=android arch=x86_32 $OPTIONS module_mono_enabled=yes target=template_release
|
|
|
|
- $SCONS platform=android arch=x86_64 $OPTIONS module_mono_enabled=yes target=template_debug
|
|
- $SCONS platform=android arch=x86_64 $OPTIONS module_mono_enabled=yes target=template_release
|
|
- pushd platform/android/java
|
|
- ./gradlew generateGodotMonoTemplates
|
|
- popd
|
|
- ls bin/
|
|
- cp bin/*.zip out/templates-mono/
|
|
- cp bin/*.apk out/templates-mono/
|
|
- cp bin/*.aar out/templates-mono/
|
|
artifacts:
|
|
public: false
|
|
expire_in: 3 days
|
|
paths:
|
|
- out/templates-mono
|
|
|
|
# -- Build IOS targets --
|
|
# -- 64 bit Macos --
|
|
build-ios-Release-Template-x64:
|
|
stage: build
|
|
extends: .Template-Ios
|
|
variables:
|
|
ARCH: "x86_64"
|
|
TYPE: "iPhoneSimulator"
|
|
TARGET: "template_release"
|
|
|
|
|
|
build-ios-Debug-Template-x64:
|
|
stage: build
|
|
extends: .Template-Ios
|
|
variables:
|
|
ARCH: "x86_64"
|
|
TYPE: "iPhoneSimulator"
|
|
TARGET: "template_debug"
|
|
|
|
build-ios-Release-Template-x64-Mono:
|
|
stage: build
|
|
extends: .Template-Ios-Mono
|
|
variables:
|
|
ARCH: "x86_64"
|
|
TYPE: "iPhoneSimulator"
|
|
TARGET: "template_release"
|
|
|
|
|
|
build-ios-Debug-Template-x64-Mono:
|
|
stage: build
|
|
extends: .Template-Ios-Mono
|
|
variables:
|
|
ARCH: "x86_64"
|
|
TYPE: "iPhoneSimulator"
|
|
TARGET: "template_debug"
|
|
|
|
|
|
# -- ARM64 Macos
|
|
build-ios-Release-Template-arm64:
|
|
stage: build
|
|
extends: .Template-Ios
|
|
variables:
|
|
ARCH: "arm64"
|
|
TYPE: "iPhoneOS"
|
|
TARGET: "template_release"
|
|
|
|
|
|
build-ios-Debug-Template-arm64:
|
|
stage: build
|
|
extends: .Template-Ios
|
|
variables:
|
|
ARCH: "arm64"
|
|
TYPE: "iPhoneOS"
|
|
TARGET: "template_debug"
|
|
|
|
build-ios-Release-Template-arm64-Mono:
|
|
stage: build
|
|
extends: .Template-Ios-Mono
|
|
variables:
|
|
ARCH: "arm64"
|
|
TYPE: "iPhoneOS"
|
|
TARGET: "template_release"
|
|
|
|
|
|
build-ios-Debug-Template-arm64-Mono:
|
|
stage: build
|
|
extends: .Template-Ios-Mono
|
|
variables:
|
|
ARCH: "arm64"
|
|
TYPE: "iPhoneOS"
|
|
TARGET: "template_debug"
|
|
|
|
|
|
sign-mac-editor:
|
|
stage: build
|
|
needs: [Merge-Mac-Editor]
|
|
rules:
|
|
- if: $DO_RELEASE == "true"
|
|
- if: $SIGN_MAC == "true"
|
|
tags: [macos]
|
|
script:
|
|
- set -e
|
|
- echo "Signing macOS build on local runner..."
|
|
- |
|
|
sign_macos() {
|
|
_reldir="$1"
|
|
_binname="$2"
|
|
_is_mono="$3"
|
|
|
|
if [[ "${_is_mono}" == "1" ]]; then
|
|
_appname="Redot_mono.app"
|
|
else
|
|
_appname="Redot.app"
|
|
fi
|
|
|
|
|
|
|
|
echo "Preparing temp dir..."
|
|
rm -rf tmp/
|
|
mkdir tmp/
|
|
echo "made temp directory"
|
|
_macos_tmpdir="$(pwd)/tmp"
|
|
_app_path="${_macos_tmpdir}/${_appname}"
|
|
echo $_macos_tmpdir
|
|
echo $__app_path
|
|
cp -r "misc/dist/macos/editor.entitlements" "${_macos_tmpdir}/"
|
|
rm -rf "${_macos_tmpdir}/${_appname}"
|
|
cp -r "misc/dist/macos_tools.app" "${_macos_tmpdir}/${_appname}"
|
|
if [[ "${_is_mono}" == "1" ]]; then
|
|
cp -r "${_reldir}/GodotSharp/ " "${_macos_tmpdir}/${_appname}/Contents/Resources/GodotSharp"
|
|
fi
|
|
ls "${_reldir}/"
|
|
ls "${_macos_tmpdir}/${_appname}/"
|
|
mkdir -p "${_macos_tmpdir}/${_appname}/Contents/MacOS/"
|
|
cp "${_reldir}/${_binname}" "${_macos_tmpdir}/${_appname}/Contents/MacOS/Redot"
|
|
cd "${_macos_tmpdir}"
|
|
chmod +x ${_macos_tmpdir}/${_appname}/Contents/MacOS/Redot
|
|
|
|
echo "Unlocking keychain..."
|
|
security list-keychains -s temp.keychain
|
|
security unlock-keychain -p "${APPLE_DEVICE_PASSWORD}" temp.keychain
|
|
security set-key-partition-list -S apple-tool:,apple: -s -k "${APPLE_DEVICE_PASSWORD}" temp.keychain
|
|
|
|
echo "Codesigning ${_app_path}..."
|
|
codesign --force --timestamp --verbose=4 \
|
|
--options=runtime --entitlements editor.entitlements \
|
|
-s "${OSX_KEY_ID}" -v --deep "${_app_path}"
|
|
|
|
# zip the app for notarization
|
|
echo "Zipping ${_app_path} for notarization..."
|
|
cd "${_macos_tmpdir}"
|
|
zip -r "${_binname}_signed.zip" "${_appname}"
|
|
|
|
echo "Submitting ${_app_path} for notarization..."
|
|
_request_uuid=$(xcrun notarytool submit "${_macos_tmpdir}/${_binname}_signed.zip" \
|
|
--team-id "${APPLE_TEAM}" --apple-id "${APPLE_ID}" --password "${APPLE_ID_PASSWORD}" \
|
|
--no-progress --output-format json | sed -e 's/.*"id":"\([^"]*\)".*/\1/')
|
|
|
|
echo "Waiting for notarization result..."
|
|
_result_json=$(xcrun notarytool wait "${_request_uuid}" \
|
|
--team-id "${APPLE_TEAM}" --apple-id "${APPLE_ID}" --password "${APPLE_ID_PASSWORD}" \
|
|
--output-format json)
|
|
|
|
_status=$(echo "$_result_json" | grep -o '"status"[[:space:]]*:[[:space:]]*"[^"]*"' | cut -d'"' -f4)
|
|
|
|
if [[ "$_status" != "Accepted" ]]; then
|
|
echo "Notarization failed for ${_appname}. Status: ${_status}"
|
|
echo "$_result_json"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Stapling notarization..."
|
|
xcrun stapler staple "${_app_path}"
|
|
mkdir "${_reldir}/signed"
|
|
ls
|
|
zip -r ${_binname}_stapled.zip "${_appname}"
|
|
cp "${_macos_tmpdir}/${_binname}_stapled.zip" "${_reldir}/signed/"
|
|
echo "Cleaning up..."
|
|
rm -rf "${_macos_tmpdir}"
|
|
|
|
echo "✅ ${_app_path} signed and notarized."
|
|
}
|
|
|
|
- sign_macos "$(pwd)/out/macos/universal/tools" "redot.macos.editor.universal" 0
|
|
|
|
artifacts:
|
|
public: false
|
|
paths:
|
|
- out/macos/universal/tools/signed/*
|
|
expire_in: 3 days
|
|
|
|
sign-mac-editor-mono:
|
|
stage: build
|
|
needs: [Merge-Mac-Editor]
|
|
rules:
|
|
- if: $DO_RELEASE == "true"
|
|
- if: $SIGN_MAC == "true"
|
|
tags: [macos]
|
|
script:
|
|
- set -e
|
|
- echo "Signing macOS build on local runner..."
|
|
- |
|
|
sign_macos() {
|
|
_reldir="$1"
|
|
_binname="$2"
|
|
_is_mono="$3"
|
|
|
|
if [[ "${_is_mono}" == "1" ]]; then
|
|
_appname="Redot_mono.app"
|
|
else
|
|
_appname="Redot.app"
|
|
fi
|
|
|
|
|
|
|
|
echo "Preparing temp dir..."
|
|
rm -rf tmp/
|
|
mkdir tmp/
|
|
echo "made temp directory"
|
|
_macos_tmpdir="$(pwd)/tmp"
|
|
_app_path="${_macos_tmpdir}/${_appname}"
|
|
echo "${_macos_tmpdir}"
|
|
echo "${_app_path}"
|
|
echo "${_reldir}"
|
|
ls -l "${_reldir}"
|
|
cp -r "misc/dist/macos/editor.entitlements" "${_macos_tmpdir}/"
|
|
rm -rf "${_macos_tmpdir}/${_appname}"
|
|
cp -r "misc/dist/macos_tools.app" "${_macos_tmpdir}/${_appname}"
|
|
if [[ "${_is_mono}" == "1" ]]; then
|
|
mkdir -p "${_macos_tmpdir}/${_appname}/Contents/Resources/GodotSharp/"
|
|
printf 'reldir=[%s]\n' "$_reldir" | od -c
|
|
cp -r "${_reldir}/GodotSharp/." "${_macos_tmpdir}/${_appname}/Contents/Resources/GodotSharp/"
|
|
fi
|
|
ls "${_reldir}/"
|
|
ls "${_macos_tmpdir}/${_appname}/"
|
|
mkdir -p "${_macos_tmpdir}/${_appname}/Contents/MacOS/"
|
|
cp "${_reldir}/${_binname}" "${_macos_tmpdir}/${_appname}/Contents/MacOS/Redot"
|
|
cd "${_macos_tmpdir}"
|
|
chmod +x ${_macos_tmpdir}/${_appname}/Contents/MacOS/Redot
|
|
|
|
echo "Unlocking keychain..."
|
|
security list-keychains -s temp.keychain
|
|
security unlock-keychain -p "${APPLE_DEVICE_PASSWORD}" temp.keychain
|
|
security set-key-partition-list -S apple-tool:,apple: -s -k "${APPLE_DEVICE_PASSWORD}" temp.keychain
|
|
|
|
echo "Codesigning ${_app_path}..."
|
|
codesign --force --timestamp --verbose=4 \
|
|
--options=runtime --entitlements editor.entitlements \
|
|
-s "${OSX_KEY_ID}" -v --deep "${_app_path}"
|
|
|
|
# zip the app for notarization
|
|
echo "Zipping ${_app_path} for notarization..."
|
|
cd "${_macos_tmpdir}"
|
|
zip -r "${_binname}_signed.zip" "${_appname}"
|
|
|
|
echo "Submitting ${_app_path} for notarization..."
|
|
_request_uuid=$(xcrun notarytool submit "${_macos_tmpdir}/${_binname}_signed.zip" \
|
|
--team-id "${APPLE_TEAM}" --apple-id "${APPLE_ID}" --password "${APPLE_ID_PASSWORD}" \
|
|
--no-progress --output-format json | sed -e 's/.*"id":"\([^"]*\)".*/\1/')
|
|
|
|
echo "Waiting for notarization result..."
|
|
_result_json=$(xcrun notarytool wait "${_request_uuid}" \
|
|
--team-id "${APPLE_TEAM}" --apple-id "${APPLE_ID}" --password "${APPLE_ID_PASSWORD}" \
|
|
--output-format json)
|
|
|
|
_status=$(echo "$_result_json" | grep -o '"status"[[:space:]]*:[[:space:]]*"[^"]*"' | cut -d'"' -f4)
|
|
|
|
if [[ "$_status" != "Accepted" ]]; then
|
|
echo "Notarization failed for ${_appname}. Status: ${_status}"
|
|
echo "$_result_json"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Stapling notarization..."
|
|
xcrun stapler staple "${_app_path}"
|
|
mkdir "${_reldir}/signed"
|
|
ls
|
|
zip -r ${_binname}_stapled.zip "${_appname}"
|
|
cp "${_macos_tmpdir}/${_binname}_stapled.zip" "${_reldir}/signed/"
|
|
echo "Cleaning up..."
|
|
rm -rf "${_macos_tmpdir}"
|
|
|
|
echo "✅ ${_app_path} signed and notarized."
|
|
}
|
|
|
|
- sign_macos "$(pwd)/out/macos/universal/tools-mono" "redot.macos.editor.universal.mono" 1
|
|
|
|
artifacts:
|
|
public: false
|
|
paths:
|
|
- out/macos/universal/tools-mono/signed/*
|
|
expire_in: 3 days
|
|
|
|
sign-mac-templates:
|
|
stage: build
|
|
needs: [Merge-Mac-Templates]
|
|
rules:
|
|
- if: $DO_RELEASE == "true"
|
|
- if: $SIGN_MAC == "true"
|
|
tags: [ macos ]
|
|
script:
|
|
- set -e
|
|
- echo "Signing macOS build on local runner..."
|
|
- |
|
|
sign_macos() {
|
|
rm -rf tmp/
|
|
cp -r misc/dist/macos_template.app tmp/
|
|
mkdir -p tmp/macos_template.app/Contents/MacOS
|
|
|
|
|
|
_is_mono="$1"
|
|
_mono_prefix=""
|
|
_mono_suffix=""
|
|
if [ "$_is_mono" -eq 1 ]; then _mono_prefix="-mono"; _mono_suffix=".mono";fi
|
|
|
|
|
|
cp out/templates${_mono_prefix}/redot.macos.template_release.universal${_mono_suffix} tmp/macos_template.app/Contents/MacOS/redot_macos_release.universal${_mono_suffix}
|
|
cp out/templates${_mono_prefix}/redot.macos.template_debug.universal${_mono_suffix} tmp/macos_template.app/Contents/MacOS/redot_macos_debug.universal${_mono_suffix}
|
|
chmod +x tmp/macos_template.app/Contents/MacOS/redot_macos*
|
|
|
|
|
|
pushd tmp/
|
|
|
|
codesign --force -s - \
|
|
--options=linker-signed \
|
|
-v macos_template.app/Contents/MacOS/*
|
|
zip -r ../out/templates${_mono_prefix}/macos_signed.zip macos_template.app
|
|
popd
|
|
rm -rf tmp/
|
|
}
|
|
|
|
|
|
- sign_macos 0
|
|
- sign_macos 1
|
|
|
|
artifacts:
|
|
public: false
|
|
paths:
|
|
- out/templates/*
|
|
- out/templates-mono/*
|
|
expire_in: 3 days
|
|
|
|
package-builds:
|
|
stage: package
|
|
rules:
|
|
- if: $DO_RELEASE == "true"
|
|
tags:
|
|
- docker
|
|
image: $CI_REGISTRY/redot-engine/redot-production-containers/redot-linux:latest
|
|
script:
|
|
- mkdir releases/
|
|
- export RELEASE_DIR="$(pwd)/releases"
|
|
- pushd out/linuxbsd/x86_64/tools/
|
|
- zip -r "${RELEASE_DIR}/Redot_v${VERSIONSTRING}_linux_x64.zip" ./*
|
|
- popd
|
|
- pushd out/linuxbsd/arm64/tools/
|
|
- zip -r "${RELEASE_DIR}/Redot_v${VERSIONSTRING}_linux_arm64.zip" ./*
|
|
- popd
|
|
- pushd out/linuxbsd/x86_32/tools/
|
|
- zip -r "${RELEASE_DIR}/Redot_v${VERSIONSTRING}_linux_x86.zip" ./*
|
|
- popd
|
|
- pushd out/linuxbsd/arm32/tools/
|
|
- zip -r "${RELEASE_DIR}/Redot_v${VERSIONSTRING}_linux_arm32.zip" ./*
|
|
- popd
|
|
- pushd out/linuxbsd/x86_64/tools-mono/
|
|
- zip -r "${RELEASE_DIR}/Redot_v${VERSIONSTRING}_linux_mono_x64.zip" ./*
|
|
- popd
|
|
- pushd out/linuxbsd/arm64/tools-mono/
|
|
- zip -r "${RELEASE_DIR}/Redot_v${VERSIONSTRING}_linux_mono_arm64.zip" ./*
|
|
- popd
|
|
- pushd out/linuxbsd/x86_32/tools-mono/
|
|
- zip -r "${RELEASE_DIR}/Redot_v${VERSIONSTRING}_linux_mono_x86.zip" ./*
|
|
- popd
|
|
- pushd out/linuxbsd/arm32/tools-mono/
|
|
- zip -r "${RELEASE_DIR}/Redot_v${VERSIONSTRING}_linux_mono_arm32.zip" ./*
|
|
- popd
|
|
- pushd out/windows/x86_64/tools/
|
|
- zip -r "${RELEASE_DIR}/Redot_v${VERSIONSTRING}_windows_win64.zip" ./*
|
|
- popd
|
|
- pushd out/windows/arm64/tools/
|
|
- zip -r "${RELEASE_DIR}/Redot_v${VERSIONSTRING}_windows_arm64.zip" ./*
|
|
- popd
|
|
- pushd out/windows/x86_32/tools/
|
|
- zip -r "${RELEASE_DIR}/Redot_v${VERSIONSTRING}_windows_win32.zip" ./*
|
|
- popd
|
|
- pushd out/windows/x86_64/tools-mono/
|
|
- zip -r "${RELEASE_DIR}/Redot_v${VERSIONSTRING}_windows_mono_win64.zip" ./*
|
|
- popd
|
|
- pushd out/windows/arm64/tools-mono/
|
|
- zip -r "${RELEASE_DIR}/Redot_v${VERSIONSTRING}_windows_mono_arm64.zip" ./*
|
|
- popd
|
|
- pushd out/windows/x86_32/tools-mono/
|
|
- zip -r "${RELEASE_DIR}/Redot_v${VERSIONSTRING}_windows_mono_win32.zip" ./*
|
|
- popd
|
|
- mv out/macos/universal/tools/signed/redot.macos.editor.universal_stapled.zip releases/Redot_v${VERSIONSTRING}_macos_universal.zip
|
|
- mv out/macos/universal/tools-mono/signed/redot.macos.editor.universal.mono_stapled.zip releases/Redot_v${VERSIONSTRING}_macos_mono_universal.zip
|
|
- pushd out/templates-mono/
|
|
- zip -r ${RELEASE_DIR}/Redot_v${VERSIONSTRING}_mono_export_templates.zip ./*
|
|
- popd
|
|
- pushd out/templates/
|
|
- zip -r ${RELEASE_DIR}/Redot_v${VERSIONSTRING}_export_templates.zip ./*
|
|
- popd
|
|
- mv releases/Redot_v${VERSIONSTRING}_mono_export_templates.zip releases/Redot_v${VERSIONSTRING}_mono_export_templates.tpz
|
|
- mv releases/Redot_v${VERSIONSTRING}_export_templates.zip releases/Redot_v${VERSIONSTRING}_export_templates.tpz
|
|
artifacts:
|
|
expire_in: 3 days
|
|
paths:
|
|
- releases/*
|
|
pushNuget:
|
|
stage: package
|
|
image: $CI_REGISTRY/redot-engine/redot-production-containers/redot-linux:latest
|
|
tags: [docker]
|
|
rules:
|
|
- if: $DO_RELEASE == "true"
|
|
script:
|
|
- cd out/linuxbsd/x86_64/tools-mono/GodotSharp/Tools/nupkgs
|
|
- dotnet nuget push "./*.nupkg" --api-key $NUGET_API_KEY --source https://api.nuget.org/v3/index.json --skip-duplicate
|