๐ Github Actions: ๋ค๋ฅธ ์ํฌํ๋ก์์ ์ํฌํ๋ก๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ
์์ ์ ์ฌ์ฉํ๋ฉด ๋จ์ผ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ ํ๊ฒฝ์์ ๊ฐ๋จํ ๋ช ๋ น์ ์ ์ํ๊ณ ์คํํ ์ ์์ต๋๋ค.
๊ฐ๋จํ bash ํ์ผ๋ก ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ ์ ์์ง๋ง GitHub ์์ ์ผ๋ก ์ ์ํ๋ฉด ํจ์ฌ ๋ ์ฝ๊ฒ ์คํ(๋ฐ ์ ์ง ๊ด๋ฆฌ)ํ ์ ์์ต๋๋ค.
์ด ๋ฌธ์์์๋ ๊ฐ๋จํ๊ณ ์ฌ์ด ๋ฐฉ๋ฒ์ผ๋ก ๋ค๋ฅธ ์ํฌํ๋ก์์ ์ํฌํ๋ก๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ ๋ฐฉ๋ฒ์ ์์๋ด ๋๋ค.
**
์ ์ ์กฐ๊ฑด:
**
๋ค๋ฅธ ์ํฌํ๋ก์์ ์ํฌํ๋ก๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ ค๋ฉด ๋ค์์ด ํ์ํฉ๋๋ค.
์ด์ ์ฐ๋ฆฌ๊ฐ ์๋ํ๊ฒ ๋ง๋๋ ๋ฐ ํ์ํ ๊ฒ์ด ๋ฌด์์ธ์ง ์๊ณ ๋๋ฉด ์๋ํ๋๋ก ํฉ์๋ค :D
PAT ์์ฑ:
์ฌ์ฉ์ ๊ณ์ ์ ๋ํ ๊ฐ์ธ ์ก์ธ์ค ํ ํฐ์ ์์ฑํ๋ ค๋ฉด ์ฌ์ฉ์ ํ๋กํ ํญ์ผ๋ก ์ด๋ํ๊ณ > ๋๋กญ๋ค์ด ๋ฉ๋ด์์ "์ค์ "์ต์ > ๊ฐ์ธ ์ก์ธ์ค ํ ํฐ์ ์ ํํด์ผ ํฉ๋๋ค.
์๋ก "๊ฐ๋ฐ์ ์ค์ "์ ์ ํํ์ญ์์ค.
"์ ํ ํฐ ์์ฑ"์ ํด๋ฆญํฉ๋๋ค.
์ค๋ช ๋ฉ๋ชจ๋ฅผ ์ ๊ณตํ๊ฑฐ๋ ๋น์๋๊ณ ์ํ๋ PAT ๋ฒ์๋ฅผ ์ ํํฉ๋๋ค.
Note: PAT is secret and should not be shared; this is to prevent unauthorized access to your account and other repos.
repo_01 ๋ฆฌํฌ์งํ ๋ฆฌ ๊ถํ์ secrets ์น์ ์ PAT๋ฅผ ์ถ๊ฐํด์ผ ํฉ๋๋ค.
์๋จ ํ์ ๋ฉ๋ด์์ "์ค์ "ํญ์ผ๋ก ์ด๋ํฉ๋๋ค.
์ผ์ชฝ ํ์ ํจ๋์์ "๋น๋ฐ"์ ํด๋ฆญํ ๋ค์ "์์ "์ ์ ํํฉ๋๋ค.
์ด์ "์ ์ ์ฅ์ ๋น๋ฐ"์ ์ ํํ์ญ์์ค.
๋น๋ฐ ์ด๋ฆ์ผ๋ก "ACTIONS_KEY"๋ฅผ ์ ๋ ฅํ๊ณ "๋น๋ฐ"ํ๋์ "PAT"๋ฅผ ์ ๋ ฅํฉ๋๋ค.
์ํฌํ๋ก ๋ง๋ค๊ธฐ:
์ด์ ๋ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ํ ์ํฌํ๋ก๋ฅผ ๋ง๋ญ๋๋ค.
๋จผ์ ์ฒซ ๋ฒ์งธ ๋ฆฌํฌ์งํ ๋ฆฌ์ "์์ "์ผ๋ก ์ด๋ํ๊ณ "์ ์ํฌํ๋ก"๋ฅผ ํด๋ฆญํฉ๋๋ค.
ํ์์ ๋ฐ๋ผ "์ํฌํ๋ก ์ง์ ์ค์ "๋๋ ์ ์๋ ์ํฌํ๋ก ์ค ํ๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
repo_02 ๋ฆฌํฌ์งํ ๋ฆฌ์์ ๋์ผํ ๋จ๊ณ๋ฅผ ์ํํ์ฌ ๋ ๋ฒ์งธ ์ํฌํ๋ก๋ฅผ ๋ง๋ญ๋๋ค.
๋ง์ง๋ง์ผ๋ก ๋ ์ํฌํ๋ก๊ฐ ์๋ก ํธ์ถํ์ฌ ์๋ก ์ํธ ์์ฉํ๋๋ก ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
repo_01(ํธ๋ฆฌ๊ฑฐ ํ๋ฆ)์์ ๋ค์ ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Replace userName with the Girhub userName and repoName with the actual Repository name name and the related url to the repository.
name: workflow_01
on:
workflow_dispatch:
inputs:
workflow_02:
description: 'ูWorkflow 2 which will be triggered'
required: true
default: 'workflow_02'
workflow2_github_account:
description: 'GitHub Account Owner'
required: true
default: ':userName'
workflow2_repo_github:
description: 'repo-name'
required: true
default: ':repoName'
jobs:
build:
runs-on: ubuntu-latest
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- name: Test
run: |
curl -X POST https://api.github.com/repos/:userName/:repoName/dispatches \
-H 'Accept: application/vnd.github.everest-preview+json' \
-u ${{ secrets.ACTIONS_KEY }} \
--data '{"event_type": "Trigger Workflow", "client_payload": { "repository": "'"$GITHUB_REPOSITORY"'" }}'
- uses: actions/checkout@v3
๊ทธ๋ฆฌ๊ณ repo_02์์ action ํ์ผ์ ๋ค์ ์ฝ๋๋ฅผ ์ถ๊ฐํฉ๋๋ค.
name: workflow_02
on: [repository_dispatch]
jobs:
cypress-run:
runs-on: ubuntu-latest
steps:
- run: echo "Triggering Wokflow 2"
- name: Checkout
uses: actions/checkout@v2
๋ง์ง๋ง์ผ๋ก ์ฌ์ฉํด๋ด ์๋ค :D
repo_01 > ์์ > workflow_01 > ์ํฌํ๋ก ์คํ์ผ๋ก ์ด๋ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ํ๋ค! ์ฐ๋ฆฌ๊ฐ ํด๋์ด
Workflow_02๊ฐ ์ด์ workflow_01์ ์ํด ํธ๋ฆฌ๊ฑฐ๋๊ณ ์์ต๋๋ค.
workflow_01
์ํฌํ๋ก์ฐ_02
๊ทธ๊ฒ ๋ค์ผ! ๐
github ํธ๋ฆฌ๊ฑฐ ๋ฐ ์ด๋ฒคํธ์ ๋ํด ์์ธํ ์์๋ณด๋ ค๋ฉด:
https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows
์ฐธ์กฐ:
GitHub
LetsDevOps
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐ Github Actions: ๋ค๋ฅธ ์ํฌํ๋ก์์ ์ํฌํ๋ก๋ฅผ ํธ๋ฆฌ๊ฑฐํ๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://dev.to/moaaz_adel/github-actions-a-simple-way-to-trigger-workflow-from-another-workflow-1b55ํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค