国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

我們一起Github Action 入門

開發 架構
Github Action,是 Github 推出的一個持續集成服務。這個持續集成,有很多操作,例如:抓取代碼、運行測試、登錄遠程服務器,發布到第三方服務等等。

[[413672]]

本文轉載自微信公眾號「老王Plus」,作者老王Plus的老王。轉載本文請聯系老王Plus公眾號。

Github Action,是 Github 推出的一個持續集成服務。

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

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

一、在 Dotnet 工程中加入一個 Github Action

我們在 Github 上創建一個簡單的 Dotnet 應用。看一下目錄結構:

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

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

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

我們創建一個 .github 的目錄,并在里面創建一個 workflows 的子目錄。這就是我們要創建 Action 的目錄了。注意,這個目錄名稱和結構不能改變。Github 會在這個位置查找工作流配置。

下面,我們在這個位置創建一個 Action 的定義。Action 要求是 YAML 文件。關于這個文件的格式,后面會講到。

這個目錄下,可以創建多個 YAML 文件,對應多個工作流的配置,每個工作流配置,對應不同的自動化需求。

我們先創建一個 Action,用來自動編譯代碼,文件名叫 Build.yml。完成后,看一下目錄結構:

  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 

這就是一個 Action 了。

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

二、完成 Action 配置

完成 Action 配置,其實就是完成上面這個 Build.yml 文件的內容。

1. 指定 Action 名稱

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

格式很簡單:

  1. name: Sample build 

2. 配置觸發器

觸發器,是用來定義這個 Action 在什么情況下被運行。

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

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

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

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

還有一個非常有用的觸發器,就是定時器。比方我們要在特定的時間,或特定的周期下運行這個 Action,就可以用定時器。

定時器的寫法是:

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

這個定時器,采用的是 Linux 下 Cron 的定時器寫法。具體的寫法和含義,可以去查一下 Cron 的規則。

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

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

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

觸發器定義完了,下面該定義做什么了。在 Action 中,稱為任務 Jobs。

3. 定義任務 Jobs

在規則中,一個觸發器,可能對應多個任務,每個任務都需要有一個ID,和一個名稱。

  1. jobs: 
  2.   first_job: 
  3.     nameFirst job 
  4.   second_job: 
  5.     nameSecond job 

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

對于一個任務,下面又需要配置運行環境和步驟。

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

運行環境,用 runs-on 來標出:

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

步驟,是定義做這件事需要幾個步驟。每個步驟需要單獨列出。Action 執行時,會按這個步驟一行一行執行。

直接看例子:

  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 

這是一個簡單的步驟例子。

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

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

后面兩個步驟,需要在環境中運行命令,所以使用了 run 關鍵字。這兩個步驟,其實就是我們在命令行下生成并編譯代碼的兩個命令。

最后,看一下完整的 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 

三、運行 Action

配置完成,下面就是運行了。

運行是在 Github 上面,當然先要提交代碼了。提交到 Github,Action 就會按照我們設定的方式運行了。

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

 

責任編輯:武曉燕 來源: 老王Plus
相關推薦

2021-11-09 23:54:19

開發SMI Linkerd

2024-05-29 12:53:30

2023-08-14 07:10:38

Docker部署項目

2021-08-27 07:06:10

IOJava抽象

2024-02-20 21:34:16

循環GolangGo

2022-01-17 06:59:40

Grep指令linux

2021-12-29 08:27:05

ByteBuffer磁盤服務器

2022-03-08 17:52:58

TCP格式IP

2022-03-31 18:59:43

數據庫InnoDBMySQL

2023-08-04 08:20:56

DockerfileDocker工具

2023-08-10 08:28:46

網絡編程通信

2021-08-27 07:06:09

DubboDocker技術

2021-01-12 05:08:49

DHCP協議模型

2022-10-18 07:33:57

Maven構建工具

2022-05-24 08:21:16

數據安全API

2023-06-30 08:18:51

敏捷開發模式

2023-09-10 21:42:31

2022-02-14 10:16:22

Axios接口HTTP

2023-06-28 07:49:02

2022-10-28 07:27:17

Netty異步Future
點贊
收藏

51CTO技術棧公眾號

黄色av免费在线观看| 日本午夜免费福利视频| 小处雏高清一区二区三区| 俺去啦;欧美日韩| av成人手机在线| 亚洲三级小视频| 欧美精品无码一区二区三区| 精品亚洲国产成人av制服丝袜 | 中文字幕有码在线视频| 色婷婷激情久久| 一二三中文字幕在线| 一区二区久久久久久| 成人免费淫片免费观看| 欧美激情综合五月色丁香小说| 免费看黄在线看| 国产精品综合视频| 青青视频免费在线| 成人av在线播放网址| 日韩精品xxxx| 久久久高清一区二区三区| 国产成人无码一二三区视频| 久久先锋影音av| 欧美日韩亚洲一| 91污片在线观看| 精品视频在线观看一区| 99re热这里只有精品免费视频| 国产中文字幕乱人伦在线观看| 成人小视频免费观看| 9久久9毛片又大又硬又粗| 久久亚洲影视婷婷| 亚洲欧美视频二区| 中文字幕亚洲电影| 色黄视频在线| 欧美日本一区二区| 先锋影音在线资源站91| 亚洲欧美精品一区二区| 国产激情精品一区二区三区| 性色av香蕉一区二区| 成人三级视频| 精品国产91亚洲一区二区三区www| 麻豆精品网站| 青草青青在线视频| 亚洲免费av观看| yw视频在线观看| 精品久久久久久久久久久久包黑料| 男人av在线播放| 欧美人在线视频| 国产精品99久久久久久动医院| 成人情视频高清免费观看电影| 日韩国产在线观看一区| 日韩欧美视频网站| 亚洲一区中文日韩| 八戒八戒神马在线电影| 中文字幕亚洲一区二区三区五十路| 日韩精品一级| 91免费高清视频| 韩国午夜理伦三级不卡影院| 香蕉视频网站入口| 色综合久久99| 婷婷综合六月| 国产极品jizzhd欧美| 日本中文在线一区| 国产精品v日韩精品v在线观看| 在线精品视频一区二区三四| 色豆豆成人网| 91九色在线视频| 成人av片在线观看| 日韩欧美在线番号| 亚洲色图在线观看| 热久久天天拍国产| 日本福利视频网站| 精品国产乱码久久久久酒店 | 欧美人妖巨大在线| 视频成人永久免费视频| 高清不卡日本v二区在线| 成年人国产精品| 搞黄视频免费在线观看| 久久成人在线视频| 国产精品视区| 爱草在线视频| 精品视频www| 欧美高清视频手机在在线| 黄色录像特级片| 福利精品视频在线| 精品国产乱码久久久久久樱花| 国产亚洲精品美女久久久m| 91麻豆国产福利在线观看| 天堂中文8资源在线8| 97在线视频国产| 国产一区二区精品久久99| 邻家有女韩剧在线观看国语| 欧美激情免费在线| 久久精品国产99国产| 美国一级片在线免费观看视频| 欧美极品少妇与黑人| 久久国产麻豆精品| 北岛玲日韩精品一区二区三区| 欧美亚洲成人精品| 99免费精品视频| 国模精品视频| 91成人在线看| 中文字幕一区二区三区四区| 欧美电影免费观看网站| 久久国产精品一区二区三区| 亚洲综合清纯丝袜自拍| 国产精品麻豆| 992tv成人免费观看| 欧美日本高清视频在线观看| 日韩欧美精品一区| 日本最黄视频| 538国产精品一区二区免费视频| 成人污污视频在线观看| 成人福利电影| 欧洲久久久久久| 欧美精品丝袜中出| 久久国产成人精品| 天天干夜夜干| 日本欧美精品在线| 亚洲三级电影网站| 欧美午夜18电影| 亚洲欧美自拍另类日韩| 欧美激情乱人伦| 国产人伦精品一区二区| 欧美成人一级| 亚洲少妇第一页| 久久久久久久久久久免费精品| 91麻豆免费看片| 国产一区二区| 美女喷白浆视频| 91高清免费视频| 最新国产の精品合集bt伙计| 国产欧美三级电影| 97视频在线| 国产精品丝袜高跟| 色婷婷狠狠综合| 亚洲一区亚洲| www成人免费观看| 秋霞无码一区二区| 欧美第一页在线| 亚洲欧美成人一区二区三区| 欧美日韩一二三四| 你懂的视频在线播放| 国产精品一区二区在线观看 | 天堂va蜜桃一区二区三区漫画版| a级在线观看| 一级做a爰片久久| 一本色道久久综合狠狠躁篇的优点| 国产成人在线视频播放| **国产精品| 8848hh四虎| 91成人免费观看| 精品毛片乱码1区2区3区| 精品亚洲成a人| 麻豆视频久久| eeuss在线观看| 国产日韩亚洲精品| 亚洲精品电影在线| 国产视频一区在线播放| 成人在线电影在线观看视频| 欧美成人hd| www.亚洲成人网| 2019中文字幕在线观看| 色悠悠久久综合| 老司机精品视频一区二区三区| **国产精品| 天堂av网在线| 国产精品亚洲天堂| 久久欧美在线电影| 色偷偷成人一区二区三区91 | 成人国产综合| 女人高潮特级毛片| 精品国产一区二区三区四区精华| 亚洲精品资源在线| 一区在线观看免费| 日韩一级大片| 久久麻豆视频| 一级片在线免费看| 中文字幕日韩精品无码内射| 国产精品久久久久久搜索| 精品免费国产一区二区三区四区| 久久久国产精品午夜一区ai换脸| 欧美三级小说| www999久久| 成人在线二区| 天堂中文视频在线| 日本在线观看一区| 日韩av电影中文字幕| 国产视频精品免费播放| 亚洲第一成人在线| 国产成人aaa| 欧美三级不卡| 深夜激情久久| 在线看一级片| 美女露隐私免费网站| 亚洲第一综合网站| 亚洲一区二区中文| 久久成人免费视频| 日韩久久免费av| 欧美日韩午夜激情| 国产精品视频一二|