GitHub?Actions的概念、常見用例和示例
GitHub中的GitHub Actions是一個持續(xù)集成和持續(xù)交付的平臺,它可以幫助你通過自動化的構(gòu)建(包括編譯、發(fā)布、自動化測試)來驗證你的代碼,從而盡快地發(fā)現(xiàn)集成錯誤。github于2019年11月后對該功能全面開放,現(xiàn)在所有的github用戶可以直接使用該功能。GitHub 提供 Linux、Windows 和 macOS 虛擬機來運行您的工作流程,或者您可以在自己的數(shù)據(jù)中心或云基礎(chǔ)架構(gòu)中托管自己的自托管運行器。
GitHub Actions使開發(fā)人員能夠在其代碼存儲庫中自動化地執(zhí)行各種任務(wù)。無論是自動構(gòu)建和測試代碼,還是自動部署應(yīng)用程序,GitHub Actions 都可以幫助開發(fā)團隊提高效率,降低錯誤率。在本文中,我們將深入了解 GitHub Actions 的概念、常見用例和示例,并提供相關(guān)參考文檔。
GitHub Actions 概念和術(shù)語
- Workflow(工作流程):工作流程是一組自動化任務(wù)的過程。它可以在 GitHub 存儲庫中觸發(fā)和運行,允許開發(fā)人員根據(jù)需求定義代碼的自動化流程。
- Action(動作):動作是執(zhí)行特定任務(wù)的腳本或命令。它可以是單個任務(wù)或一組任務(wù)的集合,用于在工作流程中執(zhí)行特定的操作,如構(gòu)建、測試、部署等。
- Event(事件):事件是指 GitHub 存儲庫中發(fā)生的特定活動,例如推送代碼、創(chuàng)建拉取請求、發(fā)布版本等。這些事件可以作為工作流程的觸發(fā)器,當(dāng)事件發(fā)生時,相應(yīng)的工作流程將被觸發(fā)執(zhí)行。
- Runner(運行器):運行器是用于執(zhí)行工作流程中任務(wù)的虛擬環(huán)境或物理機器。GitHub 提供了托管的運行器,也支持自托管的運行器,開發(fā)人員可以根據(jù)需要選擇合適的運行器來執(zhí)行他們的工作流程。
Github Actions 的使用限制
在使用免費版本的Github Action是有如下限制的:
作業(yè)執(zhí)行時間 - 工作流中的每個作業(yè)最多可以運行 6 小時的執(zhí)行時間。如果作業(yè)達(dá)到此限制,該作業(yè)將終止且無法完成。
工作流運行時間 - 每個工作流運行限制為 35 天。如果工作流運行達(dá)到此限制,則工作流運行將被取消。此時間段包括執(zhí)行持續(xù)時間以及等待和批準(zhǔn)所花費的時間。
API 請求 - 您可以在一小時內(nèi)跨存儲庫中的所有操作執(zhí)行多達(dá) 1000 個 API 請求。如果超出此限制,其他 API 調(diào)用將失敗,這可能會導(dǎo)致作業(yè)失敗。
并發(fā)作業(yè) - 可以在帳戶中運行的并發(fā)作業(yè)數(shù)取決于 GitHub 計劃,如下表所示。如果超出,則任何其他作業(yè)都將排隊。
GitHub 計劃 | 并發(fā)作業(yè)總數(shù) | 最大并發(fā) macOS 作業(yè)數(shù) |
---|---|---|
自由 | 20 | 5 |
專業(yè)版 | 40 | 5 |
團隊 | 60 | 5 |
企業(yè) | 180 | 50 |
作業(yè)矩陣 - 作業(yè)矩陣每次工作流運行最多可以生成 256 個作業(yè)。此限制適用于 GitHub 托管和自托管的運行程序。
工作流運行隊列 - 每個存儲庫的排隊時間間隔不超過 500 個工作流運行,間隔為 10 秒。如果工作流運行達(dá)到此限制,則工作流運行將終止且無法完成。
什么是Yaml ?
編寫GithubActions的流程時,需要創(chuàng)建一個workflow工作流,workflow必須存儲在你的項目庫根路徑下的.github/workflows目錄中,每一個 workflow對應(yīng)一個具體的.yml 文件(或者 .yaml)。
yml是YAML(YAML Ain’t Markup Language)語言的文件,以數(shù)據(jù)為中心,比properties、xml等更適合做配置文件,主要有以下幾個特點:
大小寫敏感。
使用縮進表示層級關(guān)系。
縮進只能使用空格,不能用 TAB 字符。
縮進的空格數(shù)量不重要,只要層級相同的元素左對齊即可。
‘#’ 表示注釋。
常見用例和示例
自動構(gòu)建和測試
這是一個常見的用例,當(dāng)代碼推送到存儲庫時,自動觸發(fā)工作流程來構(gòu)建和測試代碼。
name: Build and Test on: push: branches: - main jobs: build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Build run: make build - name: Test run: make test<
自動部署到服務(wù)器
另一個常見的用例是當(dāng)發(fā)布新版本時,自動將應(yīng)用程序部署到服務(wù)器。
name: Deploy on: release: types: [published] jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Deploy to server uses: easingthemes/ssh-deploy@v2 with: server_ip: ${{ secrets.SERVER_IP }} server_port: ${{ secrets.SERVER_PORT }} username: ${{ secrets.SERVER_USERNAME }} password: ${{ secrets.SERVER_PASSWORD }} source: 'dist/' target: '/var/www/myapp'<
推送到 Amazon ECR 和 Alibaba Cloud Container Registry (ACR)
這個示例展示了如何將代碼構(gòu)建成 Docker 鏡像,推送到 Amazon ECR 和 Alibaba Cloud Container Registry (ACR)。
name: Push to ECR and ACR on: push: branches: - main jobs: push_to_ecr: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Login to Amazon ECR id: login-ecr uses: aws-actions/amazon-ecr-login@v2 with: registry: ${{ secrets.AWS_REGISTRY_URL }} aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - name: Build and push Docker image id: build-image run: | docker build -t ${{ secrets.AWS_REGISTRY_URL }}/my-image . docker push ${{ secrets.AWS_REGISTRY_URL }}/my-image push_to_acr: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v2 - name: Login to Alibaba Cloud uses: aliyun/login-action@v1 with: access-key-id: ${{ secrets.ALIYUN_ACCESS_KEY_ID }} access-key-secret: ${{ secrets.ALIYUN_ACCESS_KEY_SECRET }} region: ${{ secrets.ALIYUN_REGION }} - name: Build and push Docker image id: build-image-acr run: | docker build -t ${{ secrets.ACR_REGISTRY_URL }}/my-image . docker login -u ${{ secrets.ACR_REGISTRY_USERNAME }} -p ${{ secrets.ACR_REGISTRY_PASSWORD }} ${{ secrets.ACR_REGISTRY_URL }} docker push ${{ secrets.ACR_REGISTRY_URL }}/my-image<
總結(jié)
以上是 GitHub Actions 的概念、常見用例和示例。通過利用這一功能,開發(fā)團隊可以實現(xiàn)更高效的開發(fā)流程,提高代碼質(zhì)量和部署速度。如果您對 GitHub Actions 有任何疑問,請隨時向我們提問!
到此這篇關(guān)于GitHub Actions的概念、常見用例和示例的文章就介紹到這了,更多相關(guān)GitHub Actions常見用例內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Windows10 1903錯誤0xc0000135解決方案【推薦】
windows10 1903是2019年Mircosoft推出的最新版windows操作系統(tǒng),但是有很多機器裝上之后會存在不支持.net framework的現(xiàn)象,因此在這里,筆者為大家?guī)砹私鉀Q該問題簡單好用的方案,需要的朋友可以參考下2019-10-10淺談Web服務(wù)器和應(yīng)用服務(wù)器的區(qū)別
通俗的講,Web服務(wù)器傳送(serves)頁面使瀏覽器可以瀏覽,然而應(yīng)用程序服務(wù)器提供的是客戶端應(yīng)用程序可以調(diào)用(call)的方法(methods)2012-02-02配置Memcache服務(wù)器并實現(xiàn)主從復(fù)制功能(repcached)
repcached是日本人開發(fā)的實現(xiàn)memcached復(fù)制功能,它是一個單 master單 slave的方案,但它的 master/slave都是可讀寫的,而且可以相互同步,如果 master壞掉, slave偵測到連接斷了,它會自動 listen而成為 master2012-03-03HTTP響應(yīng)字段Transfer-Encoding含義及作用詳解
在HTTP通信中,響應(yīng)正文可以以多種不同的編碼方式傳輸,其中一種方式是chunked傳輸編碼,本文將詳細(xì)介紹Transfer-Encoding字段的含義和chunked傳輸編碼,以及提供示例來解釋這些概念2023-11-11基于epoll實現(xiàn) Reactor服務(wù)器的詳細(xì)過程
在我們調(diào)用epoll_create的時候會創(chuàng)建出epoll模型,這個模型也是利用文件描述類似文件系統(tǒng)的方式控制該結(jié)構(gòu),這篇文章主要介紹了基于epoll實現(xiàn) Reactor服務(wù)器的詳細(xì)過程,需要的朋友可以參考下2023-12-12ssh服務(wù)器拒絕了密碼 請再試一次已解決(親測有效)
這篇文章主要介紹了解決ssh服務(wù)器拒絕了密碼 請再試一次的問題,本文通過兩種方法給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08