Dan*_*lan 11 github repository github-actions
我们对第三方服务进行了大量的健康检查。我们希望它们定期运行,因为当它们出现故障时,它会像代码中的错误一样影响我们的应用程序。知道“是他们而不是我们”可以显着减少故障排除时间。
我们已经通过 github 操作设置了此运行状况检查并计划运行,但我们希望每个第三方服务都有一个运行状况检查。这样,有关失败的 slack 消息将非常具体地说明发生了什么情况。但这会创建大量重复的 yml 内容。
我发现了一个叫做github 复合操作的东西,它似乎是为了解决这个问题,但我找不到有关复合操作是否可以存在于私有存储库中的信息。
uses密钥的文档仅在提及存储库时才提及公共存储库。有没有办法在私有存储库中进行复合操作并使用它?
我尝试制作他们的 hello world 示例,运行它,并且运行正确。然后我将操作存储库设为私有,并且使用操作构建的存储库失败并显示:
Unable to resolve action `user/repo@v1`, repository not found
Run Code Online (Sandbox Code Playgroud)
Ben*_* W. 12
更新(2023 年 2 月):现在无需跳过任何额外的障碍即可实现这一点,这使得Debos 的答案成为迄今为止最简单的方法。
gmode最近添加的答案使用 SSH 密钥而不是个人访问令牌,避免了 PAT 授予的权限过于广泛的问题,我建议使用该方法而不是我的答案中描述的方法。
原答案:
您必须首先使用个人访问令牌签出包含您的操作的存储库,然后使用签出位置的相对路径:
- name: Check out main repository
uses: actions/checkout@v2
- name: Get composite run steps repository
uses: actions/checkout@v2
with:
repository: myorg/myaction
# Select revision
ref: v1.0.0
# Personal access token to check out private repository
token: ${{ secrets.PAT_TOKEN }}
# Indicate where to check action out to
path: .github/myaction
- name: Run action from private repo
uses: ./.github/myaction
Run Code Online (Sandbox Code Playgroud)
这假设这myaction是一个位于action.yml其根目录中的存储库。如果情况并非如此,则uses必须调整最后一步以使用正确的路径。
请注意,如果您使用dependentabot 更新操作,则私有操作引用将不会更新。
在未来的某个时候,来自内部存储库的操作将得到本机支持,请从 GitHub 路线图查看此问题,但是截至 2021 年 10 月,该问题已更新为“github enterprise”标志,这意味着它仅适用于GitHub 企业版用户。
我使用了来自 GitHub 的复合操作小示例,并将其修改为使用基于本杰明出色答案构建的私人存储库。
jobs:
hello_world_job:
runs-on: ubuntu-latest
name: A job to say hello
steps:
- uses: actions/checkout@v3
- name: Get composite run steps repository
uses: actions/checkout@v3
with:
# action file is located in another repo called workflows at /workflows/actions/action.yaml
repository: my-org/workflows
# ref: mybranch # in case it's not master branch
# use deploy key instead of personal access token
ssh-key: ${{ secrets.WORKFLOWS_DEPLOYMENT_KEY }}
path: .github/workflows
- id: foo
uses: ./.github/workflows/actions
with:
who-to-greet: 'Mona the Octocat'
- run: echo random-number ${{ steps.foo.outputs.random-number }}
shell: bash
Run Code Online (Sandbox Code Playgroud)
一些注意事项:
actions/checkout在复合操作 yaml 中使用。即使操作本身成功,后操作也会失败| 归档时间: |
|
| 查看次数: |
9129 次 |
| 最近记录: |