GitHub Actions的概念、常见用例和示例
<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">GitHub Actions 概念和术语</a></li><li><a href="#_label1">Github Actions 的使用限制</a></li><li><a href="#_label2">什么是Yaml ?</a></li><li><a href="#_label3">常见用例和示例</a></li><ul class="second_class_ul"><li><a href="#_lab2_3_0">自动构建和测试</a></li><li><a href="#_lab2_3_1">自动部署到服务器</a></li><li><a href="#_lab2_3_2">推送到 Amazon ECR 和 Alibaba Cloud Container Registry (ACR)</a></li></ul><li><a href="#_label4">总结</a></li><ul class="second_class_ul"></ul></ul></div><p>GitHub中的GitHub Actions是一个持续集成和持续交付的平台,它可以帮助你通过自动化的构建(包括编译、发布、自动化测试)来验证你的代码,从而尽快地发现集成错误。github于2019年11月后对该功能全面开放,现在所有的github用户可以直接使用该功能。GitHub 提供 Linux、Windows 和 macOS 虚拟机来运行您的工作流程,或者您可以在自己的数据中心或云基础架构中托管自己的自托管运行器。</p><p>GitHub Actions使开发人员能够在其代码存储库中自动化地执行各种任务。无论是自动构建和测试代码,还是自动部署应用程序,GitHub Actions 都可以帮助开发团队提高效率,降低错误率。在本文中,我们将深入了解 GitHub Actions 的概念、常见用例和示例,并提供相关参考文档。</p>
<p class="maodian"><a name="_label0"></a></p><h2>GitHub Actions 概念和术语</h2>
<ol><li><strong>Workflow(工作流程)</strong>:工作流程是一组自动化任务的过程。它可以在 GitHub 存储库中触发和运行,允许开发人员根据需求定义代码的自动化流程。</li><li><strong>Action(动作)</strong>:动作是执行特定任务的脚本或命令。它可以是单个任务或一组任务的集合,用于在工作流程中执行特定的操作,如构建、测试、部署等。</li><li><strong>Event(事件)</strong>:事件是指 GitHub 存储库中发生的特定活动,例如推送代码、创建拉取请求、发布版本等。这些事件可以作为工作流程的触发器,当事件发生时,相应的工作流程将被触发执行。</li><li><strong>Runner(运行器)</strong>:运行器是用于执行工作流程中任务的虚拟环境或物理机器。GitHub 提供了托管的运行器,也支持自托管的运行器,开发人员可以根据需要选择合适的运行器来执行他们的工作流程。</li></ol>
<p class="maodian"><a name="_label1"></a></p><h2>Github Actions 的使用限制</h2>
<p>在使用免费版本的Github Action是有如下限制的:</p>
<p>作业执行时间 - 工作流中的每个作业最多可以运行 6 小时的执行时间。如果作业达到此限制,该作业将终止且无法完成。</p>
<p>工作流运行时间 - 每个工作流运行限制为 35 天。如果工作流运行达到此限制,则工作流运行将被取消。此时间段包括执行持续时间以及等待和批准所花费的时间。</p>
<p>API 请求 - 您可以在一小时内跨存储库中的所有操作执行多达 1000 个 API 请求。如果超出此限制,其他 API 调用将失败,这可能会导致作业失败。</p>
<p>并发作业 - 可以在帐户中运行的并发作业数取决于 GitHub 计划,如下表所示。如果超出,则任何其他作业都将排队。</p>
<table><thead><tr><th style="text-align:center">GitHub 计划</th><th style="text-align:center">并发作业总数</th><th style="text-align:center">最大并发 macOS 作业数</th></tr></thead><tbody><tr><td style="text-align:center">自由</td><td style="text-align:center">20</td><td style="text-align:center">5</td></tr><tr><td style="text-align:center">专业版</td><td style="text-align:center">40</td><td style="text-align:center">5</td></tr><tr><td style="text-align:center">团队</td><td style="text-align:center">60</td><td style="text-align:center">5</td></tr><tr><td style="text-align:center">企业</td><td style="text-align:center">180</td><td style="text-align:center">50</td></tr></tbody></table>
<p>作业矩阵 - 作业矩阵每次工作流运行最多可以生成 256 个作业。此限制适用于 GitHub 托管和自托管的运行程序。</p>
<p>工作流运行队列 - 每个存储库的排队时间间隔不超过 500 个工作流运行,间隔为 10 秒。如果工作流运行达到此限制,则工作流运行将终止且无法完成。</p>
<p class="maodian"><a name="_label2"></a></p><h2>什么是Yaml ?</h2>
<p>编写GithubActions的流程时,需要创建一个workflow工作流,workflow必须存储在你的项目库根路径下的.github/workflows目录中,每一个 workflow对应一个具体的.yml 文件(或者 .yaml)。<br />yml是YAML(YAML Ain’t Markup Language)语言的文件,以数据为中心,比properties、xml等更适合做配置文件,主要有以下几个特点:</p>
<blockquote><p>大小写敏感。<br />使用缩进表示层级关系。<br />缩进只能使用空格,不能用 TAB 字符。<br />缩进的空格数量不重要,只要层级相同的元素左对齐即可。<br />‘#’ 表示注释。</p></blockquote>
<p class="maodian"><a name="_label3"></a></p><h2>常见用例和示例</h2>
<p class="maodian"><a name="_lab2_3_0"></a></p><h3>自动构建和测试</h3>
<p>这是一个常见的用例,当代码推送到存储库时,自动触发工作流程来构建和测试代码。</p>
<div class="jb51code"><pre class="brush:yaml;">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<</pre></div>
<p class="maodian"><a name="_lab2_3_1"></a></p><h3>自动部署到服务器</h3>
<p>另一个常见的用例是当发布新版本时,自动将应用程序部署到服务器。</p>
<div class="jb51code"><pre class="brush:yaml;">name: Deploy
on:
release:
types:
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'<</pre></div>
<p class="maodian"><a name="_lab2_3_2"></a></p><h3>推送到 Amazon ECR 和 Alibaba Cloud Container Registry (ACR)</h3>
<p>这个示例展示了如何将代码构建成 Docker 镜像,推送到 Amazon ECR 和 Alibaba Cloud Container Registry (ACR)。</p>
<div><div class="jb51code"><pre class="brush:yaml;">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<</pre></div></div>
<p class="maodian"><a name="_label4"></a></p><h2>总结</h2>
<p>以上是 GitHub Actions 的概念、常见用例和示例。通过利用这一功能,开发团队可以实现更高效的开发流程,提高代码质量和部署速度。如果您对 GitHub Actions 有任何疑问,请随时向我们提问!</p>
<p>到此这篇关于GitHub Actions的概念、常见用例和示例的文章就介绍到这了,更多相关GitHub Actions常见用例内容请搜索琼殿技术社区以前的文章或继续浏览下面的相关文章希望大家以后多多支持琼殿技术社区!</p>
頁:
[1]