mirror of
				https://gitlab.com/Kwoth/nadekobot.git
				synced 2025-11-03 16:24:27 -05:00 
			
		
		
		
	ci: Updated CI to make releases
This commit is contained in:
		
							
								
								
									
										221
									
								
								.gitlab-ci.yml
									
									
									
									
									
								
							
							
						
						
									
										221
									
								
								.gitlab-ci.yml
									
									
									
									
									
								
							@@ -3,11 +3,11 @@ image: mcr.microsoft.com/dotnet/sdk:8.0
 | 
				
			|||||||
stages:
 | 
					stages:
 | 
				
			||||||
  - build
 | 
					  - build
 | 
				
			||||||
  - test
 | 
					  - test
 | 
				
			||||||
  # - upload-builds
 | 
					  - build-installer
 | 
				
			||||||
  # - release
 | 
					  - upload-builds
 | 
				
			||||||
  # - publish-windows
 | 
					  - release
 | 
				
			||||||
  # - upload-windows-updater-release
 | 
					  - upload-windows-updater-release
 | 
				
			||||||
  # - publish-medusa-package
 | 
					  - publish-medusa-package
 | 
				
			||||||
 | 
					
 | 
				
			||||||
variables:
 | 
					variables:
 | 
				
			||||||
  project: "NadekoBot"
 | 
					  project: "NadekoBot"
 | 
				
			||||||
@@ -25,7 +25,6 @@ variables:
 | 
				
			|||||||
  WIN_ARM64_OUTPUT_DIR: "nadekobot-windows-arm64"
 | 
					  WIN_ARM64_OUTPUT_DIR: "nadekobot-windows-arm64"
 | 
				
			||||||
  WIN_ARM64_RELEASE: "$CI_COMMIT_TAG-windows-arm64-build.zip"
 | 
					  WIN_ARM64_RELEASE: "$CI_COMMIT_TAG-windows-arm64-build.zip"
 | 
				
			||||||
  PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/NadekoBot-build/${CI_COMMIT_TAG}"
 | 
					  PACKAGE_REGISTRY_URL: "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/NadekoBot-build/${CI_COMMIT_TAG}"
 | 
				
			||||||
  INSTALLER_OUTPUT_DIR: "nadeko-installers/${CI_COMMIT_TAG}"
 | 
					 | 
				
			||||||
  INSTALLER_FILE_NAME: "nadeko-setup-${CI_COMMIT_TAG}.exe"
 | 
					  INSTALLER_FILE_NAME: "nadeko-setup-${CI_COMMIT_TAG}.exe"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
build:
 | 
					build:
 | 
				
			||||||
@@ -46,45 +45,49 @@ build:
 | 
				
			|||||||
      - "$MACOS_X64_OUTPUT_DIR/"
 | 
					      - "$MACOS_X64_OUTPUT_DIR/"
 | 
				
			||||||
      - "$MACOS_ARM64_OUTPUT_DIR/"
 | 
					      - "$MACOS_ARM64_OUTPUT_DIR/"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# upload-builds:
 | 
					upload-builds:
 | 
				
			||||||
#   stage: upload-builds
 | 
					 stage: upload-builds
 | 
				
			||||||
#   image: alpine:latest
 | 
					 image: alpine:latest
 | 
				
			||||||
#   rules:
 | 
					 rules:
 | 
				
			||||||
#     - if: $CI_COMMIT_TAG
 | 
					   - if: $CI_COMMIT_TAG
 | 
				
			||||||
#   script:
 | 
					 script:
 | 
				
			||||||
#     - apk add --no-cache curl tar zip
 | 
					   - apk add --no-cache curl tar zip
 | 
				
			||||||
#     - "tar cvf $LINUX_X64_RELEASE $LINUX_X64_OUTPUT_DIR/*"
 | 
					   - "tar cvf $LINUX_X64_RELEASE $LINUX_X64_OUTPUT_DIR/*"
 | 
				
			||||||
#     - "tar cvf $LINUX_ARM64_RELEASE $LINUX_ARM64_OUTPUT_DIR/*"
 | 
					   - "tar cvf $LINUX_ARM64_RELEASE $LINUX_ARM64_OUTPUT_DIR/*"
 | 
				
			||||||
#     - "tar cvf $MACOS_X64_RELEASE $MACOS_X64_OUTPUT_DIR/*"
 | 
					   - "tar cvf $MACOS_X64_RELEASE $MACOS_X64_OUTPUT_DIR/*"
 | 
				
			||||||
#     - "tar cvf $MACOS_ARM64_RELEASE $MACOS_ARM64_OUTPUT_DIR/*"
 | 
					   - "tar cvf $MACOS_ARM64_RELEASE $MACOS_ARM64_OUTPUT_DIR/*"
 | 
				
			||||||
#     - "zip -r $WIN_X64_RELEASE $WIN_X64_OUTPUT_DIR/*"
 | 
					   - "zip -r $WIN_X64_RELEASE $WIN_X64_OUTPUT_DIR/*"
 | 
				
			||||||
#     - "zip -r $WIN_ARM64_RELEASE $WIN_ARM64_OUTPUT_DIR/*"
 | 
					   - "zip -r $WIN_ARM64_RELEASE $WIN_ARM64_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 $LINUX_X64_RELEASE $PACKAGE_REGISTRY_URL/$LINUX_X64_RELEASE
 | 
				
			||||||
#     - |
 | 
					   - |
 | 
				
			||||||
#       curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file $LINUX_ARM64_RELEASE $PACKAGE_REGISTRY_URL/$LINUX_ARM64_RELEASE
 | 
					     curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file $LINUX_ARM64_RELEASE $PACKAGE_REGISTRY_URL/$LINUX_ARM64_RELEASE
 | 
				
			||||||
#     - |
 | 
					   - |
 | 
				
			||||||
#       curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file $WIN_X64_RELEASE $PACKAGE_REGISTRY_URL/$WIN_X64_RELEASE
 | 
					     curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file $WIN_X64_RELEASE $PACKAGE_REGISTRY_URL/$WIN_X64_RELEASE
 | 
				
			||||||
#     - |
 | 
					   - |
 | 
				
			||||||
#       curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file $WIN_ARM64_RELEASE $PACKAGE_REGISTRY_URL/$WIN_ARM64_RELEASE
 | 
					     curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file $WIN_ARM64_RELEASE $PACKAGE_REGISTRY_URL/$WIN_ARM64_RELEASE
 | 
				
			||||||
#     - |
 | 
					   - |
 | 
				
			||||||
#       curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file $MACOS_X64_RELEASE $PACKAGE_REGISTRY_URL/$MACOS_X64_RELEASE
 | 
					     curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file $MACOS_X64_RELEASE $PACKAGE_REGISTRY_URL/$MACOS_X64_RELEASE
 | 
				
			||||||
#     - |
 | 
					   - |
 | 
				
			||||||
#       curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file $MACOS_ARM64_RELEASE $PACKAGE_REGISTRY_URL/$MACOS_ARM64_RELEASE
 | 
					     curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file $MACOS_ARM64_RELEASE $PACKAGE_REGISTRY_URL/$MACOS_ARM64_RELEASE
 | 
				
			||||||
# release:
 | 
					   - |
 | 
				
			||||||
#   stage: release
 | 
					     curl --header "JOB-TOKEN: ${CI_JOB_TOKEN}" --upload-file $INSTALLER_FILE_NAME $PACKAGE_REGISTRY_URL/$INSTALLER_FILE_NAME
 | 
				
			||||||
#   image: registry.gitlab.com/gitlab-org/release-cli:latest
 | 
					
 | 
				
			||||||
#   rules:
 | 
					release:
 | 
				
			||||||
#     - if: $CI_COMMIT_TAG
 | 
					 stage: release
 | 
				
			||||||
#   script:
 | 
					 image: registry.gitlab.com/gitlab-org/release-cli:latest
 | 
				
			||||||
#     - |
 | 
					 rules:
 | 
				
			||||||
#       release-cli create --name "NadekoBot v$CI_COMMIT_TAG" --description "## [Changelog](https://gitlab.com/nadeko/nadekobot/-/blob/v5/CHANGELOG.md#$(echo "$CI_COMMIT_TAG" | sed "s/\.//g")-$(date +%d%m%Y))" --tag-name $CI_COMMIT_TAG \
 | 
					   - if: $CI_COMMIT_TAG
 | 
				
			||||||
#         --assets-link "{\"name\":\"${LINUX_X64_RELEASE}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${LINUX_X64_RELEASE}\"}" \
 | 
					 script:
 | 
				
			||||||
#         --assets-link "{\"name\":\"${LINUX_ARM64_RELEASE}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${LINUX_ARM64_RELEASE}\"}" \
 | 
					   - |
 | 
				
			||||||
#         --assets-link "{\"name\":\"${WIN_X64_RELEASE}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${WIN_X64_RELEASE}\"}" \
 | 
					     release-cli create --name "NadekoBot v$CI_COMMIT_TAG" --description "## [Changelog](https://gitlab.com/nadeko/nadekobot/-/blob/v5/CHANGELOG.md#$(echo "$CI_COMMIT_TAG" | sed "s/\.//g")-$(date +%d%m%Y))" --tag-name $CI_COMMIT_TAG \
 | 
				
			||||||
#         --assets-link "{\"name\":\"${WIN_ARM64_RELEASE}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${WIN_ARM64_RELEASE}\"}" \
 | 
					       --assets-link "{\"name\":\"${LINUX_X64_RELEASE}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${LINUX_X64_RELEASE}\"}" \
 | 
				
			||||||
#         --assets-link "{\"name\":\"${MACOS_X64_RELEASE}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${MACOS_X64_RELEASE}\"}" \
 | 
					       --assets-link "{\"name\":\"${LINUX_ARM64_RELEASE}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${LINUX_ARM64_RELEASE}\"}" \
 | 
				
			||||||
#         --assets-link "{\"name\":\"${MACOS_ARM64_RELEASE}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${MACOS_ARM64_RELEASE}\"}"
 | 
					       --assets-link "{\"name\":\"${WIN_X64_RELEASE}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${WIN_X64_RELEASE}\"}" \
 | 
				
			||||||
 | 
					       --assets-link "{\"name\":\"${WIN_ARM64_RELEASE}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${WIN_ARM64_RELEASE}\"}" \
 | 
				
			||||||
 | 
					       --assets-link "{\"name\":\"${MACOS_X64_RELEASE}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${MACOS_X64_RELEASE}\"}" \
 | 
				
			||||||
 | 
					       --assets-link "{\"name\":\"${MACOS_ARM64_RELEASE}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${MACOS_ARM64_RELEASE}\"}"
 | 
				
			||||||
 | 
					       --assets-link "{\"name\":\"${INSTALLER_FILE_NAME}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${INSTALLER_FILE_NAME}\"}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
test:
 | 
					test:
 | 
				
			||||||
  stage: test
 | 
					  stage: test
 | 
				
			||||||
@@ -94,76 +97,62 @@ test:
 | 
				
			|||||||
    - "cd $tests_path"
 | 
					    - "cd $tests_path"
 | 
				
			||||||
    - "dotnet test"
 | 
					    - "dotnet test"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# publish-windows:
 | 
					build-installer:
 | 
				
			||||||
#   stage: publish-windows
 | 
					 stage: build-installer
 | 
				
			||||||
#   rules:
 | 
					 rules:
 | 
				
			||||||
#     - if: "$CI_COMMIT_TAG"
 | 
					   - if: "$CI_COMMIT_TAG"
 | 
				
			||||||
#   image: scottyhardy/docker-wine
 | 
					 image: scottyhardy/docker-wine
 | 
				
			||||||
#   before_script:
 | 
					 before_script:
 | 
				
			||||||
#     - choco install dotnet-runtime --version=7.0.2 -y
 | 
					   - choco install dotnet-runtime --version=8.0.4 -y
 | 
				
			||||||
#     - choco install dotnet-sdk --version=7.0.102 -y
 | 
					   - choco install dotnet-sdk --version=8.0.204 -y
 | 
				
			||||||
#     - choco install innosetup -y
 | 
					   - choco install innosetup -y
 | 
				
			||||||
#   artifacts:
 | 
					 artifacts:
 | 
				
			||||||
#     paths:
 | 
					   paths:
 | 
				
			||||||
#       - "$INSTALLER_OUTPUT_DIR/$INSTALLER_FILE_NAME"
 | 
					     - "$INSTALLER_OUTPUT_DIR/$INSTALLER_FILE_NAME"
 | 
				
			||||||
#   script:
 | 
					 script:
 | 
				
			||||||
#     - dotnet clean
 | 
					   - dotnet clean
 | 
				
			||||||
#     - dotnet restore -f --no-cache -v n
 | 
					   - dotnet restore -f --no-cache -v n
 | 
				
			||||||
#     - dotnet publish -c Release -p:PublishSingleFile=true --runtime win-x64 /p:Version=$CI_COMMIT_TAG src/NadekoBot
 | 
					   - dotnet publish -c Release -p:PublishSingleFile=true --runtime win-x64 /p:Version=$CI_COMMIT_TAG src/NadekoBot
 | 
				
			||||||
#     - $env:NADEKOBOT_INSTALL_VERSION = $CI_COMMIT_TAG
 | 
					   - $env:NADEKOBOT_INSTALL_VERSION = $CI_COMMIT_TAG
 | 
				
			||||||
#     - iscc.exe "/O+" ".\exe_builder.iss"
 | 
					   - iscc.exe "/O+" ".\exe_builder.iss"
 | 
				
			||||||
#   tags:
 | 
					 tags:
 | 
				
			||||||
#     - windows
 | 
					   - windows
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# upload-windows-updater-release:
 | 
					publish-medusa-package:
 | 
				
			||||||
#   stage: upload-windows-updater-release
 | 
					 stage: publish-medusa-package
 | 
				
			||||||
#   rules:
 | 
					 rules:
 | 
				
			||||||
#     - if: "$CI_COMMIT_TAG"
 | 
					   - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_TAG
 | 
				
			||||||
#   image:
 | 
					 script:
 | 
				
			||||||
#     name: amazon/aws-cli
 | 
					   - LAST_TAG=$(git describe --tags --abbrev=0)
 | 
				
			||||||
#     entrypoint: [""]
 | 
					   - if [ $CI_COMMIT_TAG ];then MEDUSA_VERSION="$CI_COMMIT_TAG"; else MEDUSA_VERSION="$LAST_TAG-$CI_COMMIT_SHORT_SHA"; fi
 | 
				
			||||||
#   script:
 | 
					   - cd src/Nadeko.Medusa/
 | 
				
			||||||
#     - sed -i "s/_INSTALLER_FILE_NAME_/$INSTALLER_FILE_NAME/g" releases-v3.json
 | 
					   - dotnet pack -c Release /p:Version=$MEDUSA_VERSION -o bin/Release/packed
 | 
				
			||||||
#     - sed -i "s/_VERSION_/$CI_COMMIT_TAG/g" releases-v3.json
 | 
					   - dotnet nuget push bin/Release/packed/ --source https://www.myget.org/F/nadeko/api/v2/package --api-key "$MYGET_API_KEY"
 | 
				
			||||||
#     - aws --version
 | 
					 | 
				
			||||||
#     - 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 "releases-v3.json"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# publish-medusa-package:
 | 
					docker-build:
 | 
				
			||||||
#   stage: publish-medusa-package
 | 
					 # Use the official docker image.
 | 
				
			||||||
#   rules:
 | 
					 image: docker:latest
 | 
				
			||||||
#     - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_TAG
 | 
					 stage: build
 | 
				
			||||||
#   script:
 | 
					 allow_failure: true
 | 
				
			||||||
#     - LAST_TAG=$(git describe --tags --abbrev=0)
 | 
					 services:
 | 
				
			||||||
#     - if [ $CI_COMMIT_TAG ];then MEDUSA_VERSION="$CI_COMMIT_TAG"; else MEDUSA_VERSION="$LAST_TAG-$CI_COMMIT_SHORT_SHA"; fi
 | 
					   - docker:dind
 | 
				
			||||||
#     - cd src/Nadeko.Medusa/
 | 
					 before_script:
 | 
				
			||||||
#     - dotnet pack -c Release /p:Version=$MEDUSA_VERSION -o bin/Release/packed
 | 
					   - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
 | 
				
			||||||
#     - dotnet nuget push bin/Release/packed/ --source https://www.myget.org/F/nadeko/api/v2/package --api-key "$MYGET_API_KEY"
 | 
					 # Default branch leaves tag empty (= latest tag)
 | 
				
			||||||
 | 
					 # All other branches are tagged with the escaped branch name (commit ref slug)
 | 
				
			||||||
# docker-build:
 | 
					 script:
 | 
				
			||||||
#   # Use the official docker image.
 | 
					   - |
 | 
				
			||||||
#   image: docker:latest
 | 
					     if [[ "$CI_COMMIT_BRANCH" == "$CI_DEFAULT_BRANCH" ]]; then
 | 
				
			||||||
#   stage: build
 | 
					       tag=""
 | 
				
			||||||
#   allow_failure: true
 | 
					       echo "Running on default branch '$CI_DEFAULT_BRANCH': tag = 'latest'"
 | 
				
			||||||
#   services:
 | 
					     else
 | 
				
			||||||
#     - docker:dind
 | 
					       tag=":$CI_COMMIT_SHA"
 | 
				
			||||||
#   before_script:
 | 
					       echo "Running on branch '$CI_COMMIT_BRANCH': tag = $tag"
 | 
				
			||||||
#     - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
 | 
					     fi
 | 
				
			||||||
#   # Default branch leaves tag empty (= latest tag)
 | 
					   - docker build --pull -t "$CI_REGISTRY_IMAGE${tag}" .
 | 
				
			||||||
#   # All other branches are tagged with the escaped branch name (commit ref slug)
 | 
					   - docker push "$CI_REGISTRY_IMAGE${tag}"
 | 
				
			||||||
#   script:
 | 
					 # Run this job in a branch where a Dockerfile exists
 | 
				
			||||||
#     - |
 | 
					 rules:
 | 
				
			||||||
#       if [[ "$CI_COMMIT_BRANCH" == "$CI_DEFAULT_BRANCH" ]]; then
 | 
					   - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_TAG
 | 
				
			||||||
#         tag=""
 | 
					     exists:
 | 
				
			||||||
#         echo "Running on default branch '$CI_DEFAULT_BRANCH': tag = 'latest'"
 | 
					       - Dockerfile
 | 
				
			||||||
#       else
 | 
					 | 
				
			||||||
#         tag=":$CI_COMMIT_SHA"
 | 
					 | 
				
			||||||
#         echo "Running on branch '$CI_COMMIT_BRANCH': tag = $tag"
 | 
					 | 
				
			||||||
#       fi
 | 
					 | 
				
			||||||
#     - docker build --pull -t "$CI_REGISTRY_IMAGE${tag}" .
 | 
					 | 
				
			||||||
#     - docker push "$CI_REGISTRY_IMAGE${tag}"
 | 
					 | 
				
			||||||
#   # Run this job in a branch where a Dockerfile exists
 | 
					 | 
				
			||||||
#   rules:
 | 
					 | 
				
			||||||
#     - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_TAG
 | 
					 | 
				
			||||||
#       exists:
 | 
					 | 
				
			||||||
#         - Dockerfile
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user