利用 GitHub Actions 自动化你的软件开发流程

简介: GitHub Actions 是 GitHub 提供的自动化工具,可在仓库中触发和执行工作流程,包括自动运行测试、部署应用等。其核心概念包括工作流程(Workflow)、作业(Job)和步骤(Step),均定义在 YAML 文件中。本文将指导你如何设置和使用 GitHub Actions,并提供自动运行测试、部署应用及合并 Pull Requests 的示例,帮助提高开发效率和代码质量。

GitHub Actions 是 GitHub 的自动化功能,它允许你在 GitHub 仓库中自动执行软件开发工作流程。从自动运行测试到部署应用,GitHub Actions 提供了一种强大的方式来自动化几乎任何任务。本文将介绍 GitHub Actions 的基本概念、如何设置和使用,以及一些实用的自动化工作流程示例。

GitHub Actions 简介

GitHub Actions 是一个由 GitHub 提供的自动化工具,它允许你在 GitHub 仓库中触发和执行工作流程。这些工作流程可以是简单的脚本,也可以是复杂的多步骤部署过程。

核心概念

  • 工作流程(Workflow):一系列自动化步骤,定义在 .github/workflows 目录下的 YAML 文件中。
  • 作业(Job):工作流程中的一个执行单元,通常在虚拟环境中运行。
  • 步骤(Step):作业中的一个操作,可以是运行脚本、使用命令或调用其他 GitHub Actions。

设置 GitHub Actions

要开始使用 GitHub Actions,你需要在仓库中创建一个工作流程文件。

创建工作流程文件

  1. 在你的仓库中,导航到 .github/workflows 目录。
  2. 创建一个新的 YAML 文件,例如 ci.yml
  3. 定义你的工作流程配置。
name: CI

on: [push, pull_request]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '14'
      - name: Install dependencies
        run: npm install
      - name: Build
        run: npm run build
      - name: Test
        run: npm test

使用 GitHub Actions 自动化工作流程

自动运行测试

每当代码被推送到仓库时,自动运行测试可以确保代码质量。

name: Test

on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '14'
      - name: Install dependencies
        run: npm install
      - name: Test
        run: npm test

自动部署应用

将应用部署到服务器或云平台是自动化流程中的常见步骤。

name: Deploy

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '14'
      - name: Install dependencies
        run: npm install
      - name: Build
        run: npm run build
      - name: Deploy to Production
        uses: aws-actions/configure-aws-credentials@v1
        with:
          aws-access-key-id: ${
   {
    secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${
   {
    secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: us-east-1
        run: aws s3 sync ./build s3://my-app-bucket

自动合并 Pull Requests

自动化合并符合条件的 Pull Requests 可以减少手动操作。

name: Auto Merge

on:
  pull_request:
    types: [labeled]

jobs:
  auto-merge:
    runs-on: ubuntu-latest
    if: github.event.label.name == 'auto-merge'
    steps:
      - uses: actions/checkout@v2
      - name: Merge PR
        env:
          GITHUB_TOKEN: ${
   {
    secrets.GITHUB_TOKEN }}
        run: |
          git config --global user.email "action@github.com"
          git config --global user.name "GitHub Action"
          git merge origin/${
   { github.event.pull_request.base.ref }} -m "Auto merge PR ${
   { github.event.pull_request.number }}"
          git push

结论

GitHub Actions 提供了一个强大而灵活的自动化平台,可以帮助你自动化软件开发的各个方面。通过本文的介绍,你应该能够开始设置和使用 GitHub Actions 来自动化你的工作流程,从而提高效率和代码质量。

相关文章
|
11天前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
7天前
|
机器学习/深度学习 算法 大数据
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
2024“华为杯”数学建模竞赛,对ABCDEF每个题进行详细的分析,涵盖风电场功率优化、WLAN网络吞吐量、磁性元件损耗建模、地理环境问题、高速公路应急车道启用和X射线脉冲星建模等多领域问题,解析了问题类型、专业和技能的需要。
2514 17
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
|
7天前
|
机器学习/深度学习 算法 数据可视化
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
2024年中国研究生数学建模竞赛C题聚焦磁性元件磁芯损耗建模。题目背景介绍了电能变换技术的发展与应用,强调磁性元件在功率变换器中的重要性。磁芯损耗受多种因素影响,现有模型难以精确预测。题目要求通过数据分析建立高精度磁芯损耗模型。具体任务包括励磁波形分类、修正斯坦麦茨方程、分析影响因素、构建预测模型及优化设计条件。涉及数据预处理、特征提取、机器学习及优化算法等技术。适合电气、材料、计算机等多个专业学生参与。
1520 14
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
|
3天前
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。
|
9天前
|
编解码 JSON 自然语言处理
通义千问重磅开源Qwen2.5,性能超越Llama
击败Meta,阿里Qwen2.5再登全球开源大模型王座
552 14
|
1月前
|
运维 Cloud Native Devops
一线实战:运维人少,我们从 0 到 1 实践 DevOps 和云原生
上海经证科技有限公司为有效推进软件项目管理和开发工作,选择了阿里云云效作为 DevOps 解决方案。通过云效,实现了从 0 开始,到现在近百个微服务、数百条流水线与应用交付的全面覆盖,有效支撑了敏捷开发流程。
19282 30
|
9天前
|
人工智能 自动驾驶 机器人
吴泳铭:AI最大的想象力不在手机屏幕,而是改变物理世界
过去22个月,AI发展速度超过任何历史时期,但我们依然还处于AGI变革的早期。生成式AI最大的想象力,绝不是在手机屏幕上做一两个新的超级app,而是接管数字世界,改变物理世界。
473 48
吴泳铭:AI最大的想象力不在手机屏幕,而是改变物理世界
|
1月前
|
人工智能 自然语言处理 搜索推荐
阿里云Elasticsearch AI搜索实践
本文介绍了阿里云 Elasticsearch 在AI 搜索方面的技术实践与探索。
18838 20
|
1月前
|
Rust Apache 对象存储
Apache Paimon V0.9最新进展
Apache Paimon V0.9 版本即将发布,此版本带来了多项新特性并解决了关键挑战。Paimon自2022年从Flink社区诞生以来迅速成长,已成为Apache顶级项目,并广泛应用于阿里集团内外的多家企业。
17528 13
Apache Paimon V0.9最新进展
|
2天前
|
云安全 存储 运维
叮咚!您有一份六大必做安全操作清单,请查收
云安全态势管理(CSPM)开启免费试用
362 4
叮咚!您有一份六大必做安全操作清单,请查收