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

 更新时间:2024年05月02日 10:26:02   作者:IvwDcwSo  
GitHub中的GitHub Actions是一个持续集成和持续交付的平台,它可以帮助你通过自动化的构建(包括编译、发布、自动化测试)来验证你的代码,无论是自动构建和测试代码,还是自动部署应用程序,GitHub Actions 都可以帮助开发团队提高效率,降低错误率

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 作业数
自由205
专业版405
团队605
企业18050

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

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

什么是Yaml ?

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

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

常见用例和示例

自动构建和测试

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

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<

自动部署到服务器

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

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)。

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 有任何疑问,请随时向我们提问!

到此这篇关于GitHub Actions的概念、常见用例和示例的文章就介绍到这了,更多相关GitHub Actions常见用例内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • CentOS 6.3 Rsync客户端与Win2003 cwRsyncServer服务端实现数据同步

    CentOS 6.3 Rsync客户端与Win2003 cwRsyncServer服务端实现数据同步

    这篇文章主要介绍了CentOS 6.3 Rsync客户端与Win2003 cwRsyncServer服务端实现数据同步,需要的朋友可以参考下
    2015-07-07
  • Caddy 一个用Go实现的Web Server

    Caddy 一个用Go实现的Web Server

    这篇文章主要介绍了Caddy 一个用Go实现的Web Server,简洁易用,需要的朋友可以参考下
    2016-11-11
  • Linux下Web网站压力测试工具Webbench使用教程

    Linux下Web网站压力测试工具Webbench使用教程

    webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便。
    2014-11-11
  • rsync 同步错误 cwrsync rsync error rsync error: some files/attrs were not transferred 解决方法

    rsync 同步错误 cwrsync rsync error rsyn

    今天在帮客户配置机器的时候提示cwrsync rsync error rsync error: some files/attrs were not transferred,最终发现原来是用mcafee设置了文件权限不可写导致,特整理下方便需要的朋友
    2013-03-03
  • django项目、vue项目部署云服务器的详细过程

    django项目、vue项目部署云服务器的详细过程

    这篇文章主要介绍了django项目、vue项目部署云服务器的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • 刀片服务器五大误区解读

    刀片服务器五大误区解读

    人总是愿意用挑剔的目光来看到新生事物,在对待刀片效劳器的问题就是如此,有些人对于一些反复介绍的技术视而不见,仍然强加给刀片效劳器一些莫须有的罪名,这些错误正影响着刀片服务器的推广和应用。
    2009-09-09
  • 微服务之注册中心和配置中心Consul详解

    微服务之注册中心和配置中心Consul详解

    这篇文章主要为大家介绍了微服务 注册中心和配置中心Consul选型及基本使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-04-04
  • 教你搭建dns服务器(图文教程)

    教你搭建dns服务器(图文教程)

    这篇文章主要介绍了搭建dns服务器的图文教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • 服务器sas硬盘+sata串口硬盘win2003系统安装方法分享

    服务器sas硬盘+sata串口硬盘win2003系统安装方法分享

    最近我们购置了两台win2003服务器,因为考虑到性价比,我们购买了一个300G 1.5w转的sas硬盘与一个1T的企业级硬盘。在实际安装中碰到了一些问题,附解决方法。
    2011-04-04
  • UDP连接对象原理解析及使用实例

    UDP连接对象原理解析及使用实例

    这篇文章主要介绍了UDP连接对象原理解析及使用实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10

最新评论