软件工程

Github Actions学习:新手入门教程

本文主要是介绍Github Actions学习:新手入门教程,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
概述

本文详细介绍了Github Actions的基本概念、使用场景和配置教程,帮助读者掌握如何高效地使用这一持续集成和持续交付(CI/CD)工具。

Github Actions简介

Github Actions 是一个持续集成和持续交付(CI/CD)工具,允许用户自动执行构建、测试和部署等任务。它允许开发人员在代码仓库中定义一系列自动化任务,这些任务会在特定事件触发时自动执行。例如,每当代码被推送或合并到特定分支时,可以自动执行构建和测试任务,确保代码的质量。

Github Actions的作用和优势

  • 自动化工作流:可以定义多个自动化工作流,覆盖从代码提交到部署的整个流程。
  • 灵活且可扩展:支持自定义脚本和第三方工具集成,可以灵活地扩展自动化工作流。
  • 事件驱动:支持多种触发事件,如代码推送、拉取请求、分支创建等,确保任务在正确的时间点执行。
  • 一致性和可追溯性:确保每次构建和测试都是在一个一致的环境中执行,便于问题的重现和调试。
  • 安全性:支持使用 Secrets 来安全地存储敏感信息,如 API 密钥和密码等。

Github Actions基本概念

Workflow

一个 Workflow 是一个定义了如何执行的纯文本文件,其文件扩展名为 .yml。每个 Workflow 文件定义了一系列 Job,这些 Job 会在某个特定事件触发时执行。例如,当代码被推送到主分支时,可以触发一个构建和测试的 Workflow。

示例代码:

name: Build

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Check out repository
      uses: actions/checkout@v3

    - name: Set up Node.js
      uses: actions/setup-node@v3
      with:
        node-version: '14.x'

    - name: Install dependencies
      run: npm install

    - name: Build
      run: npm run build

Job

Job 是 Workflow 的组成部分,它定义了一系列需要执行的步骤。每个 Job 可以在不同的运行器上执行,运行器可以是操作系统或特定的环境。Job 之间可以依赖,也可以并行执行。

示例代码:

name: Build

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Check out repository
      uses: actions/checkout@v3

    - name: Set up Node.js
      uses: actions/setup-node@v3
      with:
        node-version: '14.x'

    - name: Install dependencies
      run: npm install

    - name: Build
      run: npm run build

Step

Step 是 Job 的组成部分,它定义了单个任务的执行方式。每个 Step 可以执行一个命令或运行一个脚本。Step 之间可以通过环境变量进行通信,前一个 Step 的输出可以作为后一个 Step 的输入。

示例代码:

name: Build

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Check out repository
      uses: actions/checkout@v3

    - name: Set up Node.js
      uses: actions/setup-node@v3
      with:
        node-version: '14.x'

    - name: Install dependencies
      run: npm install

    - name: Build
      run: npm run build

Action

Action 是一个可以执行的函数,可以是内置的或第三方的。内置 Action 是由 Github 提供的通用 Action,可以用于通用的任务,如构建、测试、部署等。第三方 Action 是由社区提供或自定义的,可以满足更复杂的需求。Action 可以在 Step 中调用,用于执行特定的任务。

Github Actions的使用场景

自动化构建

自动化构建是 Github Actions 最常见的应用场景之一。通过配置 Workflow,可以在代码提交后自动执行构建任务,确保代码的编译和打包过程是自动化的和一致的。这对于维护复杂项目非常重要,特别是当项目中包含多个模块和依赖时。

示例代码:

name: Build

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Check out repository
      uses: actions/checkout@v3

    - name: Set up Node.js
      uses: actions/setup-node@v3
      with:
        node-version: '14.x'

    - name: Install dependencies
      run: npm install

    - name: Build
      run: npm run build

自动化测试

自动化测试是确保代码质量的重要步骤。通过配置 Workflow,可以在代码提交后自动执行测试任务,确保代码的质量。这包括单元测试、集成测试和端到端测试等。

示例代码:

name: Test

on: [push]

jobs:
  test:
    runs-on: ubuntu-latest

    steps:
    - name: Check out repository
      uses: actions/checkout@v3

    - name: Set up Node.js
      uses: actions/setup-node@v3
      with:
        node-version: '14.x'

    - name: Install dependencies
      run: npm install

    - name: Run tests
      run: npm test

自动化部署

自动化部署是将构建好的应用部署到生产环境的过程。通过配置 Workflow,可以在代码提交后自动执行部署任务,确保应用的部署是自动化的和一致的。这可以减少人为错误,提高部署的可靠性。

示例代码:

name: Deploy

on: [push]

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
    - name: Check out repository
      uses: actions/checkout@v3

    - name: Set up Node.js
      uses: actions/setup-node@v3
      with:
        node-version: '14.x'

    - name: Install dependencies
      run: npm install

    - name: Build
      run: npm run build

    - name: Deploy to production
      run: |
        echo "Deploying to production..."
        # 部署命令示例
        npm run deploy

Github Actions配置教程

创建第一个Workflow

创建第一个 Workflow 需要创建一个新的纯文本文件,文件名以 .yml 结尾,例如 ci.yml。该文件应放在代码仓库的根目录下,或在 .github/workflows 目录中。

示例代码:

name: CI

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Check out repository
      uses: actions/checkout@v3

    - name: Set up Node.js
      uses: actions/setup-node@v3
      with:
        node-version: '14.x'

    - name: Install dependencies
      run: npm install

    - name: Run tests
      run: npm test

使用内置和第三方Actions

Github Actions 提供了许多内置的 Action,可以用于常见的任务,如构建、测试和部署。开发人员也可以使用第三方 Action,这些 Action 是由社区提供的,可以满足更复杂的需求。

使用内置Action示例:

name: CI

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Check out repository
      uses: actions/checkout@v3

    - name: Set up Node.js
      uses: actions/setup-node@v3
      with:
        node-version: '14.x'

    - name: Install dependencies
      run: npm install

    - name: Run tests
      run: npm test

使用第三方Action示例:

name: CI

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Check out repository
      uses: actions/checkout@v3

    - name: Set up Node.js
      uses: actions/setup-node@v3
      with:
        node-version: '14.x'

    - name: Install dependencies
      run: npm install

    - name: Run tests
      run: npm test

    - name: Deploy to production
      uses: actions/deploy-to-production@v1
      with:
        token: ${{ secrets.PRODUCTION_TOKEN }}
        url: https://example.com/deploy

调试Workflow

调试 Workflow 是确保 Workflow 正确执行的重要步骤。可以通过查看 Workflow 的日志来了解 Workflow 的执行情况,日志中包含了 Workflow 的执行状态、输出和错误信息。

查看日志示例:

  • 登录 Github 账号并进入代码仓库。
  • 点击 "Actions" 标签页,可以看到所有已定义的 Workflow。
  • 选择一个 Workflow,可以查看该 Workflow 的执行历史。
  • 选择一个具体的运行,可以查看该运行的日志,了解其执行过程和输出。

Github Actions实用技巧

使用环境变量

环境变量是 Workflow 中的重要组成部分,可以用于传递参数和配置信息。环境变量可以在 Workflow 文件中定义,也可以通过 Secrets 传递。

示例代码:

name: CI

on: [push]

env:
  NODE_ENV: development
  API_URL: https://api.example.com

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Check out repository
      uses: actions/checkout@v3

    - name: Set up Node.js
      uses: actions/setup-node@v3
      with:
        node-version: '14.x'

    - name: Install dependencies
      run: npm install

    - name: Run tests
      run: npm test

使用 Secrets

Secrets 是一种特殊类型的环境变量,用于安全地存储敏感信息,如 API 密钥和密码等。Secrets 可以在 Github 仓库的 Settings 中定义,然后在 Workflow 文件中使用。

示例代码:

name: CI

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Check out repository
      uses: actions/checkout@v3

    - name: Set up Node.js
      uses: actions/setup-node@v3
      with:
        node-version: '14.x'

    - name: Install dependencies
      run: npm install

    - name: Run tests
      run: npm test

    - name: Deploy to production
      uses: actions/deploy-to-production@v1
      with:
        token: ${{ secrets.PRODUCTION_TOKEN }}
        url: https://example.com/deploy

教程示例:自动化构建和测试

接下来,我们将通过一个实际案例来展示如何使用 Github Actions 自动化构建和测试一个 Node.js 项目。

项目结构:

my-node-app/
  ├── .github/
  │   └── workflows/
  │       └── ci.yml
  ├── package.json
  ├── src/
  │   └── index.js
  └── tests/
      └── index.test.js

Workflow 文件:ci.yml

name: CI

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Check out repository
      uses: actions/checkout@v3

    - name: Set up Node.js
      uses: actions/setup-node@v3
      with:
        node-version: '14.x'

    - name: Install dependencies
      run: npm install

    - name: Run tests
      run: npm test

package.json

{
  "name": "my-node-app",
  "version": "1.0.0",
  "scripts": {
    "test": "jest"
  },
  "dependencies": {
    "express": "^4.17.1"
  },
  "devDependencies": {
    "jest": "^26.6.3"
  }
}

src/index.js

const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('Hello, World!');
});

module.exports = app;

tests/index.test.js

const request = require('supertest');
const app = require('../src/index');

describe('App', () => {
  it('should GET /', async () => {
    const res = await request(app).get('/');
    expect(res.status).toBe(200);
    expect(res.text).toBe('Hello, World!');
  });
});

运行流程:

  1. 当代码被推送到仓库时,触发 Workflow。
  2. Workflow 会执行一系列任务,包括克隆仓库、设置 Node.js 环境、安装依赖和运行测试。
  3. 如果测试通过,部署过程会继续;如果测试失败,部署过程会被终止。

常见问题解答

常见错误及解决方法

  • Workflow 未触发:
    • 检查 on 字段是否正确配置,确保触发事件和分支匹配。
    • 检查是否有语法错误或配置错误。
  • Workflow 执行失败:
    • 查看 Workflow 日志,找到失败的步骤。
    • 根据错误信息排查问题,修复代码或配置。
  • 环境变量未正确传递:
    • 确保环境变量在 Workflow 文件中正确定义。
    • 使用 Secrets 时,确保 Secrets 已在 Github Settings 中正确配置。

Github Actions使用技巧汇总

  • 使用 if 条件语句:可以根据条件控制步骤的执行。
    steps:
  • name: Run tests
    if: ${{ github.ref == 'refs/heads/main' }}
    run: npm test
  • 使用 envsecrets:确保敏感信息的安全存储和传递。
    env:
    API_URL: ${{ secrets.API_URL }}

steps:

  • name: Deploy to production
    with:
    token: ${{ secrets.PRODUCTION_TOKEN }}
    url: https://example.com/deploy
  • 使用 jobs 并行执行:可以并行执行多个任务,提高效率。

    jobs:
    build:
    runs-on: ubuntu-latest
    steps: [...]
    
    test:
    runs-on: ubuntu-latest
    steps: [...]
  • 使用 outputs 参数传递结果:可以在一个 Job 中生成结果,并传递给其他 Job 或 Step。
    steps:
  • name: Get application version
    id: version
    run: echo "::set-output name=version::v1.0.0"

  • name: Use application version
    run: echo "Version is ${{ steps.version.outputs.version }}"

通过这些技巧和示例,可以更好地理解和使用 Github Actions,构建高效和可靠的自动化工作流。

这篇关于Github Actions学习:新手入门教程的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!