다른 저장소에서 새 릴리스를 만들 때 GitHub 작업 트리거


9

다른 저장소가 새 릴리스를 만들 때 트리거되는 GitHub 워크 플로우를 작성하려고합니다.

: 문서에서 단락이 될 것이다 .on.event_name.typesevent_namerelease

문제는 : release다른 저장소 의 이벤트 를 참조 할 수있는 방법이 있습니까?


1
나는 그렇게 믿지 않습니다. 릴리스를 작성하는 저장소에 액세스해야합니다.
osowskit

답변:


7

다른 리포지토리의 릴리스 이벤트를 참조 할 수있는 방법이 있습니까?

이 기능이 존재하지 않는지 확인하십시오.

릴리스를 작성하는 저장소에 액세스 할 수있는 경우 웹훅 이벤트를 호출하여 on: repository_dispatch다른 저장소에서 실행 되는 워크 플로우를 트리거 할 수 있습니다. 리포지토리 디스패치이 경우 작업이 도움이 될 수 있습니다.

릴리스를 작성하는 저장소에 액세스 할 수 없으면 (여기서는 가정합니다) 이것이 내 제안입니다. 먼저 추적하려는 리포지토리의 릴리스 버전 태그를 정기적으로 확인하는 다음 워크 플로를 만듭니다. 현재 저장소에 저장 한 릴리스 버전과 다른 경우 새 버전이 커밋됩니다.

수정 된 파일이 작동하려면 대상 파일을 먼저 준비해야합니다 (예 : release-versions / swagger-ui-latest.txt). 또한 repodefault 대신 범위 가 지정된 토큰 을 사용해야합니다 GITHUB_TOKEN. 이에 대한 자세한 내용은 GitHub에서 원점으로 푸시 작업 을 참조하십시오.

name: Get latest release version
on:
  schedule:
    - cron:  '0 10 * * *'
jobs:
  get-version:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
        with:
          token: ${{ secrets.REPO_SCOPED_TOKEN }}
      - name: Fetch release version
        run: |
          curl -sL https://api.github.com/repos/swagger-api/swagger-ui/releases/latest | \
          jq -r ".tag_name" > release-versions/swagger-ui-latest.txt
      - name: Check for modified files
        id: git-check
        run: echo ::set-output name=modified::$(if git diff-index --quiet HEAD --; then echo "false"; else echo "true"; fi)
      - name: Commit latest release version
        if: steps.git-check.outputs.modified == 'true'
        run: |
          git config --global user.name 'Your Name'
          git config --global user.email 'your-email@users.noreply.github.com'
          git commit -am "New release version"
          git push

그런 다음 디렉토리에 대한 변경 사항이있을 때만 실행되는 두 번째 워크 플로를 만들 수 있습니다 release-versions.

on:
  push:
    paths:
      - 'release-versions/*'

이 워크 플로우에서 저장된 버전을 사용하여 필요한 자산을 가져오고 필요한 처리를 수행 할 수 있습니다.


1
슬프게도 당신은 내 직감을 확인했습니다. 또한, 당신의 접근 방식을 공유해 주셔서 감사합니다.
PierDipi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.