环境变量与机密

面向机器学习的 CI/CD

Ravi Bhadauria

Machine Learning Engineer

上下文(Contexts)

  • 访问预定义变量与数据
    • 工作流运行
    • 变量
    • 运行器环境
    • 作业与步骤
  • 使用表达式语法 ${{ context.XXX }} 访问上下文
  • 本课程使用的上下文
    • github:工作流运行信息
    • env:在工作流中设置的变量
    • secrets:工作流可用的名称与值
    • job:当前作业信息
    • runner:运行机器信息
1 https://docs.github.com/en/actions/learn-github-actions/contexts
面向机器学习的 CI/CD

变量

  • 以纯文本存储非敏感信息
    • 编译器标志、用户名、文件路径
  • env 键下声明
  • 全局/本地作用域取决于定义层级
  • env 上下文以 ${{ env.ENV_VAR }} 访问
name: Greeting on variable day
# Global env
env:
  Greeting: Hello

jobs: greeting_job: runs-on: ubuntu-latest # Local env: scoped to greeting_job env: First_Name: Ravi
steps: - run: | echo "${{ env.Greeting }} \ ${{ env.First_Name }}."
面向机器学习的 CI/CD

机密

  • 以加密方式存储敏感信息
    • 密码、API 密钥
  • 通过 secrets 上下文访问值
    • ${{ secrets.SuperSecret }}
  • 可作为输入或环境变量存储
steps:
  - name: Hello world action
    env: # Set the secret as an env var
      super_secret: ${{ secrets.SuperSecret }}

with: # Or as an input super_secret: ${{ secrets.SuperSecret }}
  • 打印机密

    steps:
    - name: Print secret
      run: |
        echo "my secret is \
        ${{ secrets.SuperSecret }}"
    
  • 输出

工作流日志图像,显示实际机密值被 *** 替代

面向机器学习的 CI/CD

设置机密

仓库主页中显示"Settings"选项卡的图像

  • 前往 Security > Secrets and variables > Actions

显示如何选择"Secrets"选项卡的图像

面向机器学习的 CI/CD

设置机密

显示如何设置机密名称和值的图像

面向机器学习的 CI/CD

GITHUB_TOKEN 机密

  • GitHub Actions 提供的内置机密
  • 用于执行工作流操作
    • 克隆仓库并获取代码
    • 打开/关闭 issue 与拉取请求
    • 在 issue 和拉取请求中评论
  • 在每个 GitHub Actions 工作流中自动可用
    • 通过 ${{ secrets.GITHUB_TOKEN }} 访问
  • 可按需精细配置权限
面向机器学习的 CI/CD

示例:在拉取请求中评论

  • 授予在 PR 中写评论的权限
permissions: 
  pull-requests: write
  • 使用 GITHUB_TOKEN 授权
permissions: 
  pull-requests: write 
steps:
  - name: Comment PR
    uses: thollander/actions-comment-pull-request@v2
    with:
      GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      message: |
        Hello world ! :wave:

拉取请求页面片段,显示 github-actions 机器人自动评论

1 https://gist.github.com/rbhadauria29/6d7fc51944b4fb48425c3c307fec77c6
面向机器学习的 CI/CD

Passons à la pratique !

面向机器学习的 CI/CD

Preparing Video For Download...