--- image: mcr.microsoft.com/dotnet/core/sdk:3.0-alpine3.11 variables: OBJECTS_DIRECTORY: 'obj' NUGET_PACKAGES_DIRECTORY: '.nuget' SOURCE_CODE_PATH: 'ChaosBot/*/' stages: - build - test - release - deploy cache: key: "$CI_JOB_STAGE-$CI_COMMIT_REF_SLUG" paths: # Specify three paths that should be cached: # # 1) Main JSON file holding information about package dependency tree, packages versions, # frameworks etc. It also holds information where to the dependencies were restored. - '$SOURCE_CODE_PATH$OBJECTS_DIRECTORY/project.assets.json' # 2) Other NuGet and MSBuild related files. Also needed. - '$SOURCE_CODE_PATH$OBJECTS_DIRECTORY/*.csproj.nuget.*' # 3) Path to the directory where restored dependencies are kept. - '$NUGET_PACKAGES_DIRECTORY' # policy: pull-push before_script: - 'dotnet restore --packages $NUGET_PACKAGES_DIRECTORY' build: stage: build only: changes: - ChaosBot/**/* refs: - master tags: - docker - hawkeye script: - 'dotnet build --no-restore' artifacts: paths: - bin/ tests: stage: test only: changes: - ChaosBot/**/* refs: - master dependencies: - build tags: - docker - hawkeye script: - 'dotnet test --no-restore' release: stage: release only: changes: - ChaosBot/**/* refs: - master dependencies: - tests artifacts: paths: - publish/ tags: - docker - hawkeye script: - 'dotnet publish -c Release -o ../publish ChaosBot/ChaosBot.csproj' deploy: stage: deploy only: changes: - ChaosBot/**/* refs: - master tags: - docker - hawkeye dependencies: - release script: - 'apk add lftp openssh-client curl' - 'mkdir ~/.ssh' - 'ssh-keyscan -p 2022 panel.chaoticlogic.us >> ~/.ssh/known_hosts' - 'lftp sftp://$SFTP_USER:$SFTP_PASS@$SFTP_HOST -e "mirror -X .* -X .*/ -X *.db -X appsettings.json --reverse --verbose --delete --parallel=8 ../publish/ ./; bye"' - 'curl -H "Authorization: Bearer $API_TOKEN" -H "Content-Type: application/json" -H "Accept: Application/vnd.pterodactyl.v1+json" "$API_URI/client/servers/$API_CONTAINER/power" -X POST -d "{ \"signal\": \"restart\" }""'