1. Information

2. Structure

Unity Packages  >       dummy
                        Build Manager
Leap SAVE       >       Laptitude stuff
Douwe Kiestra   >       My Sandbox
Tools           >       Grendel Launcher
cicd            >       game-ci
Alex Wijnbeek   >       CICD Sandbox

3. CICD

  • This repo contains the http://gitlab.grendelgames.com/cicd/game-ci.git submodule.

  • Use the --recurse-submodules option with the git clone command or use git submodule update --init to populate the ci directory.

    cd ~/gitlab
    git clone --recurse-submodules http://gitlab.grendelgames.com/alex/cicd-sandbox.git
    git status
    
    git submodule status
    git submodule update --init
    git submodule status
    
    cd ci
    git status
    git branch
    git checkout develop
    prepare.env: UNITY_VERSION=2022.3.62f2
    job.env: JOB_ID_IOS_RELEASE=22434
    
    Stage 1: prepare        get-unity-version
    Stage 2: build_and_test .test
                            .build
                            .build-windows
                            .build-windows-il2cpp
                            .build-mac
                            .build-android
                            .build-ios-xcode
                            .windows-installer
                            .mac-installer
                            build-windows-development                       5       4
                            build-windows-il2cpp-development                1 Fail  5
                            build-windows-release                   4
                            build-mac-development                           4       3
                            build-mac-release                       3
                            build-android-development                       2       1
                            build-android-release                   1
                            build-ios-development                           3       2
                            build-ios-release                       2
                            package-windows-installer               6
                            package-mac-installer                   5
    Stage 3: release        .release
                            release
    Stage 4: deploy         .build-and-deploy-ios
  • Browse to http://gitlab.grendelgames.com.

  • Select Alex Wijnbeek / CICD Sandbox.

  • Select CICD > Editor.

  • Select View merged YAML.

  • Copy and paste the contents to the .gitlab-ci-merged.yml file.

  • The .gitlab-ci.yml file references extends defined in the game-ci submodule.

    extend                  include file                    requires
    ---------------------   ------------------------        ----------
    .artifacts              unity.yml                       -
    .build                  unity.yml                       buildmanager_build.sh
    .build-and-deploy-ios   unity-ios.yml                   unity.yml, .build, .artifacts, fastlane
    .build-android          unity-android.yml               unity.yml, .build, .artifacts, fastlane
    .build-develop          build.yml                       -
    .build-mac              unity-mac.yml                   unity.yml, .cache, .artifacts, buildmanager_build_mac.sh
    .build-ios-xcode        unity-ios.yml                   unity.yml, .build, .artifacts, fastlane
    .build-tag              build.yml                       -
    .build-windows          unity-windows-mono.yml          unity.yml, .build, .artifacts
    .build-windows-il2cpp   unity-windows-il2cpp.yml        unity.yml, .artifacts, .license, win_il2cpp.ps1
    .cache                  unity.yml                       -
    .license                unity.yml                       -
    .mac-installer          mac-installer.yml               mac_installer.sh
    .release                release.yml                     -
    .test                   unity.yml                       test.sh
    .unity_after_script     unity.yml                       return_license.sh
    .unity_before_script    unity.yml                       before_script.sh
    .unity_defaults         unity.yml                       .unity_before_script, .cache, .license, .unity_after_script
    .windows-installer      windows-installer.yml           win_installer.ps1

4. Envrionment Variables

ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\ContainerAdministrator\AppData\Roaming
BUILD_CONFIGURATION=Windows_IL2CPP_Development
BUILD_DIR=CICD-Sandbox
BUILD_TARGET=Win64
BUILD_TYPE=IL2CPP_DEVELOPMENT
CACHE_FALLBACK_KEY=alex-cicd-sandbox-develop-
ChocolateyInstall=C:\ProgramData\chocolatey
ChocolateyLastPathUpdate=134101468481615090
CI=true
CI_API_GRAPHQL_URL=http://gitlab.grendelgames.com/api/graphql
CI_API_V4_URL=http://gitlab.grendelgames.com/api/v4
CI_BUILD_BEFORE_SHA=14294f74795104f51962c8b8be62b70ba918df9d
CI_BUILD_ID=23458
CI_BUILD_NAME=build-windows-il2cpp-development
CI_BUILD_REF=d01da5248f8a71eb0e598caf0b8b10d14a07fa8c
CI_BUILD_REF_NAME=develop
CI_BUILD_REF_SLUG=develop
CI_BUILD_STAGE=build_and_test
CI_BUILD_TOKEN=[MASKED]
CI_BUILDS_DIR=C:\builds
CI_COMMIT_AUTHOR=Douwe Kiestra <douwe@grendelgames.com>
CI_COMMIT_BEFORE_SHA=14294f74795104f51962c8b8be62b70ba918df9d
CI_COMMIT_BRANCH=develop
CI_COMMIT_MESSAGE=debug: show env variables

CI_COMMIT_REF_NAME=develop
CI_COMMIT_REF_PROTECTED=true
CI_COMMIT_REF_SLUG=develop
CI_COMMIT_SHA=d01da5248f8a71eb0e598caf0b8b10d14a07fa8c
CI_COMMIT_SHORT_SHA=d01da524
CI_COMMIT_TIMESTAMP=2026-03-17T13:09:30+01:00
CI_COMMIT_TITLE=debug: show env variables
CI_CONCURRENT_ID=0
CI_CONCURRENT_PROJECT_ID=0
CI_CONFIG_PATH=.gitlab-ci.yml
CI_DEFAULT_BRANCH=develop
CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX=gitlab.grendelgames.com:80/alex/dependency_proxy/containers
CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX=gitlab.grendelgames.com:80/alex/dependency_proxy/containers
CI_DEPENDENCY_PROXY_PASSWORD=[MASKED]
CI_DEPENDENCY_PROXY_SERVER=gitlab.grendelgames.com:80
CI_DEPENDENCY_PROXY_USER=gitlab-ci-token
CI_DISPOSABLE_ENVIRONMENT=true
CI_JOB_ID=23458
CI_JOB_IMAGE=unityci/editor:windows-2022.3.62f2-windows-il2cpp-3
CI_JOB_JWT=[MASKED]
CI_JOB_JWT_V1=[MASKED]
CI_JOB_JWT_V2=[MASKED]
CI_JOB_NAME=build-windows-il2cpp-development
CI_JOB_NAME_SLUG=build-windows-il2cpp-development
CI_JOB_STAGE=build_and_test
CI_JOB_STARTED_AT=2026-03-17T12:10:55Z
CI_JOB_STATUS=running
CI_JOB_TIMEOUT=7200
CI_JOB_TOKEN=[MASKED]
CI_JOB_URL=http://gitlab.grendelgames.com/alex/cicd-sandbox/-/jobs/23458
CI_NODE_TOTAL=1
CI_PAGES_DOMAIN=example.com
CI_PAGES_URL=http://alex.example.com/cicd-sandbox
CI_PIPELINE_CREATED_AT=2026-03-17T12:10:39Z
CI_PIPELINE_ID=10064
CI_PIPELINE_IID=313
CI_PIPELINE_SOURCE=push
CI_PIPELINE_URL=http://gitlab.grendelgames.com/alex/cicd-sandbox/-/pipelines/10064
CI_PROJECT_DESCRIPTION=Testing and experimenting project for CICD pipelines on a Unity project.

Icon from https://www.flaticon.com/free-icon/sandbox_8297386
CI_PROJECT_DIR=C:\builds\alex\cicd-sandbox
CI_PROJECT_ID=42
CI_PROJECT_NAME=cicd-sandbox
CI_PROJECT_NAMESPACE=alex
CI_PROJECT_NAMESPACE_ID=7
CI_PROJECT_PATH=alex/cicd-sandbox
CI_PROJECT_PATH_SLUG=alex-cicd-sandbox
CI_PROJECT_REPOSITORY_LANGUAGES=c#,mathematica,ruby
CI_PROJECT_ROOT_NAMESPACE=alex
CI_PROJECT_TITLE=CICD Sandbox
CI_PROJECT_URL=http://gitlab.grendelgames.com/alex/cicd-sandbox
CI_PROJECT_VISIBILITY=private
CI_REGISTRY_PASSWORD=[MASKED]
CI_REGISTRY_USER=gitlab-ci-token
CI_REPOSITORY_URL=http://gitlab-ci-token:[MASKED]@gitlab.grendelgames.com/alex/cicd-sandbox.git
CI_RUNNER_DESCRIPTION=Bob the Builder
CI_RUNNER_EXECUTABLE_ARCH=windows/amd64
CI_RUNNER_ID=7
CI_RUNNER_REVISION=2b813ade
CI_RUNNER_SHORT_TOKEN=YUGw6ehx
CI_RUNNER_TAGS=["windows", "windows-il2cpp"]
CI_RUNNER_VERSION=18.1.1
CI_SERVER=yes
CI_SERVER_HOST=gitlab.grendelgames.com
CI_SERVER_NAME=GitLab
CI_SERVER_PORT=80
CI_SERVER_PROTOCOL=http
CI_SERVER_REVISION=5aa8f83c113
CI_SERVER_SHELL_SSH_HOST=gitlab.grendelgames.com
CI_SERVER_SHELL_SSH_PORT=22
CI_SERVER_URL=http://gitlab.grendelgames.com
CI_SERVER_VERSION=15.11.8-ee
CI_SERVER_VERSION_MAJOR=15
CI_SERVER_VERSION_MINOR=11
CI_SERVER_VERSION_PATCH=8
CI_TEMPLATE_REGISTRY_HOST=registry.gitlab.com
CICD_PUSH_TOKEN=[MASKED]
CODESIGN_CERT=C:\GitlabRunner\WinCodeSigning\certificate.cer
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
COMPLUS_NGenProtectedProcess_FeatureEnabled=0
COMPLUS_RUNNING_IN_CONTAINER=1
COMPUTERNAME=RUNNER-YUGW6EHX
ComSpec=C:\Windows\system32\cmd.exe
DOTNET_GENERATE_ASPNET_CERTIFICATE=false
DOTNET_RUNNING_IN_CONTAINER=true
DOTNET_USE_POLLING_FILE_WATCHER=true
DriverData=C:\Windows\System32\Drivers\DriverData
ENTITLEMENTS_FILE=C:\builds\alex\cicd-sandbox/deployment/entitlements.entitlements
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD=[MASKED]
FASTLANE_USER=alex@grendel-games.com
FF_CLEAN_UP_FAILED_CACHE_EXTRACT=false
FF_DISABLE_AUTOMATIC_TOKEN_ROTATION=false
FF_DISABLE_POWERSHELL_STDIN=false
FF_DISABLE_UMASK_FOR_DOCKER_EXECUTOR=false
FF_DISABLE_UMASK_FOR_KUBERNETES_EXECUTOR=false
FF_ENABLE_BASH_EXIT_CODE_CHECK=false
FF_ENABLE_JOB_CLEANUP=false
FF_EXPORT_HIGH_CARDINALITY_METRICS=false
FF_GIT_URLS_WITHOUT_TOKENS=false
FF_KUBERNETES_HONOR_ENTRYPOINT=false
FF_LOG_IMAGES_CONFIGURED_FOR_JOB=false
FF_MASK_ALL_DEFAULT_TOKENS=true
FF_NETWORK_PER_BUILD=false
FF_POSIXLY_CORRECT_ESCAPES=false
FF_PRINT_POD_EVENTS=false
FF_RESOLVE_FULL_TLS_CHAIN=false
FF_SCRIPT_SECTIONS=false
FF_SECRET_RESOLVING_FAILS_IF_MISSING=true
FF_SET_PERMISSIONS_BEFORE_CLEANUP=true
FF_SKIP_NOOP_BUILD_STAGES=true
FF_TEST_FEATURE=false
FF_TIMESTAMPS=false
FF_USE_ADAPTIVE_REQUEST_CONCURRENCY=true
FF_USE_ADVANCED_POD_SPEC_CONFIGURATION=false
FF_USE_DIRECT_DOWNLOAD=true
FF_USE_DOCKER_AUTOSCALER_DIAL_STDIO=true
FF_USE_DUMB_INIT_WITH_KUBERNETES_EXECUTOR=false
FF_USE_DYNAMIC_TRACE_FORCE_SEND_INTERVAL=false
FF_USE_EXPONENTIAL_BACKOFF_STAGE_RETRY=true
FF_USE_FASTZIP=false
FF_USE_FLEETING_ACQUIRE_HEARTBEATS=false
FF_USE_GIT_BUNDLE_URIS=true
FF_USE_GIT_NATIVE_CLONE=false
FF_USE_GITALY_CORRELATION_ID=true
FF_USE_INIT_WITH_DOCKER_EXECUTOR=false
FF_USE_LEGACY_GCS_CACHE_ADAPTER=false
FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY=false
FF_USE_LEGACY_S3_CACHE_ADAPTER=false
FF_USE_NATIVE_STEPS=true
FF_USE_NEW_BASH_EVAL_STRATEGY=false
FF_USE_POD_ACTIVE_DEADLINE_SECONDS=true
FF_USE_POWERSHELL_PATH_RESOLVER=false
FF_USE_WINDOWS_JOB_OBJECT=false
FF_USE_WINDOWS_LEGACY_PROCESS_STRATEGY=false
FF_WAIT_FOR_POD_TO_BE_REACHABLE=false
GITLAB_ENV=C:\builds\alex\cicd-sandbox.tmp\gitlab_runner_env
GIT_CLEAN_FLAGS=none
GIT_SUBMODULE_STRATEGY=normal
GITLAB_CI=true
GITLAB_USER_EMAIL=douwe@grendelgames.com
GITLAB_USER_ID=68
GITLAB_USER_LOGIN=douwe
GITLAB_USER_NAME=Douwe Kiestra
GOOGLE_PLAY_KEY_FILE=C:\builds\alex\cicd-sandbox.tmp\GOOGLE_PLAY_KEY_FILE
IMAGE=unityci/editor
IMAGE_VERSION=3
KEANU_GITHUB_TOKEN=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
LOCALAPPDATA=C:\Users\ContainerAdministrator\AppData\Local
MAC_INSTALLER_CERT_P12_PATH=/Users/eva/Documents/certs/Grendel Developer ID Installer.p12
MAC_INSTALLER_CERT_PASSWORD=grendel
MACOS_DEVELOPER_ID_APPLICATION=Developer ID Application: Grendel Games (WKP6SRQ5FE)
MACOS_DEVELOPER_ID_INSTALLER=Developer ID Installer: Grendel Games (WKP6SRQ5FE)
MACOS_KEYCHAIN_PASSWORD=[MASKED]
NSIS=C:\Program Files (x86)\NSIS\makensis.exe
NUGET_VERSION=6.14.0
NUMBER_OF_PROCESSORS=32
OS=Windows_NT
PATH=C:\Windows\system32;
  C:\Windows;
  C:\Windows\System32\Wbem;
  C:\Windows\System32\WindowsPowerShell\v1.0\;
  C:\Windows\System32\OpenSSH\;
  C:\Program Files\dotnet\;
  C:\Users\ContainerAdministrator\AppData\Local\Microsoft\WindowsApps;
  C:\Users\ContainerAdministrator\.dotnet\tools;
  C:\Program Files\NuGet;
  C:\Program Files (x86)\Microsoft Visual Studio\2022\TestAgent\Common7\IDE\CommonExtensions\Microsoft\TestWindow;
  C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin\amd64;
  C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools;
  C:\Program Files (x86)\Microsoft SDKs\ClickOnce\SignTool;
  C:\ProgramData\chocolatey\bin;
  C:\Program Files\Git\cmd;

PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.CPL
PLATFORM_NAME=Windows
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 63 Stepping 2, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=3f02
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
PROMPT=$P$G
PSExecutionPolicyPreference=Bypass
PSModulePath=C:\Users\ContainerAdministrator\Documents\WindowsPowerShell\Modules;
  C:\Program Files\WindowsPowerShell\Modules;
  C:\Windows\system32\WindowsPowerShell\v1.0\Modules
PUBLIC=C:\Users\Public
ROSLYN_COMPILER_LOCATION=C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin\Roslyn
RUNNER_TEMP_PROJECT_DIR=C:\builds\alex\cicd-sandbox.tmp
SIGNTOOL=C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64\signtool.exe
SystemDrive=C:
SystemRoot=C:\Windows
TEMP=C:\Users\ContainerAdministrator\AppData\Local\Temp
TMP=C:\Users\ContainerAdministrator\AppData\Local\Temp
UNITY_ACTIVATION_FILE=./unity3d.alf
UNITY_DIR=C:\builds\alex\cicd-sandbox/_CICDSandbox
UNITY_EMAIL=unity@grendel-games.com
UNITY_EXECUTABLE=C:\UnityEditor\2022.3.62f2\Editor\Unity.exe
UNITY_LICENSE=<?xml version="1.0" encoding="UTF-8"?><root><TimeStamp Value="Vgm9XzMQn5uAcQ=="/>
    <License id="Terms">
        <MachineBindings>
            <Binding Key="1" Value="576562626572264761624c65526f7578"/>
            <Binding Key="2" Value="576562626572264761624c65526f7578"/>
        </MachineBindings>
        <MachineID Value="D7nTUnjNAmtsUMcnoyrqkgIbYdM="/>
        <SerialHash Value="71d8db17bb16c75504abddfc5d3c171e26c058f0"/>
        <Features>
            <Feature Value="33"/>
            <Feature Value="12"/>
            <Feature Value="34"/>
            <Feature Value="13"/>
            <Feature Value="24"/>
            <Feature Value="25"/>
            <Feature Value="36"/>
            <Feature Value="17"/>
            <Feature Value="18"/>
            <Feature Value="19"/>
            <Feature Value="0"/>
            <Feature Value="1"/>
            <Feature Value="2"/>
            <Feature Value="3"/>
            <Feature Value="4"/>
            <Feature Value="60"/>
            <Feature Value="40"/>
            <Feature Value="20"/>
            <Feature Value="21"/>
        </Features>
        <DeveloperData Value="AQAAAFNDLUJXVFktU01NOC1QODNZLTczMlYtWERNMg=="/>
        <SerialMasked Value="SC-BWTY-SMM8-P83Y-732V-XXXX"/>
        <StartDate Value="2020-03-23T00:00:00"/>
        <StopDate Value="2026-11-30T00:00:00"/>
        <UpdateDate Value="2024-04-10T19:53:01"/>
        <InitialActivationDate Value="2020-03-23T13:59:34"/>
        <LicenseVersion Value="6.x"/>
        <ClientProvidedVersion Value="2017.2.0"/>
        <AlwaysOnline Value="false"/>
        <Entitlements>
            <Entitlement Ns="unity_editor" Tag="UnityPro" Type="EDITOR" ValidTo="2026-11-28T00:00:00"/>
            <Entitlement Ns="unity_editor" Tag="UnityPersonal" Type="EDITOR" ValidTo="9999-12-31T00:00:00"/>
            <Entitlement Ns="unity_editor" Tag="DarkSkin" Type="EDITOR_FEATURE" ValidTo="9999-12-31T00:00:00"/>
        </Entitlements>
    </License>
        <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
            <SignedInfo>
                <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
                <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
                <Reference URI="#Terms">
                    <Transforms>
                        <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
                    </Transforms>
                    <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
                    <DigestValue>
                        V5869EVa8Cmns2nzAi0Q2exC3RQ='
                    </DigestValue>
                </Reference>
            </SignedInfo>
            <SignatureValue>
                e6sbVoLSgAGCRBVzgzDcbvj+Ujlo/jaWfoLxCxh/EUiMONKNNqEB+JEDhFEo7bptBtB8Jbxw4Zmo
                rKg+pj1wxKLMns/OkATGeTs6ZRVSE0XwsWhnslGgDxWXV1saZ68UXYRAvF59cpnihWuYFa1482Kh
                +g4Z1Iz00fi2mASXEbdzQzMgucNaMO4L1dGDxjp2z/PsYKPUUMLmCOekmpMKBcwegqs4pbM38LRt
                Y61gxYQQWVAFkO10LJzHCFKzBBh8QV75DfgkKimqRdnjnERDwWYdPR5F6hyPY16FotIk8UAS4urk
                8T/iSbFhCxvLHnZexs8rPoRSCUUdpNxUiLM0mQ==
            </SignatureValue>
        </Signature></root>
UNITY_PASSWORD=uT1rqJisajUfa46FW0HAItLN52TmNIiH
UNITY_PATH=C:/UnityEditor/2022.3.62f2
UNITY_SERIAL=SC-NBXF-NDQD-DK9T-9XQZ-DE9E
UNITY_VERSION=2022.3.62f2
UPM_CACHE_ROOT=C:\upm-cache
USERDOMAIN=User Manager
USERNAME=ContainerAdministrator
USERPROFILE=C:\Users\ContainerAdministrator
VERSION_BUILD_VAR=313
VERSION_NUMBER_VAR=develop-10064-23458
WIN_CODESIGN_CONTAINER_NAME=[MASKED]
WIN_CODESIGN_READER_NAME=SafeNet Token JC 0
WIN_CODESIGN_TOKEN_PASSWORD=[MASKED]
windir=C:\Windows

5. Errors

[0KRunning with gitlab-runner 18.4.0 (139a0ac0)[0;m
[0K  on Eva K7dVsHyyr, system ID: s_f64200a77c1a[0;m
[0K  feature flags: FF_USE_FASTZIP:true, FF_TIMESTAMPS:true[0;m
section_start:1773749544:prepare_executor
[0K[0K[36;1mPreparing the "shell" executor[0;m[0;m
[0KUsing Shell (bash) executor...[0;m
section_end:1773749544:prepare_executor
[0Ksection_start:1773749544:prepare_script
[0K[0K[36;1mPreparing environment[0;m[0;m
Running on Evas-Apple.local...
section_end:1773749544:prepare_script
[0Ksection_start:1773749544:get_sources
[0K[0K[36;1mGetting source from Git repository[0;m[0;m
[32;1m$ git config --system core.longpaths true[0;m
[32;1m$ git config --global core.longpaths true[0;m
[32;1m$ git config --list[0;m
credential.helper=osxkeychain
core.longpaths=true
filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
core.longpaths=true
[32;1mGitaly correlation ID: 01KKXVC93R4JKHYF8RRK38BNA4[0;m
[32;1mFetching changes with git depth set to 50...[0;m
Reinitialized existing Git repository in /Volumes/Dock/Builds/K7dVsHyyr/0/alex/cicd-sandbox/.git/
[32;1mChecking out d01da524 as detached HEAD (ref is develop)...[0;m

[32;1mUpdating/initializing submodules with git depth set to 50...[0;m
Synchronizing submodule url for 'ci'
Entering 'ci'
Entering 'ci'
HEAD is now at ef2d7a1 debug: show env variables
[32;1mUpdated submodules[0;m
Synchronizing submodule url for 'ci'
Entering 'ci'
Entering 'ci'
section_end:1773749546:get_sources
[0Ksection_start:1773749546:download_artifacts
[0K[0K[36;1mDownloading artifacts[0;m[0;m
[32;1mDownloading artifacts for build-ios-development (23461)...[0;m
Runtime platform                                  [0;m  arch[0;m=arm64 os[0;m=darwin pid[0;m=55001 revision[0;m=139a0ac0 version[0;m=18.4.0
Downloading artifacts from coordinator... ok      [0;m  correlation_id[0;m=01KKXVCBSCXDBZDA7T6MQR7GDG host[0;m=gitlab.grendelgames.com id[0;m=23461 responseStatus[0;m=200 OK token[0;m=64_yUy6ER
section_end:1773749551:download_artifacts
[0Ksection_start:1773749551:step_script
[0K[0K[36;1mExecuting "step_script" stage of the job script[0;m[0;m
[32;1m$ cp -r ./ci-deploy/iOS/* $CI_PROJECT_DIR/$BUILD_DIR[0;m
[32;1m$ cd $CI_PROJECT_DIR/$BUILD_DIR[0;m
[32;1m$ ls -l[0;m
total 80
drwxr-xr-x   3 eva  staff    96 Mar 17 10:32 CICDSandbox_BurstDebugInformation_DoNotShip
drwxr-xr-x   3 eva  staff    96 Feb 18 16:44 CICDSandbox.app
drwxr-xr-x  24 eva  staff   768 Mar 17 13:11 Classes
drwxr-xr-x  15 eva  staff   480 Mar 17 13:11 Data
drwxr-xr-x   8 eva  staff   256 Mar 17 10:34 fastlane
-rw-r--r--   1 eva  staff    46 Mar 17 13:12 Gemfile
-rw-r--r--   1 eva  staff  6000 Mar 17 13:12 Gemfile.lock
drwxr-xr-x   4 eva  staff   128 Mar 17 13:11 Il2CppOutputProject
-rw-r--r--   1 eva  staff  2219 Mar 17 13:11 Info.plist
-rwxr-xr-x   1 eva  staff   128 Mar 17 13:11 LaunchScreen-iPad.png
-rwxr-xr-x   1 eva  staff  3304 Mar 17 13:11 LaunchScreen-iPad.storyboard
-rwxr-xr-x   1 eva  staff  3324 Mar 17 13:11 LaunchScreen-iPhone.storyboard
-rwxr-xr-x   1 eva  staff   128 Mar 17 13:11 LaunchScreen-iPhoneLandscape.png
-rwxr-xr-x   1 eva  staff   128 Mar 17 13:11 LaunchScreen-iPhonePortrait.png
drwxr-xr-x   9 eva  staff   288 Mar 17 13:11 Libraries
drwxr-xr-x   3 eva  staff    96 Mar 17 13:11 MainApp
-rwxr-xr-x   1 eva  staff   615 Mar 17 13:11 process_symbols.sh
drwxr-xr-x   3 eva  staff    96 Mar 17 13:11 Unity-iPhone
drwxr-xr-x   6 eva  staff   192 Mar 17 13:11 Unity-iPhone Tests
drwxr-xr-x   4 eva  staff   128 Mar 17 13:11 Unity-iPhone.xcodeproj
drwxr-xr-x   7 eva  staff   224 Mar 17 13:11 UnityFramework
[32;1m$ echo "FASTLANE_USER=$FASTLANE_USER" >> ./fastlane/.env[0;m
[32;1m$ echo "FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD=$FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD" >> ./fastlane/.env[0;m
[32;1m$ [ -f ./Podfile ] && pod install[0;m
[32;1m$ fastlane ios beta[0;m
[13:12:32]: [33mfastlane detected a Gemfile in the current directory[0m
[13:12:32]: [33mHowever, it seems like you didn't use `bundle exec`[0m
[13:12:32]: [33mTo launch fastlane faster, please use[0m
[13:12:32]:
[13:12:32]: [36m$ bundle exec fastlane ios beta[0m
[13:12:32]:
[13:12:32]: [33mGet started using a Gemfile for fastlane https://docs.fastlane.tools/getting-started/ios/setup/#use-a-gemfile[0m
[13:12:33]: [32m------------------------------[0m
[13:12:33]: [32m--- Step: default_platform ---[0m
[13:12:33]: [32m------------------------------[0m
[13:12:33]: [32mDriving the lane 'ios beta' 🚀[0m
[13:12:33]: [32m------------------------------------------[0m
[13:12:33]: [32m--- Step: update_code_signing_settings ---[0m
[13:12:33]: [32m------------------------------------------[0m

+------------------------------------------------+
|       [32mSummary for code signing settings[0m        |
+-----------------------+------------------------+
| use_automatic_signing | true                   |
| path                  | Unity-iPhone.xcodeproj |
+-----------------------+------------------------+

[13:12:33]: Updating the Automatic Codesigning flag to enabled for the given project '/Volumes/Dock/Builds/K7dVsHyyr/0/alex/cicd-sandbox/CICD-Sandbox/Unity-iPhone.xcodeproj/project.pbxproj'
[13:12:33]: [32mSuccessfully updated project settings to use Code Sign Style = 'Automatic'[0m
[13:12:33]: [32mModified Targets:[0m
[13:12:33]: [32m         * Unity-iPhone[0m
[13:12:33]: [32m         * Unity-iPhone Tests[0m
[13:12:33]: [32m         * UnityFramework[0m
[13:12:33]: [32m         * GameAssembly[0m
[13:12:33]: [32mModified Build Configurations:[0m
[13:12:33]: [32m         * Release[0m
[13:12:33]: [32m         * ReleaseForProfiling[0m
[13:12:33]: [32m         * ReleaseForRunning[0m
[13:12:33]: [32m         * Debug[0m
[13:12:33]: [32m         * Release[0m
[13:12:33]: [32m         * ReleaseForProfiling[0m
[13:12:33]: [32m         * ReleaseForRunning[0m
[13:12:33]: [32m         * Debug[0m
[13:12:33]: [32m         * Release[0m
[13:12:33]: [32m         * ReleaseForProfiling[0m
[13:12:33]: [32m         * ReleaseForRunning[0m
[13:12:33]: [32m         * Debug[0m
[13:12:33]: [32m         * Release[0m
[13:12:33]: [32m         * ReleaseForProfiling[0m
[13:12:33]: [32m         * ReleaseForRunning[0m
[13:12:33]: [32m         * Debug[0m
[13:12:33]: [32m--------------------------------------------[0m
[13:12:33]: [32m--- Step: latest_testflight_build_number ---[0m
[13:12:33]: [32m--------------------------------------------[0m
[13:12:33]: Login to App Store Connect (alex@grendel-games.com)
Available session is not valid anymore. Continuing with normal login.
Two-factor Authentication (6 digits code) is enabled for account 'alex@grendel-games.com'
More information about Two-factor Authentication: https://support.apple.com/en-us/HT204915

If you're running this in a non-interactive session (e.g. server or CI)
check out https://github.com/fastlane/fastlane/tree/master/spaceship#2-step-verification

(Input `sms` to escape this prompt and select a trusted phone number to send the code as a text message)

(You can also set the environment variable `SPACESHIP_2FA_SMS_DEFAULT_PHONE_NUMBER` to automate this)
(Read more at: https://github.com/fastlane/fastlane/blob/master/spaceship/docs/Authentication.md#auto-select-sms-via-spaceship_2fa_sms_default_phone_number)

Please enter the 6 digit code:
Requesting session...
+-----------------------------+
|        [33mLane Context[0m         |
+------------------+----------+
| DEFAULT_PLATFORM | ios      |
| PLATFORM_NAME    | ios      |
| LANE_NAME        | ios beta |
+------------------+----------+
[13:12:38]: [31mCalled from Fastfile at line 27[0m
[13:12:38]: [31m```[0m
[13:12:38]: [31m    25:     )[0m
[13:12:38]: [31m    26:     increment_build_number({[0m
[13:12:38]: [31m => 27:         build_number: latest_testflight_build_number + 1[0m
[13:12:38]: [31m    28:     })[0m
[13:12:38]: [31m    29:     build_app([0m
[13:12:38]: [31m```[0m
[13:12:38]: [31mUnauthorized Access[0m

+-----------------------------------------------------+
|                  [32mfastlane summary[0m                   |
+------+--------------------------------+-------------+
| Step | Action                         | Time (in s) |
+------+--------------------------------+-------------+
| 1    | default_platform               | 0           |
| 2    | update_code_signing_settings   | 0           |
| 💥   | [31mlatest_testflight_build_number[0m | 5           |
+------+--------------------------------+-------------+

[13:12:38]: [31mfastlane finished with errors[0m

Looking for related GitHub issues on fastlane/fastlane...

➡️  [33mUnauthorised Access when running `match` and SMS 2FA[0m
    https://github.com/fastlane/fastlane/issues/21132 [[31mopen[0m] 15 💬
    28 Apr 2025

➡️  [33m"Google Api Error: Unauthorized - Request is missing required authentication credential" running create_app_on_managed_play_store/upload_to_play_store lanes[0m
    https://github.com/fastlane/fastlane/issues/21091 [[31mopen[0m] 107 💬
    15 Jun 2024

➡️  [33mGoogle Api Error: Invalid request - Some of the Android App Bundle uploads are not completed yet.[0m
    https://github.com/fastlane/fastlane/issues/21126 [[32mclosed[0m] 33 💬
    20 Dec 2025

and 31 more at: https://github.com/fastlane/fastlane/search?q=The%20request%20could%20not%20be%20completed%20because%3A%0A%09Unauthorized%20Access&type=Issues&utf8=✓

🔗  You can ⌘ + double-click on links to open them directly in your browser.
[31m
[!] The request could not be completed because:
        Unauthorized Access[0m

#######################################################################
# fastlane 2.232.2 is available. You are on 2.226.0.
# You should use the latest version.
# Please update using `gem install fastlane`.
#######################################################################
# Run `gem cleanup` from time to time to speed up fastlane
#######################################################################
section_end:1773749559:step_script
[0Ksection_start:1773749559:cleanup_file_variables
[0K[0K[36;1mCleaning up project directory and file based variables[0;m[0;m
section_end:1773749559:cleanup_file_variables
[0K
[31;1mERROR: Job failed: exit status 1
[0;m

6. Fastlane Authentication

  • See https://support.apple.com/en-us/HT204915.

  • See https://github.com/fastlane/fastlane/tree/master/spaceship#2-step-verification.

  • See https://docs.fastlane.tools/best-practices/continuous-integration/#storing-a-manually-verified-session-using-spaceauth.

  • See https://github.com/fastlane/fastlane/blob/master/spaceship/docs/Authentication.md#auto-select-sms-via-spaceship_2fa_sms_default_phone_number.

    CI_PAGES_URL=http://alex.example.com/cicd-sandbox
    CI_REPOSITORY_URL=http://gitlab-ci-token:[MASKED]@gitlab.grendelgames.com/alex/cicd-sandbox.git
    FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD=[MASKED]
    FASTLANE_USER=alex@grendel-games.com
    CI_BUILD_TOKEN=[MASKED]
    CI_DEPENDENCY_PROXY_PASSWORD=[MASKED]
    CI_JOB_JWT=[MASKED]
    CI_JOB_JWT_V1=[MASKED]
    CI_JOB_JWT_V2=[MASKED]
    CI_JOB_TOKEN=[MASKED]
    CI_REGISTRY_PASSWORD=[MASKED]
    CI_REPOSITORY_URL=http://gitlab-ci-token:[MASKED]@gitlab.grendelgames.com/alex/cicd-sandbox.git
    CICD_PUSH_TOKEN=[MASKED]
    FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD=[MASKED]
    MACOS_KEYCHAIN_PASSWORD=[MASKED]
    WIN_CODESIGN_CONTAINER_NAME=[MASKED]
    WIN_CODESIGN_TOKEN_PASSWORD=[MASKED]
  • See https://docs.fastlane.tools/getting-started/ios/authentication.

    Method 3: Application-specific passwords
    
    If you want to upload builds to App Store Connect (actions upload_to_app_store and deliver)
    or TestFlight (actions upload_to_testflight, pilot or testflight) from your CI machine,
    you may generate an application specific password:
    
        Visit appleid.apple.com/account/manage
        Generate a new application specific password
        Provide the application specific password using the environment variable FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD
    
    This will supply the application specific password to iTMSTransporter, the tool used by those actions to perform the upload.
    
    Note: The application specific password will not work if your action usage does anything else than uploading the binary,
    e.g. updating any metadata like setting release notes or distributing to testers, etc.
    For those actions, you must use one of the other methods.
  • Browse to https://appleid.apple.com/account/manage.

  • Sign in with your Apple Account.

  • Click App-Specific Passwords.

  • Click Generate an app-specific password.

  • Type Fastlane and click Create.

  • Enter the password of your Apple Account.

  • Click Continue.

  • Save the app-specific password in an additional attribute called Fastlane App-Specific Password in your Apple Account in KeePassXC.

  • Click Done.

  • Close the App-Specific Passwords window.

  • Sign out.

  • Browse to http://gitlab.grendelgames.com.

  • Select the Alex Wijnbeek / CICD Sandbox project.

  • Select Avatar (User icon) > Preferences.

  • Select the Access Tokens page.

  • Type FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD in the Token name field.

  • Click on the cross to leave the Expiration date box empty.

  • Check read_api.

  • Check read_repository.

  • Click Create personal access token.

  • Scroll up and click on the eye icon to view the token.

  • Copy and paste the value in KeePassXC password manager.

    
    

7. Questions

1) I assume I should turn on 2FA for my Apple Account.

2 Step Verification

When your Apple account has 2 factor verification enabled, you'll automatically be asked to verify your identity.
If you have a trusted device configured for your account, then a code will appear on the device.
If you don't have any devices configured, but have trusted a phone number, then a code will be sent to your phone.
The resulting session will be stored in \~/.fastlane/spaceship/[email]/cookie.
The session should be valid for about one month, however there is no way to test this without actually waiting for over a month.