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

Github Actions 還能做這些事

開發 后端
最近公司內部項目的發布流程接入了 GitHub Actions,整個體驗過程還是比較美好的;本文主要目的是對于沒有還接觸過 GitHub Actions的新手,能夠利用它快速構建自動測試及打包推送 Docker 鏡像等自動化流程。

[[389725]]

本文轉載自微信公眾號「crossoverJie」,作者crossoverJie。轉載本文請聯系crossoverJie公眾號。

前言

最近公司內部項目的發布流程接入了 GitHub Actions,整個體驗過程還是比較美好的;本文主要目的是對于沒有還接觸過 GitHub Actions的新手,能夠利用它快速構建自動測試及打包推送 Docker 鏡像等自動化流程。

創建項目

本文主要以 Go 語言為例,當然其他語言也是類似的,與語言本身關系不大。

這里我們首先在 GitHub 上創建一個項目,編寫了幾段簡單的代碼 main.go:

  1. var version = "0.0.1" 
  2.  
  3. func GetVersion() string { 
  4.  return version 
  5.  
  6. func main() { 
  7.  fmt.Println(GetVersion()) 

內容非常簡單,只是打印了了版本號;同時配套了一個單元測試 main_test.go:

  1. func TestGetVersion1(t *testing.T) { 
  2.  tests := []struct { 
  3.   name string 
  4.   want string 
  5.  }{ 
  6.   {name"test1", want: "0.0.1"}, 
  7.  } 
  8.  for _, tt := range tests { 
  9.   t.Run(tt.name, func(t *testing.T) { 
  10.    if got := GetVersion(); got != tt.want { 
  11.     t.Errorf("GetVersion() = %v, want %v", got, tt.want) 
  12.    } 
  13.   }) 
  14.  } 

我們可以執行 go test 運行該單元測試。

  1. $ go test                           
  2. PASS 
  3. ok      github.com/crossoverJie/go-docker       1.729s 

自動測試

當然以上流程完全可以利用 Actions 自動化搞定。

首選我們需要在項目根路徑創建一個 .github/workflows/*.yml 的配置文件,新增如下內容:

  1. name: go-docker 
  2. on: push 
  3. jobs: 
  4.   test: 
  5.     runs-on: ubuntu-latest 
  6.     if: github.ref == 'refs/heads/main' || startsWith(github.ref, 'refs/tags'
  7.     steps: 
  8.       - uses: actions/checkout@v2 
  9.       - name: Run Unit Tests 
  10.         run: go test 

簡單解釋下:

  • name 不必多說,是為當前工作流創建一個名詞。
  • on 指在什么事件下觸發,這里指代碼發生 push 時觸發,更多事件定義可以參考官方文檔:

Events that trigger workflows

  • jobs 則是定義任務,這里只有一個名為 test 的任務。

該任務是運行在 ubuntu-latest 的環境下,只有在 main 分支有推送或是有 tag 推送時運行。

運行時會使用 actions/checkout@v2 這個由他人封裝好的 Action,當然這里使用的是由官方提供的拉取代碼 Action。

  • 基于這個邏輯,我們可以靈活的分享和使用他人的 Action 來簡化流程,這點也是 GitHub Action擴展性非常強的地方。

最后的 run 則是運行自己命令,這里自然就是觸發單元測試了。

  • 如果是 Java 便可改為 mvn test.

之后一旦我們在 main 分支上推送代碼,或者有其他分支的代碼合并過來時都會自動運行單元測試,非常方便。

 

與我們本地運行效果一致。

自動發布

接下來考慮自動打包 Docker 鏡像,同時上傳到 Docker Hub;為此首先創建 Dockerfile :

  1. FROM golang:1.15 AS builder 
  2. ARG VERSION=0.0.10 
  3. WORKDIR /go/src/app 
  4. COPY main.go . 
  5. RUN go build -o main -ldflags="-X 'main.version=${VERSION}'" main.go 
  6.  
  7. FROM debian:stable-slim 
  8. COPY --from=builder /go/src/app/main /go/bin/main 
  9. ENV PATH="/go/bin:${PATH}" 
  10. CMD ["main"

這里利用 ldflags 可在編譯期間將一些參數傳遞進打包程序中,比如打包時間、go 版本、git 版本等。

這里只是將 VERSION 傳入了 main.version 變量中,這樣在運行時就便能取到了。

  1. docker build -t go-docker:last . 
  2. docker run --rm go-docker:0.0.10 
  3. 0.0.10 

接著繼續編寫 docker.yml 新增自動打包 Docker 以及推送到 docker hub 中。

  1. deploy: 
  2.     runs-on: ubuntu-latest 
  3.     needs: test 
  4.     if: startsWith(github.ref, 'refs/tags'
  5.     steps: 
  6.       - name: Extract Version 
  7.         id: version_step 
  8.         run: | 
  9.           echo "##[set-output name=version;]VERSION=${GITHUB_REF#$"refs/tags/v"}" 
  10.           echo "##[set-output name=version_tag;]$GITHUB_REPOSITORY:${GITHUB_REF#$"refs/tags/v"}" 
  11.           echo "##[set-output name=latest_tag;]$GITHUB_REPOSITORY:latest" 
  12.  
  13.       - nameSet up QEMU 
  14.         uses: docker/setup-qemu-action@v1 
  15.  
  16.       - nameSet up Docker Buildx 
  17.         uses: docker/setup-buildx-action@v1 
  18.  
  19.       - name: Login to DockerHub 
  20.         uses: docker/login-action@v1 
  21.         with
  22.           username: ${{ secrets.DOCKER_USER_NAME }} 
  23.           password: ${{ secrets.DOCKER_ACCESS_TOKEN }} 
  24.  
  25.       - name: PrepareReg Names 
  26.         id: read-docker-image-identifiers 
  27.         run: | 
  28.           echo VERSION_TAG=$(echo ${{ steps.version_step.outputs.version_tag }} | tr '[:upper:]' '[:lower:]') >> $GITHUB_ENV 
  29.           echo LASTEST_TAG=$(echo ${{ steps.version_step.outputs.latest_tag  }} | tr '[:upper:]' '[:lower:]') >> $GITHUB_ENV 
  30.  
  31.       - name: Build and push Docker images 
  32.         id: docker_build 
  33.         uses: docker/build-push-action@v2.3.0 
  34.         with
  35.           push: true 
  36.           tags: | 
  37.             ${{env.VERSION_TAG}} 
  38.             ${{env.LASTEST_TAG}} 
  39.           build-args: | 
  40.             ${{steps.version_step.outputs.version}} 

新增了一個 deploy 的 job。

  1. needs: test 
  2.  if: startsWith(github.ref, 'refs/tags'

運行的條件是上一步的單測流程跑通,同時有新的 tag 生成時才會觸發后續的 steps。

name: Login to DockerHub

在這一步中我們需要登錄到 DockerHub,所以首先需要在 GitHub 項目中配置 hub 的 user_name 以及 access_token.

 

配置好后便能在 action 中使用該變量了。

 

這里使用的是由 docker 官方提供的登錄 action(docker/login-action)。

有一點要非常注意,我們需要將鏡像名稱改為小寫,不然會上傳失敗,比如我的名稱中 J 字母是大寫的,直接上傳時就會報錯。

 

所以在上傳之前先要執行該步驟轉換為小寫。

 

最后再用這兩個變量上傳到 Docker Hub。

 

今后只要我們打上 tag 時,Action 就會自動執行單測、構建、上傳的流程。

總結

GitHub Actions 非常靈活,你所需要的大部分功能都能在 marketplace找到現成的直接使用,

比如可以利用 ssh 登錄自己的服務器,執行一些命令或腳本,這樣想象空間就很大了。

使用起來就像是搭積木一樣,可以很靈活的完成自己的需求。

參考鏈接:

How to Build a CI/CD Pipeline with Go, GitHub Actions and Docker

責任編輯:武曉燕 來源: crossoverJie
相關推薦

2022-12-21 08:20:01

2020-12-04 10:42:54

GithubSSDNode.js

2021-05-13 21:21:50

React應用GitHub

2021-10-15 10:39:43

RabbitMQ隊列延遲

2024-12-02 07:00:00

特性標記軟件開發Action

2021-01-18 18:30:49

服務器開發工具

2021-10-03 14:47:26

Fedora CoreGitHub Acti運行器

2021-01-19 05:26:22

Github ActiJenkinsDevOps

2024-02-20 08:08:43

2015-11-23 09:50:17

大數據

2017-03-07 11:45:57

DevOps容器

2019-11-26 08:00:00

GitHubGitHub ActiAzure

2021-04-20 09:36:49

黑客網絡安全網絡攻擊

2024-01-24 18:50:21

WebFTP服務器

2022-05-27 08:55:15

工具自動化軟件

2022-11-15 17:07:40

開發自動化前端

2019-05-25 14:58:06

車載微信微信語音交互

2022-08-09 08:00:00

服務網格云原生工具

2021-01-15 08:52:09

GitHub GitHubActio博文發布

2021-12-30 19:34:15

Java泛型JDK
點贊
收藏

51CTO技術棧公眾號

精品在线亚洲视频| 污视频网站观看| 国产黄色片免费观看| 欧美午夜一区| 日韩成人久久久| 国产成人综合一区| 免费人成在线观看播放视频| 国产精品一区在线观看你懂的| 欧美精品aaa| 91激情视频在线观看| 伊人久久大香线蕉综合影院首页| 亚洲一区二区三区四区五区中文 | 2018中文字幕第一页| 午夜国产在线观看| 麻豆成人av在线| 海角国产乱辈乱精品视频| 久久久久久久久久久久| 日韩亚洲精品在线观看| 色视频一区二区| 国产一区二区三区播放| 国模吧精品人体gogo| 国产精品白丝jk白祙喷水网站| 97精品伊人久久久大香线蕉| 欧美性生交大片| 欧美亚洲tv| 欧美一级免费观看| 欧美一区二区三区爽大粗免费| www.蜜臀av| 日韩电影在线免费观看| 欧美成人一二三| 亚洲综合色一区| 91在线一区| 欧美电影一区二区三区| 超碰影院在线观看| 啦啦啦中文在线观看日本| 国产精品久久久久久久岛一牛影视| 国产一区二区三区无遮挡| 久久综合图片| 欧美性色xo影院| www国产免费| 午夜免费福利在线观看| 2021国产精品久久精品| 97超级碰碰| 伊人色综合久久久| 美女久久一区| 欧美日韩福利视频| 萌白酱视频在线| 国产99久久精品一区二区300| 亚洲第一精品福利| 女教师高潮黄又色视频| 国产精品欧美一区二区三区不卡 | 亚洲精品综合久久中文字幕| 中文字幕视频观看| 9999精品| 正在播放亚洲一区| 欧美亚洲日本在线观看| 筱崎爱全乳无删减在线观看| 亚洲国产毛片aaaaa无费看| 欧洲精品视频在线| 国产秀色在线www免费观看| 中文字幕欧美日本乱码一线二线| 日本中文不卡| 在线看的av网站| 国产精品福利一区二区| 亚洲一区二区三区精品在线观看| av网站在线播放| 国产精品美女久久久久久| 翔田千里亚洲一二三区| 1pondo在线播放免费| 国产精品久久久久久久久免费桃花| 亚洲国产日韩综合一区| 欧美人xxx| 亚洲私人影院在线观看| 国产美女作爱全过程免费视频| 污污在线观看| 天天av天天翘天天综合网| 国产91在线视频观看| 亚洲精品成人无码毛片| 日本在线人成| 亚洲欧美激情小说另类| www.好吊操| 欧美a级在线观看| 日本高清视频一区二区| 在线看的黄色网址| 美女精品视频在线| 亚洲成人精品视频在线观看| 丰满少妇在线观看资源站| 国产成人精品三级高清久久91| 中文字幕在线精品| 久久久久亚洲av无码专区体验| 亚洲午夜一区| 国产成人精品免高潮在线观看| 亚洲天堂视频网| 国产成人免费视频一区| 欧美日韩精品久久| 日本激情视频在线观看| 亚洲国产aⅴ成人精品无吗| 国产 福利 在线| 国产一区高清| 精品黑人一区二区三区久久 | 丁香5月婷婷久久| 亚洲欧美日韩综合| 国产性xxxx| 免播放器亚洲| 147欧美人体大胆444| 日本在线一二三| 亚洲视频中文字幕| 日韩在线中文字| 亚洲图片 自拍偷拍| 农村少妇一区二区三区四区五区| 亚洲少妇中文在线| 四虎免费在线视频| 日韩精品视频网| caoporn国产精品免费公开| 日本不卡视频一区二区| 亚洲欧美日韩久久| 国产精品天天av精麻传媒| 精品91福利视频| 亚洲欧美日韩国产精品| 久久中文字幕无码| 久久99国内精品| 欧美美乳视频网站在线观看| 9色porny| 88xx成人永久免费观看| 精品美女在线观看| 任我爽在线视频| 日韩精品色哟哟| 美女三级99| heyzo高清国产精品| 欧美丰满美乳xxx高潮www| 97超碰在线资源| 亚洲承认在线| 91丨九色丨国产| 日本成人网址| 欧洲精品中文字幕| 一级黄色片大全| 亚洲在线网站| 精品国产综合区久久久久久| 欧美日韩色网| 日韩久久久久久| 8x拔播拔播x8国产精品| 色婷婷在线视频观看| 蜜桃av一区二区三区电影| 另类小说综合网| av资源在线| 亚洲第一福利在线观看| 国产乡下妇女做爰视频| 国产精品一卡二| 亚洲午夜精品一区二区| 丁香花电影在线观看完整版| 欧美精品电影在线播放| 久久久久久久毛片| 国产精品久久久亚洲一区| 国产一区二区不卡视频| 色呦呦在线资源| 这里只有精品99re| 精品一区二区在线观看视频| 日韩成人免费电影| 久热这里只精品99re8久| 高清视频在线观看三级| 欧美精品在线一区二区三区| 一区二区三区在线观看免费视频| 国产视频一区免费看| 国产在线一区二区三区欧美| 91探花在线观看| 亚洲精品一区二区在线| 九九热精品视频在线| 99国产精品久久久久久久久久久| 婷婷五月综合缴情在线视频| 欧美成人基地| 久久精品中文字幕| 亚洲成人一二三区| 亚洲午夜一区二区三区| 日本性生活一级片| 亚洲三级国产| 精品中文字幕一区| 日日av拍夜夜添久久免费| 亚洲一二三在线| 在线观看免费黄色小视频| 国产精品久久久久桃色tv| 国产主播中文字幕| 欧美激情 亚洲a∨综合| 俄罗斯精品一区二区三区| 91禁在线看| 亚洲毛片在线免费观看| 在线播放成人av| 亚洲天堂a在线| 熟妇高潮一区二区| 亚洲少妇诱惑| 欧美激情论坛| 欧美激情第3页| 国产一区二区精品久| 国产成人精品a视频一区www| av二区在线| 精品国产一区二区三区久久久蜜月 | 欧美精品一区二区三区久久久| 国产美女激情视频| 欧美激情中文字幕| 日本在线播放一区二区| 亚洲一本视频| 色99中文字幕| 激情av综合| 国产精品扒开腿做爽爽爽男男| 欧美一区二区三区| 亚洲成人av片| 日韩 欧美 精品| 中文字幕在线不卡视频| 亚洲日本久久久| 日韩成人dvd| 久久久久久久久久久综合| 欧美日韩激情在线一区二区三区| 亚洲www视频| 亚洲校园激情春色| 久久影视电视剧免费网站| 亚欧洲精品视频| 欧美一区二区三区不卡| 免费视频久久久| 亚洲另类中文字| a级在线免费观看| 国产91富婆露脸刺激对白| 无限资源日本好片| 亚洲高清二区| 伊人久久大香线蕉av一区| 久久久久影视| 成人免费淫片视频软件| 99欧美精品| 欧美性视频精品| 天堂av中文在线| www.久久久久| 色老头在线视频| 亚洲在线观看| 欧美aaa在线观看| 欧美三级自拍| 成人va在线观看| 欧美性色黄大片人与善| 91精品一区| 欧美尤物巨大精品爽| wwwav在线| 爽爽爽爽爽爽爽成人免费观看| 四虎永久在线精品免费网址| 欧美精品三级在线观看| 日韩 欧美 综合| 亚洲欧美色综合| 国产大屁股喷水视频在线观看| 91av在线国产| 777电影在线观看| 亚洲精品美女免费| 国产女人爽到高潮a毛片| 欧美在线三级电影| 日韩视频免费观看高清| 亚洲精品成人a在线观看| 人与嘼交av免费| 久久伊人蜜桃av一区二区| 97香蕉碰碰人妻国产欧美 | 麻豆精品久久久| 青青草成人免费在线视频| 欧美在线影院| 中国一级大黄大黄大色毛片| 日韩一区电影| 欧美精品一区二区三区在线看午夜| 一区二区三区日本久久久| 久久99精品久久久久久秒播放器 | 人妻无码一区二区三区久久99 | 香蕉视频网站入口| 久久亚洲图片| 欧美一区二区在线免费播放| 久久精品视频5| 精品国产户外野外| 影音先锋亚洲天堂| av老司机免费在线| 日韩精品一区二区三区在线播放 | 欧洲av一区二区嗯嗯嗯啊| 日本一区二区免费在线观看| 污片在线观看一区二区| 久久亚洲国产成人精品性色| 亚洲一区在线看| 国产一级视频在线| 亚洲综合区在线| 日韩精品视频免费播放| 欧美日韩一区二区精品| 国产午夜精品久久久久| 色综合天天综合网国产成人综合天| 波多野结衣黄色网址| 欧美日韩国产一区| 一本一道精品欧美中文字幕| 欧美丰满美乳xxx高潮www| 国产综合在线播放| 亚洲精品成a人在线观看| 免费在线性爱视频| 色哟哟网站入口亚洲精品| 黄色网在线免费看| 68精品国产免费久久久久久婷婷| 欧美极品影院| 成人免费淫片视频软件| 高清精品视频| 性高潮久久久久久久久| 亚洲综合自拍| 91白丝在线| 日韩精品福利网站| 能在线看的av| 久久精品国产精品亚洲| 91av俱乐部| 婷婷亚洲综合| 韩日视频在线观看| 久久三级福利| 污视频在线观看免费网站| 久久亚洲精品小早川怜子| 欧洲性xxxx| 亚洲成人tv网| 最近中文字幕免费在线观看| 69精品人人人人| 黄色片网站免费在线观看| 亚洲无亚洲人成网站77777| av在线free| 国产成人在线亚洲欧美| 精品亚洲二区| 亚州欧美一区三区三区在线| 国产一区二区三区91| 日韩国产一区久久| 欧美粗暴jizz性欧美20| 国语对白做受xxxxx在线中国 | 免费一级特黄毛片| 久久午夜影视| 无码国产69精品久久久久网站 | 欧美丰满熟妇bbbbbb| 欧美性xxxxx极品娇小| 91在线视频国产| 亚洲精品天天看| 青春草在线免费视频| 国产啪精品视频| 亚洲人成网www| 日韩精品综合在线| 国产美女精品一区二区三区| 久久久久亚洲av成人无码电影| 亚洲福利电影网| 国产xxxx孕妇| 久久久精品久久久久| 一区在线影院| 久久超碰亚洲| 7777久久香蕉成人影院| jizzzz日本| 久久九九国产精品| 日韩少妇高潮抽搐| 亚洲加勒比久久88色综合 | 欧美激情视频在线免费观看 欧美视频免费一| 忘忧草在线日韩www影院| 91在线观看免费| 中文字幕一区二区三区欧美日韩 | 欧美日韩视频在线| 国产又粗又猛视频免费| 亚洲欧美日韩精品久久奇米色影视| 在线观看h网| 亚洲综合第一页| 久久一区91| 爱情岛论坛亚洲首页入口章节| 91精品久久| 国产免费一区二区三区在线能观看| 国产a久久精品一区二区三区 | www.com操| 91亚洲精华国产精华精华液| 免费视频一二三区| 精品日韩99亚洲| 欧美草逼视频| 福利精品视频| 99久久综合| 国产精品99久久久精品无码| 亚洲精品成a人| 精品人妻av一区二区三区| 久久视频在线观看免费| 99国内精品久久久久| 国产精品啪啪啪视频| 国产69精品一区二区亚洲孕妇| 国产福利拍拍拍| 精品调教chinesegay| 伊人久久综合一区二区| 麻豆成人av| 久久99精品久久久久久动态图| 九九精品视频免费| 日韩欧美一区二区免费| 欧美一级鲁丝片| 欧美日韩免费精品| 日韩电影一二三区| 亚洲色图 激情小说| 日韩一区二区三区在线| av在线理伦电影| 久久伦理网站| 国产一区二区在线视频| 久久久国产精华液| 国产视频亚洲精品| 亚洲欧美专区| 日本一级黄视频| 99免费精品视频| 手机av免费观看| 欧美激情视频给我| 久久av超碰| 手机精品视频在线| 欧美色播在线播放| 国产福利第一视频在线播放| 91亚洲一区精品| 亚洲美女网站|