在GitHub Actions中手动触发工作流程有几种方法,主要是通过使用workflow_dispatch
事件来实现。下面我将详细说明如何设置和使用这个功能。
1. 更新工作流程文件以允许手动触发
首先,你需要在你的工作流程文件中添加workflow_dispatch
事件来启用手动触发。这可以通过编辑位于你的仓库中.github/workflows
目录下的YAML工作流程文件来完成。例如,如果你有一个名为ci.yml
的工作流程文件,你可以按如下方式修改:
yamlname: CI on: push: branches: - main pull_request: branches: - main workflow_dispatch: # 添加这一行来启用手动触发 jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Run a one-line script run: echo Hello, world!
在上面的例子中,workflow_dispatch:
已被添加到on
键下。这意味着工作流程现在既可以在推送到main分支时自动触发,也可以通过手动触发来启动。
2. 通过GitHub UI 手动触发工作流程
完成工作流程文件的更改并提交到你的仓库后,你可以通过GitHub的用户界面手动触发工作流程。
操作步骤如下:
- 登陆你的GitHub账户,并转到包含工作流程的仓库。
- 点击仓库的"Actions"标签,进入GitHub Actions界面。
- 在左侧你会看到不同的工作流程,选择你想要手动触发的工作流程。
- 在工作流程的顶部,你会看到一个有
Run workflow
按钮,点击它。 - 如果需要,选择一个分支,然后点击
Run workflow
来触发工作流程。
3. 使用额外的输入选项
workflow_dispatch
事件还支持定义输入参数,这可以让你在手动触发工作流程时提供额外的运行选项。例如:
yamlon: workflow_dispatch: inputs: logLevel: description: 'Log level' required: true default: 'warning' environment: description: 'Environment name' required: true
通过这种方式,当你在GitHub UI中触发工作流程时,会有额外的选项要求你填写,如日志级别和环境名称。
总结
通过添加workflow_dispatch
事件到工作流程文件,并通过GitHub的UI界面操作,我们可以手动触发GitHub Actions的工作流程。这种方法对于需要手动控制或在特定情况下运行工作流程非常有用。在GitHub Actions中,您可以手动触发一个workflow。这种方法特别适用于需要根据特定需求或在没有代码提交的情况下运行workflow。手动触发workflow可以通过以下几种方式实现:
1. 使用 workflow_dispatch
事件
GitHub允许在workflow文件中使用workflow_dispatch
事件来手动触发workflow。首先,您需要在workflow文件中指定workflow_dispatch
作为触发事件。例如:
yamlname: 手动触发示例 on: workflow_dispatch: inputs: logLevel: description: 'Log level' required: true default: 'warning' tags: description: 'Comma separated project tags' jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Run a one-line script run: echo Hello, world! - name: Run a multi-line script run: | echo Add other actions to build, echo test, and deploy your project.
在GitHub仓库的主页面,点击仓库名称上方的 "Actions" 选项卡,选择你想要手动触发的workflow,然后在右侧会看到一个 "Run workflow" 按钮。点击这个按钮后,你可以选择分支并输入必要的输入参数(如果workflow配置了输入参数),然后点击“Run workflow”来触发执行。
2. 使用 repository_dispatch
事件
另一种方法是使用repository_dispatch
事件,它允许外部事件触发GitHub Actions。首先,在workflow文件中添加repository_dispatch
作为触发事件:
yamlname: 仓库事件触发示例 on: repository_dispatch: types: [build] jobs: build: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v2 - name: Run a script run: echo "This workflow was triggered by a repository dispatch event."
然后,您可以使用GitHub API通过发送POST请求到以下URL来触发workflow:
shellhttps://api.github.com/repos/<owner>/<repo>/dispatches
您需要提供有效的GitHub令牌,并在请求中包括事件类型和客户端负载,例如:
bashcurl -X POST https://api.github.com/repos/<owner>/<repo>/dispatches \ -H 'Authorization: token YOUR_GITHUB_TOKEN' \ -H 'Accept: application/vnd.github.v3+json' \ -d '{"event_type": "build", "client_payload": {"env": "production"}}'
总结
手动触发GitHub Actions提供了灵活性,允许开发者根据需要启动workflow。通过配置workflow_dispatch
或repository_dispatch
事件,开发者可以轻松地在没有代码变更的情况下运行CI/CD流程。这在需要额外控制流程执行时非常有用,例如部署到生产环境或进行特定配置的测试。在GitHub Actions中手动触发workflow可以通过几种方式来实现,我将详细介绍两种常用的方法:使用workflow_dispatch事件和使用repository_dispatch事件。
1. 使用workflow_dispatch事件
workflow_dispatch
是一个非常直接的方法,允许用户从GitHub仓库的Actions选项卡或通过GitHub API来手动运行workflow。要使用这种方法,您需要在workflow文件中明确声明 workflow_dispatch
。
步骤一: 在您的workflow文件(一般位于 .github/workflows/
目录下的YAML文件)中添加 workflow_dispatch:
。例如:
yamlname: Manual Workflow on: workflow_dispatch: # Optionally, we can also define inputs here: inputs: logLevel: description: 'Log level' required: true default: 'warning' jobs: build: runs-on: ubuntu-latest steps: - name: Check out repository uses: actions/checkout@v2 - name: Run a one-line script run: echo "Manual dispatch event triggered!"
步骤二: 提交并推送workflow文件的更改到您的仓库。
步骤三: 在GitHub仓库页面,点击上方的 "Actions" 选项卡,选择左侧相应workflow,然后点击右上角的 "Run workflow" 按钮,选择分支并可以填写输入参数(如果有的话),最后点击 "Run workflow" 来触发workflow。
2. 使用repository_dispatch事件
另一个选择是使用 repository_dispatch
事件。这个方法允许更多的自定义和外部系统的集成,因为它通过发送一个POST请求到GitHub API来触发workflow。
步骤一: 在workflow文件中声明 repository_dispatch
作为触发条件:
yamlname: API Triggered Workflow on: repository_dispatch: types: [build-event] jobs: build: runs-on: ubuntu-latest steps: - name: Check out repo uses: actions/checkout@v2 - name: Run a script run: echo "Repository dispatch event triggered!"
步骤二: 使用curl或其他工具发送POST请求到GitHub API以触发workflow。您需要生成一个personal access token(需勾选 repo
和 workflow
权限),并在请求中使用这个token:
bashcurl -X POST -H "Accept: application/vnd.github.v3+json" \ -H "Authorization: token YOUR_PERSONAL_ACCESS_TOKEN" \ https://api.github.com/repos/USERNAME/REPOSITORY_NAME/dispatches \ -d '{"event_type": "build-event"}'
注意: 在这个请求中,event_type
应与workflow文件中定义的类型相匹配。
总结
这两种方法都允许开发者和项目维护者有更大的灵活性来手动触发workflow。通过 workflow_dispatch
,可以简单地从GitHub UI触发workflow,而 repository_dispatch
则提供了通过API触发,使得可以从外部系统集成和自动化workflow的执行。