Appveyor 也是一款线上 CICD 工具。

Support Contexts:

  • Windows (Default)
  • Ubuntu
  • MacOS

Support Languages:

  • Node.js
  • io.js
  • Xamarin
  • Python
  • Ruby
  • C++
  • Go

Ruby

 1version: 1.0.{build}-{branch}
 2
 3skip_commits:
 4  files:
 5    - "azure-pipelines.yml"
 6    - "README.md"
 7
 8install:
 9  - set PATH=C:\Ruby26-x64\bin;%PATH%
10  - bundle install
11
12build: off
13
14before_test:
15  - ruby -v
16  - gem -v
17  - bundle -v
18
19test_script:
20  - rails db:migrate RAILS_ENV=test

Appveyor.yml Reference

  1# Notes:
  2#   - Minimal appveyor.yml file is an empty file. All sections are optional.
  3#   - Indent each level of configuration with 2 spaces. Do not use tabs!
  4#   - All section names are case-sensitive.
  5#   - Section names should be unique on each level.
  6
  7#---------------------------------#
  8#      general configuration      #
  9#---------------------------------#
 10
 11# version format
 12version: 1.0.{build}
 13
 14# you can use {branch} name in version format too
 15# version: 1.0.{build}-{branch}
 16
 17# branches to build
 18branches:
 19  # whitelist
 20  only:
 21    - master
 22    - production
 23
 24  # blacklist
 25  except:
 26    - gh-pages
 27
 28# Do not build on tags (GitHub, Bitbucket, GitLab, Gitea)
 29skip_tags: true
 30
 31# Start builds on tags only (GitHub, BitBucket, GitLab, Gitea)
 32skip_non_tags: true
 33
 34# Skipping commits with particular message or from specific user
 35skip_commits:
 36  message: /Created.*\.(png|jpg|jpeg|bmp|gif)/ # Regex for matching commit message
 37  author: John # Commit author's username, name, email or regexp maching one of these.
 38
 39# Including commits with particular message or from specific user
 40only_commits:
 41  message: /build/ # Start a new build if message contains 'build'
 42  author: jack@company.com # Start a new build for commit of user with email jack@company.com
 43
 44# Skipping commits affecting specific files (GitHub only). More details here: /docs/appveyor-yml
 45#skip_commits:
 46#  files:
 47#    - docs/*
 48#    - '**/*.html'
 49
 50# Including commits affecting specific files (GitHub only). More details here: /docs/appveyor-yml
 51#only_commits:
 52#  files:
 53#    - Project-A/
 54#    - Project-B/
 55
 56# Do not build feature branch with open Pull Requests
 57skip_branch_with_pr: true
 58
 59# Maximum number of concurrent jobs for the project
 60max_jobs: 1
 61
 62#---------------------------------#
 63#    environment configuration    #
 64#---------------------------------#
 65
 66# Build worker image (VM template)
 67image: Visual Studio 2015
 68
 69# scripts that are called at very beginning, before repo cloning
 70init:
 71  - git config --global core.autocrlf input
 72
 73# clone directory
 74clone_folder: c:\projects\myproject
 75
 76# fetch repository as zip archive
 77shallow_clone: true # default is "false"
 78
 79# set clone depth
 80clone_depth: 5 # clone entire repository history if not defined
 81
 82# setting up etc\hosts file
 83hosts:
 84  queue-server: 127.0.0.1
 85  db.server.com: 127.0.0.2
 86
 87# environment variables
 88environment:
 89  my_var1: value1
 90  my_var2: value2
 91  # this is how to set encrypted variable. Go to "Settings" -> "Encrypt YAML" page in account menu to encrypt data.
 92  my_secure_var1:
 93    secure: FW3tJ3fMncxvs58/ifSP7w==
 94
 95# environment:
 96#  global:
 97#    connection_string: server=12;password=13;
 98#    service_url: https://127.0.0.1:8090
 99#
100#  matrix:
101#  - db: mysql
102#    provider: mysql
103#
104#  - db: mssql
105#    provider: mssql
106#    password:
107#      secure: $#(JFDA)jQ@#$
108
109# this is how to allow failing jobs in the matrix
110matrix:
111  fast_finish: true # set this flag to immediately finish build once one of the jobs fails.
112  allow_failures:
113    - platform: x86
114      configuration: Debug
115    - platform: x64
116      configuration: Release
117
118  # exclude configuration from the matrix. Works similarly to 'allow_failures' but build not even being started for excluded combination.
119  exclude:
120    - platform: x86
121      configuration: Debug
122
123# build cache to preserve files/folders between builds
124cache:
125  - packages -> **\packages.config # preserve "packages" directory in the root of build folder but will reset it if packages.config is modified
126  - projectA\libs
127  - node_modules # local npm modules
128  - '%LocalAppData%\NuGet\Cache' # NuGet < v3
129  - '%LocalAppData%\NuGet\v3-cache' # NuGet v3
130
131# enable service required for build/tests
132services:
133  - mssql2014 # start SQL Server 2014 Express
134  - mssql2014rs # start SQL Server 2014 Express and Reporting Services
135  - mssql2012sp1 # start SQL Server 2012 SP1 Express
136  - mssql2012sp1rs # start SQL Server 2012 SP1 Express and Reporting Services
137  - mssql2008r2sp2 # start SQL Server 2008 R2 SP2 Express
138  - mssql2008r2sp2rs # start SQL Server 2008 R2 SP2 Express and Reporting Services
139  - mysql # start MySQL 5.6 service
140  - postgresql # start PostgreSQL 9.5 service
141  - iis # start IIS
142  - msmq # start Queuing services
143  - mongodb # start MongoDB
144
145# scripts that run after cloning repository
146install:
147  # by default, all script lines are interpreted as batch
148  - echo This is batch
149  # to run script as a PowerShell command prepend it with ps:
150  - ps: Write-Host 'This is PowerShell'
151  # batch commands start from cmd:
152  - cmd: echo This is batch again
153  - cmd: set MY_VAR=12345
154
155# enable patching of AssemblyInfo.* files
156assembly_info:
157  patch: true
158  file: AssemblyInfo.*
159  assembly_version: "2.2.{build}"
160  assembly_file_version: "{version}"
161  assembly_informational_version: "{version}"
162
163# Automatically register private account and/or project AppVeyor NuGet feeds.
164nuget:
165  account_feed: true
166  project_feed: true
167  disable_publish_on_pr: true # disable publishing of .nupkg artifacts to account/project feeds for pull request builds
168  publish_wap_octopus: true # disable publishing of Octopus Deploy .nupkg artifacts to account/project feeds
169
170#---------------------------------#
171#       build configuration       #
172#---------------------------------#
173
174# build platform, i.e. x86, x64, Any CPU. This setting is optional.
175platform: Any CPU
176
177# to add several platforms to build matrix:
178#platform:
179#  - x86
180#  - Any CPU
181
182# build Configuration, i.e. Debug, Release, etc.
183configuration: Release
184
185# to add several configurations to build matrix:
186#configuration:
187#  - Debug
188#  - Release
189
190# Build settings, not to be confused with "before_build" and "after_build".
191# "project" is relative to the original build directory and not influenced by directory changes in "before_build".
192build:
193  parallel: true # enable MSBuild parallel builds
194  project: MyTestAzureCS.sln # path to Visual Studio solution or project
195  publish_wap: true # package Web Application Projects (WAP) for Web Deploy
196  publish_wap_xcopy: true # package Web Application Projects (WAP) for XCopy deployment
197  publish_wap_beanstalk: true # Package Web Applications for AWS Elastic Beanstalk deployment
198  publish_wap_octopus: true # Package Web Applications for Octopus deployment
199  publish_azure_webjob: true # Package Azure WebJobs for Zip Push deployment
200  publish_azure: true # package Azure Cloud Service projects and push to artifacts
201  publish_aspnet_core: true # Package ASP.NET Core projects
202  publish_core_console: true # Package .NET Core console projects
203  publish_nuget: true # package projects with .nuspec files and push to artifacts
204  publish_nuget_symbols: true # generate and publish NuGet symbol packages
205  include_nuget_references: true # add -IncludeReferencedProjects option while packaging NuGet artifacts
206
207  # MSBuild verbosity level
208  verbosity: quiet|minimal|normal|detailed
209
210# scripts to run before build
211before_build:
212
213# to run your custom scripts instead of automatic MSBuild
214build_script:
215
216# scripts to run after build (working directory and environment changes are persisted from the previous steps)
217after_build:
218
219# scripts to run *after* solution is built and *before* automatic packaging occurs (web apps, NuGet packages, Azure Cloud Services)
220before_package:
221
222# to disable automatic builds
223#build: off
224
225#---------------------------------#
226#       tests configuration       #
227#---------------------------------#
228
229# to run tests against only selected assemblies and/or categories
230test:
231  assemblies:
232    only:
233      - asm1.dll
234      - asm2.dll
235
236  categories:
237    only:
238      - UI
239      - E2E
240
241# to run tests against all except selected assemblies and/or categories
242#test:
243#  assemblies:
244#    except:
245#      - asm1.dll
246#      - asm2.dll
247#
248#  categories:
249#    except:
250#      - UI
251#      - E2E
252
253# to run tests from different categories as separate jobs in parallel
254#test:
255#  categories:
256#    - A            # A category common for all jobs
257#    - [UI]         # 1st job
258#    - [DAL, BL]    # 2nd job
259
260# scripts to run before tests (working directory and environment changes are persisted from the previous steps such as "before_build")
261before_test:
262  - echo script1
263  - ps: Write-Host "script1"
264
265# to run your custom scripts instead of automatic tests
266test_script:
267  - echo This is my custom test script
268
269# scripts to run after tests
270after_test:
271
272# to disable automatic tests
273#test: off
274
275#---------------------------------#
276#      artifacts configuration    #
277#---------------------------------#
278
279artifacts:
280  # pushing a single file
281  - path: test.zip
282
283  # pushing a single file with environment variable in path and "Deployment name" specified
284  - path: MyProject\bin\$(configuration)
285    name: myapp
286
287  # pushing entire folder as a zip archive
288  - path: logs
289
290  # pushing all *.nupkg files in build directory recursively
291  - path: '**\*.nupkg'
292
293#---------------------------------#
294#     deployment configuration    #
295#---------------------------------#
296
297# providers: Local, FTP, WebDeploy, AzureCS, AzureBlob, S3, NuGet, Environment
298# provider names are case-sensitive!
299deploy:
300  # FTP deployment provider settings
301  - provider: FTP
302    protocol: ftp|ftps|sftp
303    host: ftp.myserver.com
304    username: admin
305    password:
306      secure: eYKZKFkkEvFYWX6NfjZIVw==
307    folder:
308    application:
309    active_mode: false
310    beta: true # enable alternative FTP library for 'ftp' and 'ftps' modes
311    debug: true # show complete FTP log
312
313    # Amazon S3 deployment provider settings
314  - provider: S3
315    access_key_id:
316      secure: ABcd==
317    secret_access_key:
318      secure: ABcd==
319    bucket: my_bucket
320    folder:
321    artifact:
322    set_public: false
323
324    # Azure Blob storage deployment provider settings
325  - provider: AzureBlob
326    storage_account_name:
327      secure: ABcd==
328    storage_access_key:
329      secure: ABcd==
330    container: my_container
331    folder:
332    artifact:
333
334    # Web Deploy deployment provider settings
335  - provider: WebDeploy
336    server: http://www.deploy.com/myendpoint
337    website: mywebsite
338    username: user
339    password:
340      secure: eYKZKFkkEvFYWX6NfjZIVw==
341    ntlm: false
342    remove_files: false
343    app_offline: false
344    do_not_use_checksum: true # do not use check sum for comparing source and destination files. By default checksums are used.
345    sync_retry_attempts: 2 # sync attempts, max
346    sync_retry_interval: 2000 # timeout between sync attempts, milliseconds
347    aspnet_core: true # artifact zip contains ASP.NET Core application
348    aspnet_core_force_restart: true # poke app's web.config before deploy to force application restart
349    skip_dirs: \\App_Data
350    skip_files: web.config
351    on:
352      branch: release
353      platform: x86
354      configuration: debug
355
356    # Deploying to Azure Cloud Service
357  - provider: AzureCS
358    subscription_id:
359      secure: fjZIVw==
360    subscription_certificate:
361      secure: eYKZKFkkEv...FYWX6NfjZIVw==
362    storage_account_name: my_storage
363    storage_access_key:
364      secure: ABcd==
365    service: my_service
366    slot: Production
367    target_profile: Cloud
368    artifact: MyPackage.cspkg
369
370    # Deploying to NuGet feed
371  - provider: NuGet
372    server: https://my.nuget.server/feed
373    api_key:
374      secure: FYWX6NfjZIVw==
375    skip_symbols: false
376    symbol_server: https://your.symbol.server/feed
377    artifact: MyPackage.nupkg
378
379    # Deploy to GitHub Releases
380  - provider: GitHub
381    artifact: /.*\.nupkg/ # upload all NuGet packages to release assets
382    draft: false
383    prerelease: false
384    on:
385      branch: master # release from master branch only
386      APPVEYOR_REPO_TAG: true # deploy on tag push only
387
388    # Deploying to a named environment
389  - provider: Environment
390    name: staging
391    on:
392      branch: staging
393      env_var1: value1
394      env_var2: value2
395
396# scripts to run before deployment
397before_deploy:
398
399# scripts to run after deployment
400after_deploy:
401
402# to run your custom scripts instead of provider deployments
403deploy_script:
404
405# to disable deployment
406#deploy: off
407
408#---------------------------------#
409#        global handlers          #
410#---------------------------------#
411
412# on successful build
413on_success:
414  - do something
415
416# on build failure
417on_failure:
418  - do something
419
420# after build failure or success
421on_finish:
422  - do something
423
424#---------------------------------#
425#         notifications           #
426#---------------------------------#
427
428notifications:
429  # Email
430  - provider: Email
431    to:
432      - user1@email.com
433      - user2@email.com
434    subject: "Build {{status}}" # optional
435    message: "{{message}}, {{commitId}}, ..." # optional
436    on_build_status_changed: true
437
438  # HipChat
439  - provider: HipChat
440    auth_token:
441      secure: RbOnSMSFKYzxzFRrxM1+XA==
442    room: ProjectA
443    template: "{message}, {commitId}, ..."
444
445  # Slack
446  - provider: Slack
447    incoming_webhook: http://incoming-webhook-url
448
449  # ...or using auth token
450
451  - provider: Slack
452    auth_token:
453      secure: kBl9BlxvRMr9liHmnBs14A==
454    channel: development
455    template: "{message}, {commitId}, ..."
456
457  # Campfire
458  - provider: Campfire
459    account: appveyor
460    auth_token:
461      secure: RifLRG8Vfyol+sNhj9u2JA==
462    room: ProjectA
463    template: "{message}, {commitId}, ..."
464
465  # Webhook
466  - provider: Webhook
467    url: http://www.myhook2.com
468    headers:
469      User-Agent: myapp 1.0
470      Authorization:
471        secure: GhD+5xhLz/tkYY6AO3fcfQ==
472    on_build_success: false
473    on_build_failure: true
474    on_build_status_changed: true