精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

我們一起Github Action 入門

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

[[413672]]

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

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

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

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

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

我們在 Github 上創建一個簡單的 Dotnet 應用??匆幌履夸浗Y構:

  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
相關推薦

2024-05-29 12:53:30

2021-11-09 23:54:19

開發SMI Linkerd

2023-08-14 07:10:38

Docker部署項目

2022-03-08 17:52:58

TCP格式IP

2024-02-20 21:34:16

循環GolangGo

2021-08-27 07:06:10

IOJava抽象

2021-12-29 08:27:05

ByteBuffer磁盤服務器

2022-01-17 06:59:40

Grep指令linux

2022-03-31 18:59:43

數據庫InnoDBMySQL

2023-06-30 08:18:51

敏捷開發模式

2023-08-10 08:28:46

網絡編程通信

2021-08-27 07:06:09

DubboDocker技術

2023-08-04 08:20:56

DockerfileDocker工具

2022-05-24 08:21:16

數據安全API

2021-01-12 05:08:49

DHCP協議模型

2022-10-18 07:33:57

Maven構建工具

2023-09-10 21:42:31

2017-01-22 15:09:08

架構閉環演進

2021-05-19 10:37:16

WebFlux 前置工具
點贊
收藏

51CTO技術棧公眾號

91成人在线免费视频| 久久精品欧美| 欧美成人aaa片一区国产精品| 国产精品一区三区在线观看| 亚洲欧洲三级电影| 国产精品xxxx| 激情视频网站在线观看| 999国产精品视频| 日韩欧美国产综合| 1024av视频| av免费观看一区二区| 狠狠色伊人亚洲综合成人| 欧美激情精品在线| 国产又爽又黄无码无遮挡在线观看| 成人性生交大片免费网站| 91香蕉视频黄| 成人黄色av播放免费| 久久久久久久黄色| 精品一级毛片| 欧美成人性战久久| 欧美日韩亚洲一二三| 国产黄大片在线观看画质优化| 成人午夜精品在线| 国产精品久久久久久久久久久久久久 | 中文视频一区| 亚洲美女性视频| 国产精品久久久久久9999| 福利在线免费视频| 中文字幕一区视频| 久久精品一二三区| 国产超碰人人模人人爽人人添| 欧美亚洲三级| 欧美精品一区三区| 欧美日韩国产黄色| 欧美人与动xxxxz0oz| 91精品午夜视频| 午夜dv内射一区二区| 黄色在线看片| 亚洲日本中文字幕区| 欧美一区二区三区四区在线观看地址| 性一交一乱一乱一视频| 久久精品国产99国产精品| 欧亚精品在线观看| www深夜成人a√在线| 亚洲欧洲美洲国产香蕉| 精品久久久久久亚洲综合网| 色婷婷综合网站| 超级碰碰久久| 午夜视频在线观看一区| 国产午夜精品视频一区二区三区| av大片在线看| 99久久国产综合精品色伊| 91精品视频观看| 中文字幕二区三区| av不卡在线| 久久久久久久久中文字幕| 1024手机在线视频| 欧美/亚洲一区| 久久久999国产| 男女全黄做爰文章| 久久久综合色| 日韩在线观看你懂的| a级片在线观看| 尤物tv在线精品| 亚洲欧美中文字幕在线一区| 91丨porny丨九色| 高清久久一区| 国产欧美日韩| 91精品国产综合久久精品性色 | 97精品人妻一区二区三区蜜桃| 99精品美女视频在线观看热舞 | 日韩美女爱爱视频| 蜜桃视频在线观看免费视频网站www| 日本一区二区三区四区在线视频| 99re国产视频| 成人高潮片免费视频| 国产激情91久久精品导航| 国产日韩在线看片| 91 中文字幕| 日韩国产欧美视频| 国产精品久久精品| 美女黄页在线观看| 国产在线不卡一区| 91网免费观看| 四虎永久在线精品免费网址| 91在线视频观看| 精品免费日产一区一区三区免费| 四虎在线免费看| 欧美极品美女视频| 日本一区二区三区四区五区六区| 日本天码aⅴ片在线电影网站| 亚洲午夜精品17c| 国内外成人激情视频| 欧美aa视频| 欧美巨大另类极品videosbest | 精品一区二区视频在线观看| 成人在线视频你懂的| 亚洲精品美女网站| 日本免费www| 欧美成人69| 热99精品里视频精品| 天天干天天插天天射| 激情亚洲综合在线| 精品久久久久久一区| 国产h在线观看| 亚洲色图欧美激情| www.爱色av.com| 99re久久| 亚洲黄色www| 在线看片中文字幕| 国产精品www.| 国产精品扒开腿做爽爽爽的视频| 国产超碰人人模人人爽人人添| 91丨porny丨蝌蚪视频| 亚洲图片都市激情| 爱啪啪综合导航| 欧美日本一区二区在线观看| 李丽珍裸体午夜理伦片| 久久国产精品成人免费观看的软件| 欧美激情精品久久久| 中文字幕 亚洲视频| 国产成都精品91一区二区三| 欧美一区二区福利| bl在线肉h视频大尺度| 欧美日韩国产电影| 精品人妻一区二区三区日产乱码卜| 色狮一区二区三区四区视频| 97在线观看视频国产| 一级片视频播放| 91蝌蚪porny| 色香蕉在线观看| 亚洲永久av| 精品欧美乱码久久久久久| 一级片黄色录像| 久久国产毛片| 狠狠色综合色区| 超碰在线观看免费| 欧美日韩精品一二三区| 88久久精品无码一区二区毛片| 欧美激情日韩| 91青草视频久久| www在线播放| 欧美性20hd另类| 香蕉视频xxxx| 99久久综合| 国产精品日韩欧美综合| 欧美91精品久久久久国产性生爱| 亚洲高清在线精品| 国产xxx在线观看 | 91专区在线观看| 激情小说亚洲色图| 91地址最新发布| 日韩欧美在线观看一区二区| 欧美午夜无遮挡| 黄色三级生活片| 捆绑紧缚一区二区三区视频| 亚洲欧美日韩精品综合在线观看| 日韩毛片一区| 欧美成人激情视频| 日日夜夜精品免费| 欧美特黄级在线| 极品蜜桃臀肥臀-x88av| 久久成人av少妇免费| 91国在线高清视频| 国产乱论精品| 国产91精品网站| 在线视频1区2区| 日韩一区二区免费在线电影| 久久久久久免费观看| 99热国产精品| 深夜黄色小视频| 欧美在线影院| 久久资源av| 午夜精品一区二区在线观看 | 亚洲免费福利一区| 国产成人在线精品| 久草免费在线观看| 精品成人佐山爱一区二区| 国产成人免费看| 国产女同互慰高潮91漫画| 日本不卡一区在线| 黄色亚洲在线| 午夜免费电影一区在线观看| 国产日本亚洲| 日本成人精品在线| 黄色成人影院| 亚洲欧美福利视频| 国产绿帽刺激高潮对白| 亚洲成a人v欧美综合天堂下载| av电影网站在线观看| 国产一区高清在线| 男人亚洲天堂网| 真实国产乱子伦精品一区二区三区| 久久av一区二区| www.成人在线.com| 欧美一级在线亚洲天堂| 麻豆视频在线免费观看| 亚洲精品一区二区久| 国产熟女一区二区丰满| 色丁香久综合在线久综合在线观看 | 欧美一区自拍| 成人在线播放av| 欧美一区久久久| 久久久久久久久久久91| 日本高清视频在线观看| 日韩极品精品视频免费观看| 精品人妻一区二区三区换脸明星 | 香蕉久久精品| 99视频国产精品免费观看| 国产极品久久久久久久久波多结野| 久久久免费精品视频| 99re在线视频| 亚洲精品在线不卡| 丰满少妇一级片| 9191成人精品久久| 中文字幕丰满人伦在线| 色婷婷久久久综合中文字幕 | 99成人免费视频| 波多野结衣 作品| 久久伦理在线| 四虎影视永久免费在线观看一区二区三区| 成人动态视频| 999国内精品视频在线| 黄色日韩网站| 国产精品视频yy9099| 国产夫妻在线播放| 久久久影视精品| 欧美6一10sex性hd| 久久91亚洲精品中文字幕奶水| 思思99re6国产在线播放| 伊人久久大香线蕉av一区二区| 亚洲欧美日韩动漫| 亚洲精品福利在线观看| 日本黄视频在线观看| 日韩一级片网站| 国产内射老熟女aaaa∵| 欧美一级在线视频| 国产黄频在线观看| 日韩视频免费观看高清完整版在线观看 | 日韩久久免费视频| 亚洲av成人精品毛片| 亚洲激情中文字幕| 亚洲 精品 综合 精品 自拍| 日韩精品久久久久| 精品视频二区| 亚洲最大在线视频| 四虎久久免费| 欧美乱大交xxxxx另类电影| 人人超在线公开视频| 国模私拍一区二区三区| 毛片电影在线| 国产精品h片在线播放| 欧美暴力调教| 国产在线a不卡| 一区二区亚洲视频| 精品国产免费一区二区三区| 四虎影视精品| 亚洲欧美久久久久一区二区三区| 日韩久久久久| 四虎精品欧美一区二区免费| 亚洲色图插插| 久久av综合网| 久久精品男女| 亚洲美女爱爱视频| 福利一区福利二区| 无码一区二区精品| 国产女主播一区| 污软件在线观看| 亚洲一区二区三区爽爽爽爽爽| 亚洲精品男人天堂| 欧美精选一区二区| 成人精品在线播放| 亚洲欧美在线播放| 国产原创在线观看| 2023亚洲男人天堂| 日韩国产一二三区| 国产精品美女诱惑| 红桃视频在线观看一区二区| 一级做a爰片久久| 精品1区2区3区4区| 亚洲少妇第一页| 国产成人综合在线| 国产成人av一区二区三区不卡| 国产精品家庭影院| 免费在线观看黄网站| 欧美午夜精品免费| 狠狠人妻久久久久久综合麻豆| 在线a欧美视频| 大桥未久在线播放| 国产欧美日韩中文字幕| 国产精品一区二区中文字幕| 亚洲欧美日产图| 99热免费精品在线观看| 红桃视频 国产| 99久久er热在这里只有精品15 | 色成年激情久久综合| 国内精品久久久久久久久久| 亚洲日本成人网| 不卡av免费观看| 成人免费在线视频网址| 国产成人精品999在线观看| 国产精品igao激情视频| 蜜桃精品视频在线| 波多野结衣先锋影音| 一区二区三区波多野结衣在线观看| 天天干,天天干| 亚洲精品国产成人| 国内老司机av在线| 91亚洲永久免费精品| 国内精品久久久久久久影视简单 | 老司机成人影院| 俄罗斯精品一区二区| 久久综合成人| 免费日韩中文字幕| 91天堂素人约啪| 一级aaa毛片| 日韩视频国产视频| 黄a在线观看| 国产精品一区二区电影| 欧美人妖在线| 精品久久一二三| 播五月开心婷婷综合| 欧美成人一二三区| 91精品国产91久久久久久一区二区 | 无码国产精品一区二区色情男同| 日韩中文字幕av| 精品亚洲美女网站| 麻豆av福利av久久av| 亚洲黄页一区| 久久久久久久人妻无码中文字幕爆| 亚洲男帅同性gay1069| 国产精品久久久国产盗摄| 在线日韩欧美视频| 免费在线成人激情电影| 日韩影视精品| 麻豆国产欧美一区二区三区| 亚洲精品成人av久久| 欧美亚洲自拍偷拍| 97超碰人人在线| 国产精品一区二区久久久| 欧美视频网址| 亚洲娇小娇小娇小| 中文字幕一区二区三区在线观看 | 亚洲欧美成人在线| 日韩不卡免费高清视频| 日本三级中国三级99人妇网站| 久久精品毛片| 超碰人人干人人| 91精品国产综合久久香蕉麻豆| 免费黄网站在线播放| 99国产精品久久久久老师| 欧美久久九九| 少妇一级淫片免费放播放| 精品久久久香蕉免费精品视频| 三级视频网站在线| 国产精品成久久久久三级| 国产精品国产一区| 日本中文字幕在线不卡| 亚洲国产aⅴ成人精品无吗| 日韩av地址| 国产一区二中文字幕在线看 | 成人免费在线视频| www.99视频| 欧美一级大片在线免费观看| 精品高清久久| 手机在线免费毛片| 午夜亚洲福利老司机| 成人免费视频| 99久久精品久久久久久ai换脸| 99精品福利视频| 国产破处视频在线观看| 欧美一区二区三区视频免费| 波多野结衣久久| 视频一区视频二区视频三区高| 黄网站免费久久| 自拍偷拍欧美亚洲| 日韩中文综合网| 国产精品45p| 国产精品一区二区小说| 亚洲精品午夜久久久| 天堂中文在线视频| 国产在线精品播放| 国产精品亚洲综合久久| 日本黄色免费片| 亚洲电影天堂av| 欧美高清免费| 欧美爱爱视频免费看| 国产精品看片你懂得| 亚洲精品视频网| 国产精品免费看久久久香蕉 | 海角国产乱辈乱精品视频| 欧美伦理影院| 粉嫩av懂色av蜜臀av分享| 欧美人与禽zozo性伦| 日本午夜大片a在线观看| 免费看污污视频| 久久久久久免费毛片精品| 国产suv精品一区二区69| 国产精品国内视频| 一本色道久久综合亚洲精品不卡|