$ ls ~yifei/notes/

GitHub Actions 的简单使用和调试

Posted on:

Last modified:

GitHub Actions 使用 yaml 配置,必须放置在 .github/workflows 目录。

# 名字
name: hello-world-example
# 环境变量
env:
  FOO: bar
# 触发条件
on:
  # 最常用的是 push 条件,如果留空,表示每次 push 都执行。
  # 任意满足这里列出的一个条件即会匹配。也就是 master 或者 v tag 都会执行。
  push:
    # 表示在这些分支推送的时候执行
    branches:
      - master
      - feature/*
    # 在这些 tag 推送的时候执行
    tags:
      - v*
  # 在有人提交 PR 时运行
  pull_request:
    branches:
      - master
  # 定时运行
  schedule:
    - cron: '*/15 * * * *'
# 要运行的任务
jobs:
  # 任务名字
  say-hello:
    # 也可以在这里设置环境变量
    env:
      FOO: bar
    # 运行环境
    runs-on: ubuntu-latest
    steps:
      # 可以使用一些现成的操作,比如 checkout 当前仓库
      - uses: actions/checkout@v2
      # 安装 node
      - uses: actions/setup-node@v1
        # actions 的参数
        with:
          node-version: '15.8.0'
      - name: Say Hello
        env:
          FOO: bar
        run: echo "Hello $FOO"
      - name: Do stuff
        run: |
          echo "Step 1..."
          echo "Step 2..."
          echo "Step 3..."
      - name: Say Goodbye
        run: echo "Goodbye!"
  # 任务之间默认是并发执行的
  another-job:
    # 依赖另一个 job
    needs: say-hello
    strategy:
      # CI 的常见应用是在不同的环境下测试,使用 matrix 来定义一组环境
      matrix:
        os: [ubuntu-16.04, ubuntu-18.04]
        node: [16, 18, 20]
        # 排除掉某个环境
        exclude:
          - os: ubuntu-16.04
            node: 16
        # 额外包含某个环境
        include:
          - os: macos-latest
            node: 16
    # 使用变量
    runs-on: ${{matrix.os}}
    steps:
      # 读取密钥
      - name: use secrets
        run: echo ${{secrets.ACCESS_KEY}}
      # 条件执行
      - name: Run only for pulls
        if: ${{ github.event == 'pull'}}
        run: echo pulling

常见问题

如何调试?

可以使用 tmate ssh 进机器,查看情况

name: CI
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Setup tmate session
      uses: mxschmitt/action-tmate@v3

Windows 上遇到 OOM 问题

调大虚拟内存(PageFile)就行了

- name: configure Pagefile
  uses: al-cheb/configure-pagefile-action@v1.2
  with:
      minimum-size: 16GB
      maximum-size: 16GB
      disk-root: "C:"

References

  1. https://www.actionsbyexample.com
  2. https://github.com/marketplace/actions/debugging-with-tmate
  3. https://github.com/actions/runner-images/issues/2642
WeChat Qr Code

© 2016-2022 Yifei Kong. Powered by ynotes

All contents are under the CC-BY-NC-SA license, if not otherwise specified.

Opinions expressed here are solely my own and do not express the views or opinions of my employer.

友情链接: MySQL 教程站