Giithub Action에서 다른 창고로부터 변경 통지를 받고 PR Workflow 작성
하고 싶은 일
창고 B가 통지를 받은 후 패키지.제이슨 업데이트 PR 만들고 싶어개인 창고 의존이라면 이 수요가 적을 수 있지만 회사 내부에서 창고를 분할하면 업데이트 누락이 발생할 수 있다.나는 그것을 기계적으로 방지하고 싶다.하지만 수동으로 합병하기 싫어서 PR이 제작될 때까지.이 정도의 온도감을 실현하고 싶다.
또한 창고 B는 창고 A의 통지에 의존하지 않고 이 임무를 수동으로 수행할 수 있기를 희망한다.
(스포일러 후 수동 미션을 수행한 후 창고 간 통지를 수행했다.)
(주로 구성요소와 레시피 소개로 코드 자체는 이동하는 코드부터 잘라 붙여넣기 때문에 그대로 움직이지 않을 수 있습니다. 이후 확인이 필요함)
설치 방법
GiitHub Actions의 Trigger로서 Workflow Dispatch와 Repository Dispatch가 있습니다.Workflow Dispatch는 Actions 관리 화면에서 수동으로 실행되며, Repository Dispatch는 GiitHub API로부터 알림 실행 트리거를 받습니다.
통지 패키지.json측workflow 업데이트
.github/workflows/update-packages.yaml
name: Update Packages
on:
repository_dispatch:
types: [update-packages] # with client_payload.packages
workflow_dispatch:
inputs:
packages:
description: ''
required: true
default: ''
jobs:
update-packages:
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v2
- name: setup Node
uses: actions/setup-node@v1
- name: Install
run: npm install
- Update packages by workflow_dispatch
if: ${{ github.event.inputs.packages != null }}
run: npm update ${{ github.event.inputs.packages }}
- Update packages by repository_dispatch
if: ${{ github.event.client_payload.packages != null }}
run: npm update ${{ github.event.client_payload.packages }}
- name: Create Pull Request
id: cpr
uses: peter-evans/create-pull-request@v3
with:
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: 'Update packages'
committer: GitHub <[email protected]>
author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com>
signoff: false
branch: feature/update-package
branch-suffix: timestamp
delete-branch: true
title: 'Update Packages by CI'
body: |
@${{ github.actor }}
```
${{ github.event.inputs.packages }}
${{ github.event.client_payload.packages }}
```
- name: Check Pull Request
run: |
echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}"
echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}"
알림자의workflow
.github/workflows/publish-and-notify.yaml
Giithub Private Token을 발행하고 ↑에서 정의한 Repository를 대상으로 아래의 curl을 클릭하면 업데이트할 수 있습니다.개인 액세스 토큰 사용
회신 권한이 필요합니다.
curl -v -H "Authorization: token <GITHUB_PRIVATE_TOKEN>" -H "Accept: application/vnd.github.everest-preview+json" "https://api.github.com/repos/<name>/<repo>/dispatches" -d '{"event_type": "update-packages", "client_payload": {"packages": "[email protected]"}}'
이거 보고해.dispatch를 진행하려는merge trigger에서 repostitory dispatch를 실행합니다.주의사항: 시크릿.GITHUB_TOKIO 권한이 부족합니다.디스패치를 트리거할 수 없습니다.토큰을 발행해야 한다.
이번엔 github package registry에서publish로 하고 있어요.npm 영패가 필요 없는 것은 회사 내부의 창고 간의 일이다.npm에 대해publish를 진행하려면 npm의token이 필요합니다.
Publish to npm · Actions · GitHub Marketplace
name: publish-and-dispatch
on:
push:
branches:
- master
jobs:
release:
name: Setup
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v2
- name: setup Node
uses: actions/setup-node@v1
with:
registry-url: "https://npm.pkg.github.com"
- name: install
run: npm install
- name: build
run: npm run build
- name: publish
run: |
npx can-npm-publish --verbose && npm publish || echo "Does not publish"
env:
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: package-version-to-git-tag
uses: pkgdeps/action-package-version-to-git-tag@v1
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
github_repo: ${{ github.repository }}
git_commit_sha: ${{ github.sha }}
git_tag_prefix: "v"
- name: dispatch update-packages
uses: peter-evans/repository-dispatch@v1
with:
repository: github_name/repo
token: ${{ secrets.GITHUB_PERSONAL_TOKEN }}
event-type: update-pkgs
시크릿에서 GITHUBPERSONAL_TOEN이 설정되어 있음을 전제로 합니다.대상은 자기가 아니라 대상이다게으름을 많이 피웠어요. 사실 바뀔 때만 퍼블릭을 하고 싶은데, 별거 아니에요..
Reference
이 문제에 관하여(Giithub Action에서 다른 창고로부터 변경 통지를 받고 PR Workflow 작성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/mizchi/articles/3117b92a834531361fc8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)