image: - Visual Studio 2019 - Ubuntu1804 services: - docker stack: node 10 init: - ps: | if($isWindows -and $env:DEBUG_RDP -eq "true") { iex ((new-object net.webclient).DownloadString(` 'https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) } - ps: | if($isWindows) { Install-Product node 10 } install: - ps: | $env:PUSH_DOCKER = "false" $env:PROD_DEPLOY = "false" $env:TAG_NAME = "" if($env:APPVEYOR_REPO_TAG -eq "true" -and $env:APPVEYOR_RE_BUILD -eq "True") { $env:PROD_DEPLOY = "true" $env:TAG_NAME = $env:APPVEYOR_REPO_TAG_NAME.TrimStart("v") echo "This is a production deployment for ${env:TAG_NAME}." } if("${env:DOCKER_USERNAME}" -ne "" -and "${env:DOCKER_PASSWORD}" -ne "") { $env:PUSH_DOCKER = "true" } if($isLinux) { npm i -g gulp } else { choco install cloc --no-progress cloc --include-lang C#,SQL,Razor,"Bourne Shell",PowerShell,HTML,CSS,Sass,JavaScript,TypeScript --vcs git } if($env:APPVEYOR_REPO_TAG -eq "true") { $tagName = $env:APPVEYOR_REPO_TAG_NAME.TrimStart("v") $env:RELEASE_NAME = "Version ${tagName}" } before_build: - sh: | if [ "${PUSH_DOCKER}" == "true" ] then echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin fi - ps: | if($isLinux) { #dotnet restore } else { msbuild /t:restore dotnet tool restore } build_script: - sh: chmod +x ./build.sh - ps: | if($isLinux) { #dotnet build --configuration Debug ./build.sh ./build.sh tag dev if($env:PROD_DEPLOY -eq "true") { ./build.sh tag beta ./build.sh tag $env:TAG_NAME } docker images if($env:PUSH_DOCKER -eq "true") { ./build.sh push dev if($env:PROD_DEPLOY -eq "true") { ./build.sh push beta ./build.sh push latest ./build.sh push $env:TAG_NAME } } } else { msbuild bitwarden-server.sln /p:Configuration=Debug /verbosity:minimal ` /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll" $env:swaggerGen = "true" $env:ASPNETCORE_ENVIRONMENT = "Production" cd .\src\Api dotnet swagger tofile --output ..\..\swagger.json --host https://api.bitwarden.com ` .\bin\Debug\netcoreapp3.1\Api.dll public cd ..\.. $env:ASPNETCORE_ENVIRONMENT = "" $env:swaggerGen = "" Push-AppveyorArtifact .\swagger.json } - sh: | echo "Make docker stubs" STUB_OUTPUT=$(pwd)/docker-stub docker run -i --rm --name setup -v $STUB_OUTPUT:/bitwarden bitwarden/setup:dev \ dotnet Setup.dll -stub 1 -install 1 -domain bitwarden.example.com -os lin sudo chown -R appveyor:appveyor $STUB_OUTPUT rm -rf $STUB_OUTPUT/letsencrypt rm $STUB_OUTPUT/env/uid.env $STUB_OUTPUT/config.yml touch $STUB_OUTPUT/env/uid.env cd docker-stub; zip -r ../docker-stub.zip *; cd .. - ps: | if($isLinux) { Push-AppveyorArtifact ./docker-stub.zip } after_build: - sh: | if [ "${PUSH_DOCKER}" == "true" ] then docker logout fi test_script: - ps: | if($isWindows) { dotnet test .\test\Core.Test\Core.Test.csproj --configuration Debug --no-build } on_finish: - ps: | if($isWindows -and $env:DEBUG_RDP -eq "true") { $blockRdp = $true iex ((new-object net.webclient).DownloadString(` 'https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) } deploy: tag: $(APPVEYOR_REPO_TAG_NAME) release: $(RELEASE_NAME) provider: GitHub auth_token: $(GH_TOKEN) artifact: /.*/ force_update: true on: branch: master APPVEYOR_REPO_TAG: true