为了账号安全,请及时绑定邮箱和手机立即绑定

Github Actions实战:新手入门指南

概述

本文将详细介绍如何使用Github Actions进行自动化构建、测试和部署,并涵盖新手入门所需的基础知识和实战案例。文章不仅讲解了Github Actions的工作原理和优势,还提供了详细的环境搭建和配置指南。通过实战案例,读者可以学习如何自动构建与部署静态网站、Node.js应用及自动化代码审查和依赖更新等任务。

Github Actions实战:新手入门指南
Github Actions简介

Github Actions是什么

Github Actions是指可以在GitHub上进行自动化工作流构建、运行和管理的一系列工具和服务。这些工作流可以自动执行各种任务,从构建、测试到部署应用,都可以通过GitHub Actions来自动化。

Github Actions的优势和用途

  1. 自动化集成: 可以自动化各种开发流程如构建、测试、部署等。
  2. 集成度高: 无缝集成到现有的GitHub项目中,包括pull请求和issue。
  3. 灵活配置: 用户可以根据需要自定义工作流,以满足不同的应用需求。
  4. 广泛支持: 支持多种语言和技术栈,包括但不限于JavaScript、Python、Ruby、Java等。
  5. 免费使用: 免费用户可以使用GitHub Actions的免费额度,超出部分需付费。

Github Actions的工作原理

Github Actions的工作流由一个或多个jobs组成,每个job可以包含多个steps。一个job可以是任何可执行的操作,如构建、测试、部署等。每个job运行在它的独立环境中,可以使用多种操作,如运行shell命令、使用预构建的镜像等。

工作流配置文件workflow.yml定义了这些jobs和steps,文件通常位于仓库的.github/workflows/目录下。配置文件使用YAML格式编写,使用on:关键字定义触发事件,如pushpull_request等。

Github Actions环境搭建

创建GitHub仓库

  1. 登录到GitHub账号。
  2. 点击右上角的"+"号,选择“New repository”。
  3. 填写仓库名称、描述等信息,选择是否公开,是否初始化仓库等。
  4. 点击“Create repository”按钮。

准备开发环境

  • 安装Node.js,版本应为12或更高。
  • 安装Git,以确保可以克隆仓库。
  • 安装Docker(可选),以便在Docker容器中运行actions。

安装并配置GitHub CLI

GitHub CLI(命令行工具)可以让用户通过命令行与GitHub进行交互,简化了GitHub上的操作。安装GitHub CLI可以极大地提高效率。

  1. 访问GitHub官方文档下载相应平台的安装包。
  2. 安装完成后,运行gh auth login命令,根据提示登录GitHub账号。
  3. 使用gh repo create命令创建新的仓库,或者使用gh repo view查看已有的仓库。
# 登录GitHub CLI
gh auth login

# 创建新仓库
gh repo create gh-actions-demo

配置GitHub CLI

为了进一步配置GitHub CLI,您可能需要设置用户信息和仓库信息,例如:

# 设置用户名和邮箱
gh auth user --name "Your Name" --email "your.email@example.com"

# 设置仓库信息
gh repo view gh-actions-demo
Github Actions基础语法

工作流程的基本结构

一个GitHub Actions的工作流程由YAML文件定义,通常位于.github/workflows/目录下。一个基本的workflow.yml文件结构如下:

name: Build and Test
on: [push]
jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Install dependencies
        run: npm install
      - name: Build
        run: npm run build
      - name: Test
        run: npm test

工作流程的关键字和语法

  • name: 定义工作流程的名字。
  • on: 指定触发工作流的事件,如pushpull_request等。
  • jobs: 包含一个或多个任务,每个任务包含多个步骤。
  • steps: 每个任务的执行步骤,可以使用内置的actions或自定义脚本。
  • uses: 用于引用内置的GitHub Actions。
  • run: 用于执行shell命令或脚本。
  • env: 定义环境变量。

构建和测试的任务配置

一个典型的构建和测试任务配置如下:

name: Build and Test
on: [push]
jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Install dependencies
        run: npm install --production
      - name: Build
        run: npm run build
      - name: Test
        run: npm test
Github Actions实战案例

自动构建与部署静态网站

假设你有一个静态网站项目,使用gh-pages发布到GitHub Pages。可以使用GitHub Actions来自动化这个过程。

  1. 定义workflow.yml配置文件,使用actions/checkout和actions/deploy-pages。
name: Deploy Website
on: [push]
jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Build Website
        run: npm run build
      - name: Deploy Website
        uses: peaceiris/actions-gh-pages@v3
        with:
          # 默认分支是master或main。如果不指定,默认是pages
          branch: gh-pages
          # 指定源文件夹
          source: ./dist
  1. 确保项目有npm run build命令来构建静态文件。
  2. 本地执行npm run build,确保构建过程没有问题。
  3. 提交并推送workflow.yml文件到GitHub仓库。

自动构建与测试Node.js应用

假设你有一个Node.js应用,可以使用GitHub Actions来自动化构建和测试过程。

  1. 定义workflow.yml配置文件,使用actions/checkout、actions/node和actions/npm。
name: Test and Build
on: [push]
jobs:
  build-and-test:
    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'
          cache: 'npm'
      - name: Install dependencies
        run: npm ci
      - name: Run Tests
        run: npm test
      - name: Build project
        run: npm run build
  1. 确保项目有npm run testnpm run build命令来运行测试和构建项目。
  2. 本地执行npm run testnpm run build,确保这些命令可以正常工作。
  3. 提交并推送workflow.yml文件到GitHub仓库。

自动化代码审查和依赖更新

可以使用GitHub Actions自动化代码审查和依赖更新的过程,确保代码质量和安全。

  1. 定义workflow.yml配置文件,使用actions/checkout和actions/codeql-analysis。
name: CodeQL Analysis
on: [pull_request]
jobs:
  analyze:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: CodeQL Analysis
        uses: github/codeql-action/analyze@v1
  1. 提交并推送workflow.yml文件到GitHub仓库。
  2. 创建一个pull request,GitHub Actions将自动运行代码审查并生成结果。
Github Actions进阶技巧

使用自定义工作流程

用户可以根据需要自定义工作流,如添加环境变量、选择特定的运行器类型等。例如,可以为不同的环境设置不同的工作流文件。

name: Deploy to Production
on:
  push:
    branches:
      - master
jobs:
  build-and-deploy:
    runs-on: self-hosted
    env:
      NODE_ENV: production
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Install dependencies
        run: npm install
      - name: Build
        run: npm run build
      - name: Deploy
        run: npm run deploy

设置环境变量和加密敏感信息

可以使用env关键字设置环境变量,使用secrets关键字加密敏感信息。

name: Database Backup
on:
  schedule:
    - cron: '0 0 * * *'
jobs:
  backup:
    runs-on: ubuntu-latest
    env:
      DATABASE_USER: ${{ secrets.DB_USER }}
      DATABASE_PASSWORD: ${{ secrets.DB_PASSWORD }}
    steps:
      - name: Backup Database
        run: mysqldump -u $DATABASE_USER -p$DATABASE_PASSWORD my_db > backup.sql

使用GitHub Actions触发其他服务

GitHub Actions可以与其他服务集成,如Docker Hub、Slack、Jenkins等。例如,当代码被推送到GitHub仓库时,可以触发Docker Hub来构建新的镜像。

name: Docker Build and Push
on:
  push:
    branches:
      - master
jobs:
  build-and-push:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Setup Docker
        uses: docker/build-push-action@v2
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}
          registry: docker.io
          repository: myrepo/myimage
          tags: latest
          buildargs:
            NODE_ENV: production
          build-context: .
          push: true

项目配置与管理

配置GitHub仓库中的环境变量和加密敏感信息:

  1. 访问仓库的“Settings”选项卡。
  2. 选择“Secrets”或“Repository secrets”。
  3. 添加新的密钥,例如DB_USERDB_PASSWORD
  4. workflow.yml文件中引用这些密钥。
env:
  DATABASE_USER: ${{ secrets.DB_USER }}
DATABASE_PASSWORD: ${{ secrets.DB_PASSWORD }}
Github Actions常见问题及解决

问题排查与解决思路

  • 检查事件触发是否正常:确保on关键字中的事件配置正确,例如pushpull_request等。
  • 检查网络问题:确保GitHub Actions的执行环境能够访问相关的依赖和服务。
  • 检查权限问题:确保GitHub Actions有足够的权限来执行操作,例如访问特定的仓库、环境变量等。
  • 检查日志信息:查看GitHub Actions的日志信息,找到具体的错误信息。

错误处理与日志查看

GitHub Actions的日志信息可以在GitHub仓库的工作流运行页面查看,有助于诊断问题。以下是一些常见的错误信息及其解决方法:

  • 权限不足:检查触发事件的权限配置,确保有足够的权限。
  • 网络连接问题:检查网络配置,确保GitHub Actions可以访问相关的依赖和服务。
  • 依赖项问题:检查项目的依赖项配置,确保依赖项正确安装。
  • 脚本错误:检查运行的脚本,确保命令正确无误。

例如,查看一个运行失败的工作流的详细日志:

# 查看工作流运行的日志
gh run view <run_id>

GitHub Actions性能优化技巧

  • 缓存依赖项:使用actions/cache缓存依赖项,减少每次构建的时间。
  • 并行执行任务:利用GitHub Actions的并行执行能力,提高构建和测试的效率。
  • 选择合适的运行器:根据任务的需要选择合适的运行器类型,如ubuntu-latestself-hosted等。

例如,使用缓存来加速构建过程:

name: Build with Cache
on: [push]
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'
          cache: 'npm'
      - name: Install dependencies
        run: npm ci
      - name: Build project
        run: npm run build
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消