diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..7ad714419eca37a86664a4680ad4db2fbedba5a4 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,163 @@ +stages: + - build + - deploy + +variables: + VIEWER_USE_CRASHPAD: "TRUE" + VIEWER_CRASHPAD_URL: $SENTRY_DSN + +.win_build: &win_build + stage: build + tags: + - autobuild + - windows + before_script: + - pipenv install + script: + - If ($env:VIEWER_CHANNEL_TYPE -eq 'Project') + { + $env:VIEWER_CHANNEL_CODENAME = $env:CI_COMMIT_REF_NAME[8..100] -join '' + } + - pipenv run autobuild configure -c ReleaseOS -- -DUSE_FMODSTUDIO=ON -DUSE_NVAPI=ON -DUSE_LTO=ON -DVS_DISABLE_FATAL_WARNINGS=ON + - pipenv run autobuild build -c ReleaseOS --no-configure + - If ($env:VIEWER_USE_CRASHPAD -eq 'TRUE') { + - Push-Location .\build-vc-*\newview\Release\ + - sentry-cli upload-dif --include-sources alchemy-bin.exe alchemy-bin.pdb crashpad_handler.exe crashpad_handler.pdb openjpeg.pdb openjpeg.dll fmod.dll libcrypto-1_1.dll libcrypto-1_1.pdb libssl-1_1.dll libssl-1_1.pdb libcrypto-1_1-x64.dll libcrypto-1_1-x64.pdb libssl-1_1-x64.dll libssl-1_1-x64.pdb vcruntime140.dll msvcp140.dll nghttp2.dll glod.dll + - Pop-Location } + artifacts: + name: "$env:CI_COMMIT_REF_NAME-$env:CI_COMMIT_SHORT_SHA" + expire_in: 2 week + paths: + - build-vc-*/newview/Release/build_data.json + - build-vc-*/newview/Release/alchemy-bin.pdb + - build-vc-*/newview/Release/Alchemy_*_Setup.exe + +.beta_rules: &beta_rules + only: + - /^.*-beta$/ + except: + - branches + +.release_rules: &release_rules + only: + - /^.*-release$/ + except: + - branches + +build:master:windows32: + <<: *win_build + interruptible: true + variables: + AUTOBUILD_ADDRSIZE: 32 + VIEWER_CHANNEL_TYPE: Test + VIEWER_USE_CRASHPAD: "FALSE" + only: + - schedules + +build:master:windows64: + <<: *win_build + interruptible: true + variables: + AUTOBUILD_ADDRSIZE: 64 + VIEWER_CHANNEL_TYPE: Test + VIEWER_USE_CRASHPAD: "FALSE" + only: + - schedules + +build:project:windows32: + <<: *win_build + interruptible: true + variables: + AUTOBUILD_ADDRSIZE: 32 + VIEWER_CHANNEL_TYPE: Project + only: + - /^project-.*$/ + +build:project:windows64: + <<: *win_build + interruptible: true + variables: + AUTOBUILD_ADDRSIZE: 64 + VIEWER_CHANNEL_TYPE: Project + only: + - /^project-.*$/ + +build:beta:windows32: + <<: *win_build + variables: + AUTOBUILD_ADDRSIZE: 32 + VIEWER_CHANNEL_TYPE: Beta + <<: *beta_rules + +build:beta:windows64: + <<: *win_build + variables: + AUTOBUILD_ADDRSIZE: 64 + VIEWER_CHANNEL_TYPE: Beta + <<: *beta_rules + +build:release:windows32: + <<: *win_build + variables: + AUTOBUILD_ADDRSIZE: 32 + VIEWER_CHANNEL_TYPE: Release + <<: *release_rules + +build:release:windows64: + <<: *win_build + variables: + AUTOBUILD_ADDRSIZE: 64 + VIEWER_CHANNEL_TYPE: Release + <<: *release_rules + +.deploy_template: &deploy_template + stage: deploy + tags: + - autobuild + - windows + script: + - $BuildData = Get-Content .\build-vc-64\newview\Release\build_data.json | ConvertFrom-Json + - $BuildChannelVersion = $BuildData."Channel" + ' ' + $BuildData."Version" + - $UploadDestViewerDir = $BuildChannelVersion.ToLower().Replace(" ", "/") + - $UploadDestURL = "https://pkg.alchemyviewer.org/repository/viewer/${UploadDestViewerDir}" + + - $UploadParams = @{ UseBasicParsing = $true; + Method = "PUT"; + Headers = @{ + ContentType = "application/x-executable"; + Authorization = "Basic $([System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes("$env:AUTOBUILD_HTTP_USER`:$env:AUTOBUILD_HTTP_PASS")))"; }; + Verbose = $true; }; + + - Push-Location .\build-vc-32\newview\Release\ + - $FileNameWin32 = Get-ChildItem -Path . -Name -Include Alchemy_*_Setup.exe + - Invoke-WebRequest @UploadParams -InFile .\$FileNameWin32 -Uri "${UploadDestURL}/${FileNameWin32}" + - Pop-Location + + - Push-Location .\build-vc-64\newview\Release\ + - $FileNameWin64 = Get-ChildItem -Path . -Name -Include Alchemy_*_Setup.exe + - Invoke-WebRequest @UploadParams -InFile .\$FileNameWin64 -Uri "${UploadDestURL}/${FileNameWin64}" + - Pop-Location + + - sentry-cli releases new $BuildChannelVersion + - sentry-cli releases set-commits --auto $BuildChannelVersion + - sentry-cli releases finalize $BuildChannelVersion + when: manual + +deploy_project: + <<: *deploy_template + environment: + name: qa + only: + - /^project-.*$/ + +deploy_beta: + <<: *deploy_template + environment: + name: staging + <<: *beta_rules + +deploy_release: + <<: *deploy_template + environment: + name: production + <<: *release_rules \ No newline at end of file diff --git a/Pipfile b/Pipfile new file mode 100644 index 0000000000000000000000000000000000000000..81e20cec2d5fe246b4236dbf35bbb5bdcce3d158 --- /dev/null +++ b/Pipfile @@ -0,0 +1,14 @@ +[[source]] +url = "https://pypi.org/simple" +verify_ssl = true +name = "pypi" + +[dev-packages] + +[packages] +llbase = "*" +certifi = "*" +autobuild = {git = "https://git.alchemyviewer.org/alchemy/autobuild.git"} + +[requires] +python_version = "2.7"