# Notes: # - Minimal appveyor.yml file is an empty file. All sections are optional. # - Indent each level of configuration with 2 spaces. Do not use tabs! # - All section names are case-sensitive. # - Section names should be unique on each level. #---------------------------------# # general configuration # #---------------------------------# # version format version: 1.0.{build} # you can use {branch} name in version format too # version: 1.0.{build}-{branch} # branches to build branches: # whitelist only: - master - production # blacklist except: - gh-pages # Do not build on tags (GitHub and BitBucket) skip_tags: true # Start builds on tags only (GitHub and BitBucket) skip_non_tags: true # Skipping commits with particular message or from specific user skip_commits: message: /Created.*\.(png|jpg|jpeg|bmp|gif)/ # Regex for matching commit message author: John # Commit author's username, name, email or regexp maching one of these. # Including commits with particular message or from specific user only_commits: message: /build/ # Start a new build if message contains 'build' author: jack@company.com # Start a new build for commit of user with email jack@company.com # Skipping commits affecting specific files (GitHub only). More details here: /docs/appveyor-yml #skip_commits: # files: # - docs/* # - '**/*.html' # Including commits affecting specific files (GitHub only). More details here: /docs/appveyor-yml #only_commits: # files: # - Project-A/ # - Project-B/ # Do not build feature branch with open Pull Requests skip_branch_with_pr: true # Maximum number of concurrent jobs for the project max_jobs: 1 #---------------------------------# # environment configuration # #---------------------------------# # Build worker image (VM template) image: Visual Studio 2015 # scripts that are called at very beginning, before repo cloning init: - git config --global core.autocrlf input # clone directory clone_folder: c:\projects\myproject # fetch repository as zip archive shallow_clone: true # default is "false" # set clone depth clone_depth: 5 # clone entire repository history if not defined # setting up etc\hosts file hosts: queue-server: 127.0.0.1 db.server.com: 127.0.0.2 # environment variables environment: my_var1: value1 my_var2: value2 # this is how to set encrypted variable. Go to "Settings" -> "Encrypt YAML" page in account menu to encrypt data. my_secure_var1: secure: FW3tJ3fMncxvs58/ifSP7w== # environment: # global: # connection_string: server=12;password=13; # service_url: https://127.0.0.1:8090 # # matrix: # - db: mysql # provider: mysql # # - db: mssql # provider: mssql # password: # secure: $#(JFDA)jQ@#$ # this is how to allow failing jobs in the matrix matrix: fast_finish: true # set this flag to immediately finish build once one of the jobs fails. allow_failures: - platform: x86 configuration: Debug - platform: x64 configuration: Release # exclude configuration from the matrix. Works similarly to 'allow_failures' but build not even being started for excluded combination. exclude: - platform: x86 configuration: Debug # build cache to preserve files/folders between builds cache: - packages -> **\packages.config # preserve "packages" directory in the root of build folder but will reset it if packages.config is modified - projectA\libs - node_modules # local npm modules - '%LocalAppData%\NuGet\Cache' # NuGet < v3 - '%LocalAppData%\NuGet\v3-cache' # NuGet v3 # enable service required for build/tests services: - mssql2014 # start SQL Server 2014 Express - mssql2014rs # start SQL Server 2014 Express and Reporting Services - mssql2012sp1 # start SQL Server 2012 SP1 Express - mssql2012sp1rs # start SQL Server 2012 SP1 Express and Reporting Services - mssql2008r2sp2 # start SQL Server 2008 R2 SP2 Express - mssql2008r2sp2rs # start SQL Server 2008 R2 SP2 Express and Reporting Services - mysql # start MySQL 5.6 service - postgresql # start PostgreSQL 9.5 service - iis # start IIS - msmq # start Queuing services - mongodb # start MongoDB # scripts that run after cloning repository install: # by default, all script lines are interpreted as batch - echo This is batch # to run script as a PowerShell command prepend it with ps: - ps: Write-Host 'This is PowerShell' # batch commands start from cmd: - cmd: echo This is batch again - cmd: set MY_VAR=12345 # enable patching of AssemblyInfo.* files assembly_info: patch: true file: AssemblyInfo.* assembly_version: "2.2.{build}" assembly_file_version: "{version}" assembly_informational_version: "{version}" # Automatically register private account and/or project AppVeyor NuGet feeds. nuget: account_feed: true project_feed: true disable_publish_on_pr: true # disable publishing of .nupkg artifacts to account/project feeds for pull request builds publish_wap_octopus: true # disable publishing of Octopus Deploy .nupkg artifacts to account/project feeds #---------------------------------# # build configuration # #---------------------------------# # build platform, i.e. x86, x64, Any CPU. This setting is optional. platform: Any CPU # to add several platforms to build matrix: #platform: # - x86 # - Any CPU # build Configuration, i.e. Debug, Release, etc. configuration: Release # to add several configurations to build matrix: #configuration: # - Debug # - Release # Build settings, not to be confused with "before_build" and "after_build". # "project" is relative to the original build directory and not influenced by directory changes in "before_build". build: parallel: true # enable MSBuild parallel builds project: MyTestAzureCS.sln # path to Visual Studio solution or project publish_wap: true # package Web Application Projects (WAP) for Web Deploy publish_wap_xcopy: true # package Web Application Projects (WAP) for XCopy deployment publish_wap_beanstalk: true # Package Web Applications for AWS Elastic Beanstalk deployment publish_wap_octopus: true # Package Web Applications for Octopus deployment publish_azure_webjob: true # Package Azure WebJobs for Zip Push deployment publish_azure: true # package Azure Cloud Service projects and push to artifacts publish_aspnet_core: true # Package ASP.NET Core projects publish_core_console: true # Package .NET Core console projects publish_nuget: true # package projects with .nuspec files and push to artifacts publish_nuget_symbols: true # generate and publish NuGet symbol packages include_nuget_references: true # add -IncludeReferencedProjects option while packaging NuGet artifacts # MSBuild verbosity level verbosity: quiet|minimal|normal|detailed # scripts to run before build before_build: # to run your custom scripts instead of automatic MSBuild build_script: # scripts to run after build (working directory and environment changes are persisted from the previous steps) after_build: # scripts to run *after* solution is built and *before* automatic packaging occurs (web apps, NuGet packages, Azure Cloud Services) before_package: # to disable automatic builds #build: off #---------------------------------# # tests configuration # #---------------------------------# # to run tests against only selected assemblies and/or categories test: assemblies: only: - asm1.dll - asm2.dll categories: only: - UI - E2E # to run tests against all except selected assemblies and/or categories #test: # assemblies: # except: # - asm1.dll # - asm2.dll # # categories: # except: # - UI # - E2E # to run tests from different categories as separate jobs in parallel #test: # categories: # - A # A category common for all jobs # - [UI] # 1st job # - [DAL, BL] # 2nd job # scripts to run before tests (working directory and environment changes are persisted from the previous steps such as "before_build") before_test: - echo script1 - ps: Write-Host "script1" # to run your custom scripts instead of automatic tests test_script: - echo This is my custom test script # scripts to run after tests after_test: # to disable automatic tests #test: off #---------------------------------# # artifacts configuration # #---------------------------------# artifacts: # pushing a single file - path: test.zip # pushing a single file with environment variable in path and "Deployment name" specified - path: MyProject\bin\$(configuration) name: myapp # pushing entire folder as a zip archive - path: logs # pushing all *.nupkg files in build directory recursively - path: '**\*.nupkg' #---------------------------------# # deployment configuration # #---------------------------------# # providers: Local, FTP, WebDeploy, AzureCS, AzureBlob, S3, NuGet, Environment # provider names are case-sensitive! deploy: # FTP deployment provider settings - provider: FTP protocol: ftp|ftps|sftp host: ftp.myserver.com username: admin password: secure: eYKZKFkkEvFYWX6NfjZIVw== folder: application: active_mode: false beta: true # enable alternative FTP library for 'ftp' and 'ftps' modes debug: true # show complete FTP log # Amazon S3 deployment provider settings - provider: S3 access_key_id: secure: ABcd== secret_access_key: secure: ABcd== bucket: my_bucket folder: artifact: set_public: false # Azure Blob storage deployment provider settings - provider: AzureBlob storage_account_name: secure: ABcd== storage_access_key: secure: ABcd== container: my_container folder: artifact: # Web Deploy deployment provider settings - provider: WebDeploy server: http://www.deploy.com/myendpoint website: mywebsite username: user password: secure: eYKZKFkkEvFYWX6NfjZIVw== ntlm: false remove_files: false app_offline: false do_not_use_checksum: true # do not use check sum for comparing source and destination files. By default checksums are used. sync_retry_attempts: 2 # sync attempts, max sync_retry_interval: 2000 # timeout between sync attempts, milliseconds aspnet_core: true # artifact zip contains ASP.NET Core application aspnet_core_force_restart: true # poke app's web.config before deploy to force application restart skip_dirs: \\App_Data skip_files: web.config on: branch: release platform: x86 configuration: debug # Deploying to Azure Cloud Service - provider: AzureCS subscription_id: secure: fjZIVw== subscription_certificate: secure: eYKZKFkkEv...FYWX6NfjZIVw== storage_account_name: my_storage storage_access_key: secure: ABcd== service: my_service slot: Production target_profile: Cloud artifact: MyPackage.cspkg # Deploying to NuGet feed - provider: NuGet server: https://my.nuget.server/feed api_key: secure: FYWX6NfjZIVw== skip_symbols: false symbol_server: https://your.symbol.server/feed artifact: MyPackage.nupkg # Deploy to GitHub Releases - provider: GitHub artifact: /.*\.nupkg/ # upload all NuGet packages to release assets draft: false prerelease: false on: branch: master # release from master branch only APPVEYOR_REPO_TAG: true # deploy on tag push only # Deploying to a named environment - provider: Environment name: staging on: branch: staging env_var1: value1 env_var2: value2 # scripts to run before deployment before_deploy: # scripts to run after deployment after_deploy: # to run your custom scripts instead of provider deployments deploy_script: # to disable deployment #deploy: off #---------------------------------# # global handlers # #---------------------------------# # on successful build on_success: - do something # on build failure on_failure: - do something # after build failure or success on_finish: - do something #---------------------------------# # notifications # #---------------------------------# notifications: # Email - provider: Email to: - user1@email.com - user2@email.com subject: 'Build {{status}}' # optional message: "{{message}}, {{commitId}}, ..." # optional on_build_status_changed: true # HipChat - provider: HipChat auth_token: secure: RbOnSMSFKYzxzFRrxM1+XA== room: ProjectA template: "{message}, {commitId}, ..." # Slack - provider: Slack incoming_webhook: http://incoming-webhook-url # ...or using auth token - provider: Slack auth_token: secure: kBl9BlxvRMr9liHmnBs14A== channel: development template: "{message}, {commitId}, ..." # Campfire - provider: Campfire account: appveyor auth_token: secure: RifLRG8Vfyol+sNhj9u2JA== room: ProjectA template: "{message}, {commitId}, ..." # Webhook - provider: Webhook url: http://www.myhook2.com headers: User-Agent: myapp 1.0 Authorization: secure: GhD+5xhLz/tkYY6AO3fcfQ== on_build_success: false on_build_failure: true on_build_status_changed: true