首页 > 解决方案 > 从 GitHub Actions 更新 GitHub 问题

问题描述

我试图使用一些我想在 docker 容器中运行的简单脚本(我已经在本地使用)进行 GitHub 操作。

新问题应触发事件以基于某些处理使用其内容更新所述问题。这方面的一个例子可能是:

假设我在脚本中定义了一个标签列表,它会检查问题的标题并向问题添加标签。

我仍在阅读 GitHub Action 的文档,所以我可能没有完全了解,但我似乎遇到的问题是,在我的本地机器中,这些脚本使用ghcli 来执行此类任务(例如添加标签)。所以我想知道是否需要gh在该 docker 容器中安装它,或者是否有更好的方法来更新问题?我非常愿意再次使用 GitHub 的事件负载和其他东西从头开始制作这些脚本,只要我不必用 TypeScript 编写。

我查看了文档,找不到任何关于更新问题的内容。在这里也找不到类似的问题;可能是我错过了一些东西,所以如果是这种情况,请指导我查阅相关材料,我将非常感激。

标签: githubgithub-actions

解决方案


一个选项可能是(如您所说)在该 docker 容器中安装 GH,然后运行 ​​GH 命令。

使用容器的示例:

jobs:
 build:
  runs-on: ubuntu-latest
  container: 
    image: docker://myrepoandimagewithghinstalled
  steps:
    - name: Github CLI Authentication
       run: gh auth login --hostname <your hostname>
    - name: Github CLI commands execution samples
       run: |
         gh command1
         gh command2
         gh command3

另一种选择是直接在操作系统上安装 GH(例如 ubuntu-latest),进行身份验证,然后使用“运行”选项执行 GH 命令。

在操作系统上安装 GH 的示例:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
       - name: Install Github CLI
          run: |
            sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-key C99B11DEB97541F0
            sudo apt-add-repository https://cli.github.com/packages
            sudo apt update
            sudo apt install gh
       - name: Github CLI Authentication
          run: gh auth login --hostname <your hostname>
       - name: Github CLI commands execution samples
         run: |
           gh command1
           gh command2
           gh command3

最后,您还可以创建一个使用Github API 服务的脚本来更新 ISSUE并使用 run 选项执行脚本。

在工作流程中执行 Python 脚本的示例:

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: checkout repo content
        uses: actions/checkout@v2 # checkout the repository content to github runner.
      - name: setup python
        uses: actions/setup-python@v2
        with:
          python-version: 3.8 #install the python needed
      - name: execute py script # run the run.py to get the latest data
        run: |
          python run.py
        env:
          key: ${{ secrets.key }} # if run.py requires passwords..etc, set it as secrets
      - name: export index
        .... # use crosponding script or actions to help export.

推荐阅读