广告位联系
返回顶部
分享到

GitHub Actions的概念、常见用例和示例

服务器其他 来源:互联网 作者:佚名 发布时间:2024-05-04 22:46:02 人浏览
摘要

GitHub中的GitHub Actions是一个持续集成和持续交付的平台,它可以帮助你通过自动化的构建(包括编译、发布、自动化测试)来验证你的代码,从而尽快地发现集成错误。github于2019年11月后对该功

GitHub中的GitHub Actions是一个持续集成和持续交付的平台,它可以帮助你通过自动化的构建(包括编译、发布、自动化测试)来验证你的代码,从而尽快地发现集成错误。github于2019年11月后对该功能全面开放,现在所有的github用户可以直接使用该功能。GitHub 提供 Linux、Windows 和 macOS 虚拟机来运行您的工作流程,或者您可以在自己的数据中心或云基础架构中托管自己的自托管运行器。

GitHub Actions使开发人员能够在其代码存储库中自动化地执行各种任务。无论是自动构建和测试代码,还是自动部署应用程序,GitHub Actions 都可以帮助开发团队提高效率,降低错误率。在本文中,我们将深入了解 GitHub Actions 的概念、常见用例和示例,并提供相关参考文档。

GitHub Actions 概念和术语

  1. Workflow(工作流程):工作流程是一组自动化任务的过程。它可以在 GitHub 存储库中触发和运行,允许开发人员根据需求定义代码的自动化流程。
  2. Action(动作):动作是执行特定任务的脚本或命令。它可以是单个任务或一组任务的集合,用于在工作流程中执行特定的操作,如构建、测试、部署等。
  3. Event(事件):事件是指 GitHub 存储库中发生的特定活动,例如推送代码、创建拉取请求、发布版本等。这些事件可以作为工作流程的触发器,当事件发生时,相应的工作流程将被触发执行。
  4. Runner(运行器):运行器是用于执行工作流程中任务的虚拟环境或物理机器。GitHub 提供了托管的运行器,也支持自托管的运行器,开发人员可以根据需要选择合适的运行器来执行他们的工作流程。

Github Actions 的使用限制

在使用免费版本的Github Action是有如下限制的:

作业执行时间 - 工作流中的每个作业最多可以运行 6 小时的执行时间。如果作业达到此限制,该作业将终止且无法完成。

工作流运行时间 - 每个工作流运行限制为 35 天。如果工作流运行达到此限制,则工作流运行将被取消。此时间段包括执行持续时间以及等待和批准所花费的时间。

API 请求 - 您可以在一小时内跨存储库中的所有操作执行多达 1000 个 API 请求。如果超出此限制,其他 API 调用将失败,这可能会导致作业失败。

并发作业 - 可以在帐户中运行的并发作业数取决于 GitHub 计划,如下表所示。如果超出,则任何其他作业都将排队。

GitHub 计划 并发作业总数 最大并发 macOS 作业数
自由 20 5
专业版 40 5
团队 60 5
企业 180 50

作业矩阵 - 作业矩阵每次工作流运行最多可以生成 256 个作业。此限制适用于 GitHub 托管和自托管的运行程序。

工作流运行队列 - 每个存储库的排队时间间隔不超过 500 个工作流运行,间隔为 10 秒。如果工作流运行达到此限制,则工作流运行将终止且无法完成。

什么是Yaml ?

编写GithubActions的流程时,需要创建一个workflow工作流,workflow必须存储在你的项目库根路径下的.github/workflows目录中,每一个 workflow对应一个具体的.yml 文件(或者 .yaml)。
yml是YAML(YAML Ain’t Markup Language)语言的文件,以数据为中心,比properties、xml等更适合做配置文件,主要有以下几个特点:

大小写敏感。
使用缩进表示层级关系。
缩进只能使用空格,不能用 TAB 字符。
缩进的空格数量不重要,只要层级相同的元素左对齐即可。
‘#’ 表示注释。

常见用例和示例

自动构建和测试

这是一个常见的用例,当代码推送到存储库时,自动触发工作流程来构建和测试代码。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

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<

自动部署到服务器

另一个常见的用例是当发布新版本时,自动将应用程序部署到服务器。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

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)

这个示例展示了如何将代码构建成 Docker 镜像,推送到 Amazon ECR 和 Alibaba Cloud Container Registry (ACR)。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

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<

总结

以上是 GitHub Actions 的概念、常见用例和示例。通过利用这一功能,开发团队可以实现更高效的开发流程,提高代码质量和部署速度。如果您对 GitHub Actions 有任何疑问,请随时向我们提问!


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。

您可能感兴趣的文章 :

原文链接 :
相关文章
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计