亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Github Actions學習:初學者指南

概述

本文将带你深入了解Github Actions,这是一个强大的持续集成与部署工具,能够自动化执行代码构建、测试和部署等任务。通过详细讲解其架构、工作原理及高级特性,帮助开发者提高开发效率和代码质量。

Github Actions学习:初学者指南
Github Actions简介

Github Actions是什么

Github Actions 是一个持续集成与部署(CI/CD)服务,它允许开发者自动执行构建、测试和部署代码的操作。通过使用 Github Actions,开发者可以在代码提交或推送后自动执行一系列任务,从而提高代码质量和开发效率。

Github Actions的作用

Github Actions的主要作用包括:

  • 自动化构建:自动执行代码的构建过程,确保代码在不同环境下的兼容性。
  • 自动化测试:自动化运行各种测试用例,确保代码质量。
  • 自动化部署:自动将构建成功的代码部署到生产环境或测试环境。
  • 代码审查:自动化执行代码审查,确保代码符合项目规范。
  • 代码质量检查:自动化运行代码质量检查工具,提供代码质量反馈。
  • 构建文档:自动构建和更新项目文档,保持文档的时效性。

Github Actions与CI/CD的关系

Github Actions是CI/CD工具的一种实现。CI(持续集成)是指在代码提交后自动构建并运行测试,以确保代码的质量。CD(持续部署/交付)是指在代码通过所有测试后自动部署到生产环境。通过使用Github Actions,开发者可以实现从代码提交到部署的全自动化流程,从而提高开发效率和代码质量。

Github Actions的架构及工作原理

事件触发

Github Actions的工作流程始于事件触发。事件可以是代码提交、推送、拉取请求、发布新版本等。这些事件触发了工作流的执行。

示例:代码提交触发构建和测试。

on:
  push:
  pull_request:

工作流

工作流由定义在.github/workflows/目录下的YAML文件配置。这些文件定义了工作流的各个步骤,包括运行的命令、使用的环境以及触发的条件等。

示例:定义一个工作流文件的基本结构。

name: Build and Test

on:
  push:
  pull_request:

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Setup Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '14.x'
      - name: Install dependencies
        run: npm ci
      - name: Build
        run: npm run build
      - name: Test
        run: npm run test

工作流文件结构

一个完整的Github Actions工作流文件通常包含以下几个部分:

  • name:工作流的名称。
  • on:定义触发工作流的事件。
  • jobs:定义工作流中的各个任务。每个任务可以包含多个步骤。
  • steps:定义任务中的具体操作。每个步骤可以调用预定义的动作(使用uses)或执行自定义的命令(使用run)。

示例:一个完整的YAML工作流文件。

name: Build and Test

on:
  push:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Setup Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '14.x'
      - name: Install dependencies
        run: npm ci
      - name: Build
        run: npm run build
      - name: Test
        run: npm run test
如何创建和使用Github Actions

Github仓库中的工作流文件

工作流文件通常存放在仓库的.github/workflows/目录下。每个文件定义了一个独立的工作流。工作流文件必须以YAML格式编写,并且遵循YAML语法。

编写第一个Github Actions工作流

要创建一个基本的工作流文件,需要定义工作流的名称、触发条件和运行的任务。以下是一个简单的示例,用于在代码提交时自动运行构建和测试任务。

示例:在代码提交时运行构建和测试任务。

name: Build and Test

on:
  push:
  pull_request:

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Setup Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '14.x'
      - name: Install dependencies
        run: npm ci
      - name: Build
        run: npm run build
      - name: Test
        run: npm run test

测试工作流文件

测试工作流文件的有效性可以通过手动提交代码到仓库来验证。当提交代码时,工作流文件将被触发并执行定义的操作。如果工作流文件正确无误,则构建和测试过程将顺利进行。

示例:提交新的代码到仓库。

git add .
git commit -m "Add new feature"
git push origin main
常用任务及示例

自动化构建与测试

自动化构建与测试是Github Actions中最常见的任务之一。通过在工作流文件中定义构建和测试命令,可以确保每次代码提交时都进行构建和测试。

示例:在一个Node.js项目中自动化构建和测试。

name: Build and Test

on:
  push:
  pull_request:

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Setup Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '14.x'
      - name: Install dependencies
        run: npm ci
      - name: Build
        run: npm run build
      - name: Test
        run: npm run test

自动化部署

自动化部署可以将构建成功的代码自动部署到生产或测试环境。通过在工作流文件中定义部署命令,可以简化部署流程并减少人为错误。

示例:使用actions/deploy-azure-web-app部署到Azure Web App。

name: Deploy to Azure

on:
  push:
    branches: [ main ]

jobs:
  deploy:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Setup Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '14.x'
      - name: Install dependencies
        run: npm ci
      - name: Build
        run: npm run build
      - name: Deploy to Azure
        uses: azure/webapps-deploy@v2
        with:
          app-name: 'my-app'
          slot-name: 'production'
          publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}

代码质量检查

代码质量检查可以确保代码符合项目规范。通过在工作流文件中添加代码质量检查工具,可以自动执行代码审查和检查。

示例:使用eslint进行代码质量检查。

name: Code Quality Check

on:
  push:
  pull_request:

jobs:
  check:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Setup Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '14.x'
      - name: Install dependencies
        run: npm ci
      - name: Run ESLint
        run: npm run lint

代码覆盖报告

代码覆盖报告可以提供代码覆盖率信息,帮助开发者了解哪些代码被测试覆盖,哪些没有被覆盖。通过在工作流文件中添加代码覆盖率工具,可以自动生成代码覆盖报告。

示例:使用istanbul生成代码覆盖报告。

name: Generate Code Coverage Report

on:
  push:
  pull_request:

jobs:
  coverage:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Setup Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '14.x'
      - name: Install dependencies
        run: npm ci
      - name: Build
        run: npm run build
      - name: Test
        run: npm run test -- --coverage
      - name: Upload coverage report
        uses: codecov/codecov-action@v2
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
Github Actions的高级特性

使用外部依赖

在工作流文件中,可以使用外部依赖来执行特定任务。外部依赖通常是以预定义的动作形式存在的,这些动作可以执行复杂的任务,而无需编写复杂的脚本。

示例:使用actions/setup-python@v2来设置Python环境,并运行自定义的脚本。

name: Run Custom Script

on:
  push:
  pull_request:

jobs:
  custom-script:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Setup Python
        uses: actions/setup-python@v2
        with:
          python-version: '3.8'
      - name: Install dependencies
        run: pip install -r requirements.txt
      - name: Run custom script
        run: python my-script.py

自定义环境变量

通过工作流文件中的环境变量,可以向工作流中的任务传递自定义值。这些值可以在运行时动态设置,并在任务中使用。

示例:定义并使用自定义环境变量。

name: Custom Environment Variables

on:
  push:
  pull_request:

env:
  MY_VARIABLE: "my-value"

jobs:
  custom-env:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Print custom variable
        run: echo "Custom variable: $MY_VARIABLE"

事件条件分支

通过在工作流文件中定义不同的事件分支,可以实现更复杂的触发逻辑。例如,可以根据不同的分支或标签来触发不同的工作流。

示例:根据不同的分支触发不同的工作流。

name: Branch Specific Workflows

on:
  push:
    branches:
      - main
      - develop

jobs:
  main-branch:
    if: github.ref == 'refs/heads/main'
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Setup Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '14.x'
      - name: Build
        run: npm run build

  develop-branch:
    if: github.ref == 'refs/heads/development'
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Setup Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '14.x'
      - name: Test
        run: npm run test
Github Actions的调试与维护

查看工作流日志

查看工作流日志可以帮助开发者诊断和解决工作流中的问题。可以通过GitHub的Web界面查看工作流日志,也可以通过GitHub API获取日志信息。

示例:查看工作流日志。

在GitHub的Web界面中,导航到仓库的工作流页面,选择相应的运行,查看日志。

# 使用GitHub API获取日志信息
curl -H "Authorization: token <your_token>" https://api.github.com/repos/<owner>/<repo>/actions/runs/<run_id>/logs

优化工作流性能

优化工作流性能可以通过减少依赖的安装时间、优化测试和构建命令、并行运行任务等方式实现。通过合理配置工作流任务,可以提高代码构建和测试的速度。

示例:并行运行任务以加速构建和测试。

name: Parallel Build and Test

on:
  push:
  pull_request:

jobs:
  build:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: ['12.x', '14.x']

    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Setup Node.js
        uses: actions/setup-node@v2
        with:
          node-version: ${{ matrix.node-version }}
      - name: Install dependencies
        run: npm ci
      - name: Build
        run: npm run build

  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        node-version: ['12.x', '14.x']

    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Setup Node.js
        uses: actions/setup-node@v2
        with:
          node-version: ${{ matrix.node-version }}
      - name: Install dependencies
        run: npm ci
      - name: Test
        run: npm run test

管理和更新工作流

管理和更新工作流包括更新工作流文件中的配置、添加或删除任务、以及维护工作流的版本控制。通过定期审查和更新工作流文件,可以确保工作流的稳定性和可靠性。

示例:更新工作流文件以添加新任务。

name: Updated Workflow

on:
  push:
  pull_request:

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Setup Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '14.x'
      - name: Install dependencies
        run: npm ci
      - name: Build
        run: npm run build

  lint:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Setup Node.js
        uses: actions/setup-node@v2
        with:
          node-version: '14.x'
      - name: Install dependencies
        run: npm ci
      - name: Run ESLint
        run: npm run lint

通过以上内容,你可以开始使用Github Actions来自动化构建、测试和部署代码。希望这篇指南能够帮助你更好地理解和使用Github Actions。如果你想进一步学习Github Actions的高级用法,可以参考Github Actions官方文档

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消