variables: GIT_SUBMODULE_STRATEGY: recursive stages: - build - release build:windows: stage: build tags: - windows when: manual before_script: | function loadenv($bat_file) { $env_file = New-TemporaryFile cmd /c " `"$bat_file`" $args && set > `"$env_file`" " foreach($line in Get-Content "$env_file") { if($line -match "^(.*?)=(.*)$") { Set-Content "env:\$($matches[1])" $matches[2] } } Remove-Item "$env_file" } script: - loadenv "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" ${PLATFORM} - cmake . --preset Windows-${PLATFORM}-Release - cmake --build --preset Windows-${PLATFORM}-Release - cp out/build/Windows-${PLATFORM}-Release/${CI_PROJECT_NAME}.*.dll ./ after_script: - Add-Content -Path job.env -Value "windows_${PLATFORM}_JOB_ID=${CI_JOB_ID}" parallel: matrix: - PLATFORM: [x86, x64] artifacts: name: ${CI_PROJECT_NAME} paths: - ${CI_PROJECT_NAME}.*.dll expire_in: never reports: dotenv: job.env build:linux: stage: build image: registry.gitlab.com/gothicmultiplayerteam/buildimage:ubuntu-18.04 when: manual script: - cmake . -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE="$TOOLCHAIN.cmake" - cmake --build . && exit $? after_script: - echo "${TOOLCHAIN}_JOB_ID=$CI_JOB_ID" | tr - _ >> job.env parallel: matrix: - TOOLCHAIN: [linux-x86, linux-x64, linux-arm, linux-arm64] artifacts: name: $CI_PROJECT_NAME paths: - $CI_PROJECT_NAME.* expire_in: never reports: dotenv: job.env release: stage: release image: registry.gitlab.com/gitlab-org/release-cli:latest when: manual needs: [build:linux, build:windows] variables: TAG: '0.1' script: - echo "Create Release $TAG" release: tag_name: '$TAG' description: "./CHANGELOG.md" assets: links: - name: "$CI_PROJECT_NAME.x86.dll" url: "$CI_PROJECT_URL/-/jobs/$windows_x86_JOB_ID/artifacts/download" link_type: "package" - name: "$CI_PROJECT_NAME.x64.dll" url: "$CI_PROJECT_URL/-/jobs/$windows_x64_JOB_ID/artifacts/download" link_type: "package" - name: "$CI_PROJECT_NAME.x86.so" url: "$CI_PROJECT_URL/-/jobs/$linux_x86_JOB_ID/artifacts/download" link_type: "package" - name: "$CI_PROJECT_NAME.x64.so" url: "$CI_PROJECT_URL/-/jobs/$linux_x64_JOB_ID/artifacts/download" link_type: "package" - name: "$CI_PROJECT_NAME.arm.so" url: "$CI_PROJECT_URL/-/jobs/$linux_arm_JOB_ID/artifacts/download" link_type: "package" - name: "$CI_PROJECT_NAME.arm64.so" url: "$CI_PROJECT_URL/-/jobs/$linux_arm64_JOB_ID/artifacts/download" link_type: "package"