Допустим, у меня есть два репозитория, parentrepo и childrepo. В дочернем репо есть действие github (пример из документы):
name: GitHub Actions Demo
on: workflow_dispatch
jobs:
Explore-GitHub-Actions:
runs-on: ubuntu-latest
steps:
- run: echo "? The job was automatically triggered by a ${{ github.event_name }} event."
- run: echo "? This job is now running on a ${{ runner.os }} server hosted by GitHub!"
- run: echo "? The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}."
- name: Check out repository code
uses: actions/checkout@v3
- run: echo "? The ${{ github.repository }} repository has been cloned to the runner."
- run: echo "?️ The workflow is now ready to test your code on the runner."
- name: List files in the repository
run: |
ls ${{ github.workspace }}
- run: echo "? This job's status is ${{ job.status }}."
Я добавил репозиторий childrepo в качестве подмодуля репозитория parentrepo. Теперь из действия GitHub в родительском репо я хочу запустить задание в подмодуле дочернего репо:
name: build
on:
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Checkout submodules
run: git submodule update --init --recursive
- name: Build
uses: ./childrepo/.github/workflows/action.yml
но он не работает с ошибкой:
Error: Can't find 'action.yml', 'action.yaml' or 'Dockerfile' under '/home/runner/work/parentrepo/parentrepo/childrepo/.github/workflows'. Did you forget to run actions/checkout before running your local action?
Как мне это сделать?
Ключевое слово uses
не предназначено для запуска действий в другом репозитории. Он может только получить действие или повторно используемый рабочий процесс из другого репо и использовать его для себя.
Для этого нет родного функционала. Однако диспетчеризация рабочего процесса в другом репозитории возможна через API. См. Как вызвать workflow_dispatch
из Github API?