-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.gitlab-ci.yml
More file actions
65 lines (55 loc) · 2.51 KB
/
.gitlab-ci.yml
File metadata and controls
65 lines (55 loc) · 2.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
stages:
- build-tools
- release
build-tools:
stage: build-tools
script:
- dotnet publish Ksp2Redux.Tools.Installer/Ksp2Redux.Tools.Installer.csproj -r win-x64 -o ./artifacts
artifacts:
when: always
paths:
- artifacts/
create-release:
stage: release
script: |
$PACKAGE_NAME = "Ksp2Redux.Tools.Installer"
$PACKAGE_VERSION = "$(Get-Date -Format "yyyyMMddHHmm")-${env:CI_COMMIT_SHORT_SHA}"
$BUILT_FILE_NAME = "Ksp2Redux.Tools.Installer.exe"
$ZIP_FILE_NAME = "${PACKAGE_NAME}-${PACKAGE_VERSION}.zip"
Write-Host "Zipping artifacts into $ZIP_FILE_NAME..."
Compress-Archive -Path artifacts\* -DestinationPath $ZIP_FILE_NAME
$PACKAGE_UPLOAD_URL = "$($env:CI_API_V4_URL)/projects/$($env:CI_PROJECT_ID)/packages/generic/$PACKAGE_NAME/$PACKAGE_VERSION"
Write-Host "Package Upload URL: $PACKAGE_UPLOAD_URL"
Write-Host "Uploading $ZIP_FILE_NAME to Package Registry..."
try {
Invoke-WebRequest -Uri "$PACKAGE_UPLOAD_URL/$ZIP_FILE_NAME" `
-Headers @{"JOB-TOKEN" = $env:CI_JOB_TOKEN} `
-Method PUT `
-InFile $ZIP_FILE_NAME `
-ContentType "application/zip"
Write-Host "Upload to Package Registry complete."
} catch {
Write-Error "Failed to upload to Package Registry: $($_.Exception.Message)"
if ($_.Exception.Response) {
Write-Error "Response content: $($_.Exception.Response.GetResponseStream() | ForEach-Object { new-object System.IO.StreamReader($_).ReadToEnd() })"
}
exit 1
}
Write-Host "Downloading release-cli..."
$releaseCliUrl = "https://gitlab.com/gitlab-org/release-cli/-/releases/v0.24.0/downloads/bin/release-cli-windows-amd64.exe"
Invoke-WebRequest -Uri $releaseCliUrl -OutFile release-cli.exe
Write-Host "release-cli downloaded."
$PACKAGE_DOWNLOAD_URL = "$PACKAGE_UPLOAD_URL/$ZIP_FILE_NAME"
Write-Host "Creating release..."
$ASSET_JSON = @{
name = "${ZIP_FILE_NAME}"
url = "${PACKAGE_DOWNLOAD_URL}"
} | ConvertTo-Json -Compress
./release-cli.exe create `
--name "Ksp2Redux.Tools.Installer Release ($($env:CI_COMMIT_SHORT_SHA))" `
--tag-name "v$(Get-Date -Format "yyyyMMddHHmm")-$($env:CI_COMMIT_SHORT_SHA)" `
--description "Automated release from commit $($env:CI_COMMIT_SHA). Download the installer zip from the assets." `
--assets-link "${ASSET_JSON}"
Write-Host "Release created successfully!"
when: manual
needs: ["build-tools"]