🚫 Ad Blocker Detected

Please disable your AD blocker to continue using this site. Ads help us keep the content free! please press keyboard F5 to refresh page after disabled AD blocker

請關閉廣告攔截器以繼續使用本網站。廣告有助於我們保證內容免費。謝謝! 關閉後請按 F5 刷新頁面

0%

Appveyor搭配Github自動化上傳Nuget

前文

現在CICD越來越普遍,如要提高開發效率和自動化部屬跟Deploy系統有密不可分關係.

今天跟大家分享我開源專案ElectronicInvoice_TW如何利用
Github + Appveyor 來完成自動Deploy Package至Nuget上.

關於Appveyor

Appveyor是一個CI平台,可以透過Github Webhock來觸發一列動作來完成自動化部屬和建置

甚至Appveyor也有提供Nuget平台提供給開發人員.

使用GitHub帳號登入後,我們透過NEW PROJECT建立一個CI Job.

選擇我們要建立CICD專案.

最後會在Project頁看到你剛剛新建立Project.

建立Appveyor pipline

在Appveyor有兩種方式可以來產生建置專案的pipline

  • 透過UI來操作設定
  • 透過appveyor.yml設定(專案root目錄)

本文章我會介紹如何透過appveyor.yml設定

我使用我的開源專案ElectronicInvoice_TW來當作這次範例.

appveyor.yml

這裡介紹幾個yml重要的屬性

  • image:指定Build的IDE VS版本.
  • before_build:建置專案前要執行步驟
  • build_script:建置專案時要執行步驟
  • after_build:建置專案完成執行步驟
  • deploy:將你建置完artifact deploy到某個地方
  • artifacts:存放artifact位置
  • environment:設定環境變數
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
image: Visual Studio 2019
version: build '{build}'
configuration: Release
platform: Any CPU
before_build:
- cmd: nuget restore src\ElectronicInvoice.sln

environment:
my_variable:
secure: GWztiV993airUIgYQa/8Yp0jZuZ9IWVjAJDxwBRTOvN2C5pBqlArgsUY4uqrGujp

build:
publish_nuget: true

build_script:
- dotnet build src\ElectronicInvoice.sln
- dotnet test src\ElectronicInvoiceTests
after_build:
- dotnet pack src\ElectronicInvoice.Produce

deploy:
- provider: NuGet
api_key:
secure: GWztiV993airUIgYQa/8Yp0jZuZ9IWVjAJDxwBRTOvN2C5pBqlArgsUY4uqrGujp
on:
branch: master
artifact: /.*(\.|\.s)nupkg/

nuget:
project_feed: true

artifacts:
- path: '**\*.nupkg'
- path: '**\*.snupkg'

deploy Propert決定建置完成後要如何發布artifacts
對於Nuget中有幾個重要成員屬性

  • provider:NuGet(Bj4)
  • api_key:
    • secure是Deploy Nuget使用API Key(需要透過appveyor加密稍後會跟大家說如何完成)
  • branch:只有哪個Branch觸發Job才需要上傳檔案.
  • artifact:查找需要上傳檔案資訊

這個YML設定檔有下面流程

  1. nuget restore.
  2. build .net core專案
  3. 執行unit test
  4. 發布package到Nuget(只限於master)

有沒有發現除了寫code和commit code剩下都是由自動化幫我們處理(目前merge request也可以跑自動化,但不會上傳nuget)

api_key的secure

在Appveyor設定頁面有個Encrypt YAML頁面,這個頁面很重要可以幫你把重要資料加密起來,所以在Github上看到api_key的secure是我們加密過的.

最後就把我們寫好的YML檔案放到專案根目錄,Appveyor預設會在根目錄查找YML檔案並執行腳本.

這是之前跑ElectronicInvoice_TW專案紀錄歷程

小結

透過Appveyor我們可以建立一套完整CICD開發上板流程,只要Commit Code並Merge進master就可以自動化發布程式碼跟Nuget.

參考連結:https://www.appveyor.com/docs/nuget/

__此文作者__:Daniel Shih(石頭)
__此文地址__: https://isdaniel.github.io/GitHub-With-NugetDeploy/
__版權聲明__:本博客所有文章除特別聲明外,均採用 CC BY-NC-SA 3.0 TW 許可協議。轉載請註明出處!

如果本文對您幫助很大,可街口支付斗內鼓勵石頭^^