在我的一个存储库(存储库 A)中,有一个脚本可以获取另一个存储库(存储库 B,而不是我的存储库)上的文件内容。因此,我想在每次对存储库 B 进行推送时触发对存储库 A 的 GitHub 操作。我没有看到这种情况 on GitHub actions trigger documentation,这可能吗?
答案 0 :(得分:0)
编辑:这将不起作用,因为 OP 没有对 repo B 的推送访问
我认为您可以通过使用 repository_dispatch
event 获得您想要的东西。当使用正确的有效负载 ping 端点时,这实际上会触发工作流。
来自文档:
<块引用>要触发自定义 repository_dispatch
网络钩子事件,您必须向 GitHub API 端点发送 POST
请求并提供 event_type
名称来描述活动类型。要触发工作流运行,您还必须将工作流配置为使用 repository_dispatch
事件。
我最好的猜测是,您想要的解决方案可以通过创建 2 个工作流来实现:1 个在运行 on: repository_dispatch
的 Repo A 中,1 个在运行 on: push
并包含命中 Repo 的步骤的 Repo B 中A 的 API(例如使用 curl
)。这将为您提供以下事件:
on: push
工作流被触发,并运行命中存储库 A 的 API 端点(例如使用 curl
)的步骤。on: repository_dispatch
工作流。答案 1 :(得分:0)
您可以每天使用 cron 执行一个脚本,以启动或不启动您的工作流程。脚本可以轻松读取另一个存储库上次提交的日期。
检测上次提交的时间不到一天
使用此脚本,退出代码为 0,仅当最后一次提交不到一天时。
#!/bin/bash
exit $(curl -s https://api.github.com/repos/wikimedia/mediawiki/commits/REL1_36 | jq -r "((now - (.commit.author.date | fromdateiso8601) ) / (60*60*24) | trunc)")
每天用 cron 执行脚本
name: trigger
on:
schedule:
- cron: '30 5 * * *'
workflow_dispatch:
jobs:
check:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- run: ./isUpdated.sh
当从昨天开始有新提交时开始您的工作流程
name: Your workflow
on:
workflow_run:
workflows: ["trigger"]
types: [completed]
workflow_dispatch:
jobs:
check:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- name: Checkout
uses: actions/checkout@v2
- run: echo ok