2021-06-17 21:40:48 +00:00
image : mcr.microsoft.com/dotnet/sdk:5.0
2021-09-06 19:29:22 +00:00
stages :
2021-08-24 21:57:44 +00:00
- build
2021-08-23 07:08:35 +00:00
- test
2021-09-01 08:38:53 +00:00
- upload-builds
2021-09-01 16:34:35 +00:00
- release
2021-09-01 09:11:22 +00:00
- publish-windows
2021-09-01 08:38:53 +00:00
- upload-windows-updater-release
2021-09-06 19:29:22 +00:00
variables :
project : "NadekoBot"
2021-06-18 02:00:05 +00:00
tests : "NadekoBot.Tests"
2021-08-24 23:05:23 +00:00
LINUX_X64_OUTPUT_DIR : "nadekobot-linux-x64"
2021-08-23 07:08:35 +00:00
LINUX_X64_RELEASE : "$CI_COMMIT_TAG-linux-x64-build.tar"
2021-08-24 23:05:23 +00:00
WIN_X64_OUTPUT_DIR : "nadekobot-windows-x64"
2021-08-23 07:08:35 +00:00
WIN_X64_RELEASE : "$CI_COMMIT_TAG-windows-x64-build.zip"
PACKAGE_REGISTRY_URL : "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/NadekoBot-build/${CI_COMMIT_TAG}"
2021-09-01 11:34:08 +00:00
INSTALLER_OUTPUT_DIR : "nadeko-installers/${CI_COMMIT_TAG}"
2021-09-01 08:38:53 +00:00
INSTALLER_FILE_NAME : "nadeko-setup-${CI_COMMIT_TAG}.exe"
2021-08-21 21:54:45 +00:00
2021-08-24 21:57:44 +00:00
build :
stage : build
2021-08-21 21:54:45 +00:00
script :
2021-08-23 07:08:35 +00:00
- "dotnet publish -c Release -r linux-x64 -o $LINUX_X64_OUTPUT_DIR src/NadekoBot/NadekoBot.csproj"
- "dotnet publish -c Release -r win7-x64 -o $WIN_X64_OUTPUT_DIR src/NadekoBot/NadekoBot.csproj"
artifacts :
paths :
- "$LINUX_X64_OUTPUT_DIR/"
- "$WIN_X64_OUTPUT_DIR/"
2021-09-01 08:38:53 +00:00
upload-builds :
stage : upload-builds
2021-08-23 07:08:35 +00:00
image : alpine:latest
rules :
- if : $CI_COMMIT_TAG
script :
- apk add --no-cache curl tar zip
- "tar cvf $LINUX_X64_RELEASE $LINUX_X64_OUTPUT_DIR/*"
- "zip -r $WIN_X64_RELEASE $WIN_X64_OUTPUT_DIR/*"
- |
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file $LINUX_X64_RELEASE $PACKAGE_REGISTRY_URL/$LINUX_X64_RELEASE
- |
curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file $WIN_X64_RELEASE $PACKAGE_REGISTRY_URL/$WIN_X64_RELEASE
2021-09-01 08:38:53 +00:00
2021-09-01 16:34:35 +00:00
release :
stage : release
image : registry.gitlab.com/gitlab-org/release-cli:latest
rules :
- if : $CI_COMMIT_TAG
script :
- |
release-cli create --name "NadekoBot v$CI_COMMIT_TAG" --description "Changelog can be found [here](https://gitlab.com/Kwoth/nadekobot/-/blob/v3/CHANGELOG.md#$(echo "$CI_COMMIT_TAG" | sed "s/\.//g")-$(date +%d%m%Y))" --tag-name $CI_COMMIT_TAG \
--assets-link "{\"name\":\"${LINUX_X64_RELEASE}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${LINUX_X64_RELEASE}\"}" \
--assets-link "{\"name\":\"${WIN_X64_RELEASE}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${WIN_X64_RELEASE}\"}"
2021-09-06 19:29:22 +00:00
2021-06-17 21:40:48 +00:00
test :
stage : test
variables :
tests_path : "src/$tests"
script :
- "cd $tests_path"
2021-09-01 08:38:53 +00:00
- "dotnet test"
publish-windows :
stage : publish-windows
rules :
- if : '$CI_COMMIT_TAG'
image : scottyhardy/docker-wine
before_script :
- choco install dotnet-5.0-runtime -y
- choco install dotnet-5.0-sdk -y
- choco install innosetup -y
artifacts :
paths :
- "$INSTALLER_OUTPUT_DIR/$INSTALLER_FILE_NAME"
2021-09-01 16:34:35 +00:00
- "$INSTALLER_OUTPUT_DIR/releases-v3.json"
2021-09-01 08:38:53 +00:00
script :
- dotnet clean
- dotnet restore
- dotnet publish -c Release --runtime win7-x64 /p:Version=$CI_COMMIT_TAG src/NadekoBot
- $env:NADEKOBOT_INSTALL_VERSION = $CI_COMMIT_TAG
- iscc.exe "/O+" ".\exe_builder.iss"
2021-09-01 17:03:00 +00:00
- echo "{ \"VersionName\":\"$CI_COMMIT_TAG\", \"DownloadLink\":\"https://cdn.nadeko.bot/dl/bot/${INSTALLER_FILE_NAME}\" }" > "${INSTALLER_OUTPUT_DIR}/releases-v3.json"
2021-09-01 08:38:53 +00:00
tags :
- windows
upload-windows-updater-release :
stage : upload-windows-updater-release
rules :
- if : '$CI_COMMIT_TAG'
image :
name : amazon/aws-cli
entrypoint : [ "" ]
script :
- aws --version
2021-09-01 16:34:35 +00:00
- aws --endpoint-url $AWS_SERVICE_URL s3api put-object --bucket "$AWS_BUCKET_NAME" --key "dl/bot/$INSTALLER_FILE_NAME" --acl public-read --body "$INSTALLER_OUTPUT_DIR/$INSTALLER_FILE_NAME"
- aws --endpoint-url $AWS_SERVICE_URL s3api put-object --bucket "$AWS_BUCKET_NAME" --key "dl/bot/releases-v3.json" --acl public-read --body "$INSTALLER_OUTPUT_DIR/releases-v3.json"