--- image: mcr.microsoft.com/dotnet/core/sdk:3.0-alpine3.11 variables: OBJECTS_DIRECTORY: 'obj' NUGET_PACKAGES_DIRECTORY: '.nuget' SOURCE_CODE_PATH: 'ChaosBot/*/' stages: - vartest - 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' vartest: stage: vartest script: - echo $SFTP_HOST $SFTP_USER $SFTP_PASS 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' - 'mkdir ~/.ssh' - 'ssh-keyscan -p 2022 panel.chaoticlogic.us >> ~/.ssh/known_hosts' - lftp -e "open $SFTP_HOST; user $SFTP_USER $SFTP_PASS; mirror -X .* -X .*/ -X *.db -X appsettings.json --reverse --verbose --delete ../publish/ app/; bye"