日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
我們一起GithubAction入門

本文轉(zhuǎn)載自微信公眾號「老王Plus」,作者老王Plus的老王。轉(zhuǎn)載本文請聯(lián)系老王Plus公眾號。

我們提供的服務(wù)有:網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、商城ssl等。為1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的商城網(wǎng)站制作公司

Github Action,是 Github 推出的一個(gè)持續(xù)集成服務(wù)。

這個(gè)持續(xù)集成,有很多操作,例如:抓取代碼、運(yùn)行測試、登錄遠(yuǎn)程服務(wù)器,發(fā)布到第三方服務(wù)等等。就我自己而言,用的最多的是自動(dòng)生成 Nuget 包并自動(dòng)發(fā)布到 Nuget。這樣,我可以只關(guān)心代碼本身,代碼完成后,Push 到倉庫,后面就由 Action 去自動(dòng)完成了。

這篇文章,我會從零開始,介紹一下 Action 的創(chuàng)建和使用。

一、在 Dotnet 工程中加入一個(gè) Github Action

我們在 Github 上創(chuàng)建一個(gè)簡單的 Dotnet 應(yīng)用??匆幌履夸浗Y(jié)構(gòu):

 
 
 
  1. % tree -a . 
  2. ├── .gitignore 
  3. ├── GithubActionSample.sln 
  4. ├── README.md 
  5. ├── src 
  6. │   ├── GithubActionSample.csproj 
  7. │   └── Program.cs 
  8. └── tests 

初始基本就是這么個(gè)樣子。通常我會加入幾個(gè)文件:README.md,用來寫個(gè)說明;.gitignore,這個(gè)是提交時(shí),定義跳過某些文件的定義,比方 bin、obj 下面的文件,是不需要提交上去的;tests 目錄,里面是測試代碼。當(dāng)然,這兒我就省了。

Github Action 需要放在一個(gè)固定位置 - 在 Git 倉庫的根目錄中。

我們創(chuàng)建一個(gè) .github 的目錄,并在里面創(chuàng)建一個(gè) workflows 的子目錄。這就是我們要?jiǎng)?chuàng)建 Action 的目錄了。注意,這個(gè)目錄名稱和結(jié)構(gòu)不能改變。Github 會在這個(gè)位置查找工作流配置。

下面,我們在這個(gè)位置創(chuàng)建一個(gè) Action 的定義。Action 要求是 YAML 文件。關(guān)于這個(gè)文件的格式,后面會講到。

這個(gè)目錄下,可以創(chuàng)建多個(gè) YAML 文件,對應(yīng)多個(gè)工作流的配置,每個(gè)工作流配置,對應(yīng)不同的自動(dòng)化需求。

我們先創(chuàng)建一個(gè) Action,用來自動(dòng)編譯代碼,文件名叫 Build.yml。完成后,看一下目錄結(jié)構(gòu):

 
 
 
  1. % tree -a . 
  2. ├── .github 
  3. │   └── workflows 
  4. │       └── Build.yml 
  5. ├── .gitignore 
  6. ├── GithubActionSample.sln 
  7. ├── README.md 
  8. ├── src 
  9. │   ├── GithubActionSample.csproj 
  10. │   └── Program.cs 
  11. └── tests 

這就是一個(gè) Action 了。

下面,我們來一步步完成這個(gè) Action 的配置。

二、完成 Action 配置

完成 Action 配置,其實(shí)就是完成上面這個(gè) Build.yml 文件的內(nèi)容。

1. 指定 Action 名稱

先說明一下,按照 Github 的說明,這個(gè)名稱不是必須的。不過通常來說,我會習(xí)慣加個(gè)名稱。根據(jù)文件名判斷作用,不是個(gè)好習(xí)慣。

格式很簡單:

 
 
 
  1. name: Sample build 

2. 配置觸發(fā)器

觸發(fā)器,是用來定義這個(gè) Action 在什么情況下被運(yùn)行。

通常來說,會有幾種選擇:

  • 單個(gè)事件,比方提交代碼 Push 的時(shí)候,寫法是:
 
 
 
  1. on: push 
  • 多個(gè)事件,比方 Push 和 Pull Request 的時(shí)候,寫法是:
 
 
 
  1. on: [push, pull_request] 

有時(shí)候,我們還需要增加更多的條件,比方 Push 和 Pull Request 到主分支的時(shí)候:

 
 
 
  1. on: 
  2.     push: 
  3.         branches: 
  4.             - main 
  5.     pull_request: 
  6.         branches: 
  7.             - main 

還有一個(gè)非常有用的觸發(fā)器,就是定時(shí)器。比方我們要在特定的時(shí)間,或特定的周期下運(yùn)行這個(gè) Action,就可以用定時(shí)器。

定時(shí)器的寫法是:

 
 
 
  1. on: 
  2.   schedule: 
  3.     - cron:  '5 * * * *' 

這個(gè)定時(shí)器,采用的是 Linux 下 Cron 的定時(shí)器寫法。具體的寫法和含義,可以去查一下 Cron 的規(guī)則。

除此之外,還有一些更高級的用法,例如根據(jù)一個(gè) Action 的結(jié)果,來觸發(fā)另一個(gè) Action 的執(zhí)行。類似于這樣的,可以去 Github 的文檔中詳細(xì)了解,這里是傳送門。上面介紹的三種方式,在大多數(shù)情況下夠用了。

在我們今天的例子中,我們希望在提交后觸發(fā)編譯。所以,我們采用第一種:

 
 
 
  1. on: 
  2.     push: 
  3.         branches: 
  4.             - main 

觸發(fā)器定義完了,下面該定義做什么了。在 Action 中,稱為任務(wù) Jobs。

3. 定義任務(wù) Jobs

在規(guī)則中,一個(gè)觸發(fā)器,可能對應(yīng)多個(gè)任務(wù),每個(gè)任務(wù)都需要有一個(gè)ID,和一個(gè)名稱。

 
 
 
  1. jobs: 
  2.   first_job: 
  3.     name: First job 
  4.   second_job: 
  5.     name: Second job 

上面的例子,first_job 是ID,要求是一個(gè)詞,可以使用下劃線。而下面 First job 是名稱。跟 Action 的名稱一樣,可以省略不寫。

對于一個(gè)任務(wù),下面又需要配置運(yùn)行環(huán)境和步驟。

運(yùn)行環(huán)境,指得是 Action 需要運(yùn)行的外部操作系統(tǒng),說白了,是 Github 給提供的虛擬機(jī)。當(dāng)然,我們自己建立 VM 來運(yùn)行也是可以的,不過通常就使用 Github 托管的VM了。有三種選擇:Windows、Ubuntu Linux、macOS。

運(yùn)行環(huán)境,用 runs-on 來標(biāo)出:

 
 
 
  1. jobs: 
  2.   first_job: 
  3.     name: First job 
  4.         runs-on: windows 

步驟,是定義做這件事需要幾個(gè)步驟。每個(gè)步驟需要單獨(dú)列出。Action 執(zhí)行時(shí),會按這個(gè)步驟一行一行執(zhí)行。

直接看例子:

 
 
 
  1. steps: 
  2. - uses: actions/checkout@v2 
  3.  
  4. - name: Setup .NET SDK 
  5.     uses: actions/setup-dotnet@v1 
  6.     with: 
  7.         dotnet-version: 5.0.x 
  8.  
  9. - name: Restore 
  10.     run: dotnet restore 
  11.  
  12. - name: Build 
  13.     run: dotnet build --configuration Release --no-restore 

這是一個(gè)簡單的步驟例子。

第一步,用了 actions/checkout@v2,這是 GitHub Action 的公共操作,用來簽出代碼。

第二步,創(chuàng)建編譯環(huán)境。在 runs-on 給出的 VM 是空的,需要我們自己建立環(huán)境。不過不需要像重新安裝一個(gè)環(huán)境那樣做。Github 給出了固定的環(huán)境創(chuàng)建方法。在這里,我們使用了 actions/setup-dotnet@v1 在環(huán)境里配置 Dotnet SDK,并定義了 SDK 的版本是 5.0 。

后面兩個(gè)步驟,需要在環(huán)境中運(yùn)行命令,所以使用了 run 關(guān)鍵字。這兩個(gè)步驟,其實(shí)就是我們在命令行下生成并編譯代碼的兩個(gè)命令。

最后,看一下完整的 Build.yml:

 
 
 
  1. name: Sample Build 
  2.  
  3. on: 
  4.     push: 
  5.         branches: 
  6.             - main 
  7. jobs: 
  8.     build: 
  9.  
  10.     runs-on: ubuntu-latest 
  11.  
  12.     steps: 
  13.         - uses: actions/checkout@v2 
  14.  
  15.         - name: Setup .NET SDK 
  16.         uses: actions/setup-dotnet@v1 
  17.         with: 
  18.             dotnet-version: 5.0.x 
  19.  
  20.         - name: Restore 
  21.             run: dotnet restore 
  22.  
  23.         - name: Build 
  24.             run: dotnet build --configuration Release --no-restore 

三、運(yùn)行 Action

配置完成,下面就是運(yùn)行了。

運(yùn)行是在 Github 上面,當(dāng)然先要提交代碼了。提交到 Github,Action 就會按照我們設(shè)定的方式運(yùn)行了。

本文的代碼在:https://github.com/humornif/GithubActionSample


文章名稱:我們一起GithubAction入門
網(wǎng)頁鏈接:http://www.dlmjj.cn/article/cdodheh.html