์ฅ์ : Github repository ์ฐ๋ฉฐ ๋ฐ๋ก ๋ฐฐํฌ๊น์ง ์ด์ด์ ํ ์ ์๋ค.
๋จ์ : ์ฌ๋ฌ ๋ธ๋์น์ workflow ํ์ผ์ด ์์ ๋ ์ด๋ค๊ฒ์ด ์คํ๋๋๊ฑด์ง ์๊ธฐ๊ฐ ์ด๋ ต๋ค?
ย
Name
Action์ ์ด๋ฆ. ์ด ์ด๋ฆ์ ์ ์ ํด์ผ Action์์ ์ฌ๋ฌ job์ด ์คํ๋ ๋ ๊ตฌ๋ถํ๊ธฐ๊ฐ ์ฝ๋ค.
name: Jira Transition to InProgress
์๋์ฒ๋ผ Actionํญ์์ ๋ถ๋ฅ๋ ์ํ๋ก๋ ๋ณผ ์ ์์ผ๋ ์ด๋ฆ ๋ํ ์ ์ง์ด์ผํ๋ค.
ย
On: Trigger
on์ผ๋ก ์์ํ๋ ๋ถ๋ถ
create์ branches๋ฉด ๊ทธ ์๋ ๋ธ๋์น๊ฐ ์์ฑ๋ ๋
โ ์๋ ์ฝ๋๊ฐ ํ๋๊ฒ์ feature, feat, fix, hotfix๋ก ์์ํ๋ ๋ธ๋์น๊ฐ ์๊ฒผ์ ๋ ์๋ job์ ์คํํ๋ ๊ฒ
on: create: branches: - 'feature/**' - 'feat/**' - 'fix/**' - 'hotfix/**'
Env
action YAML ๋ด์์ ์ฌ์ฉํ ํ๊ฒฝ๋ณ์๋ฅผ ์ ์ํ๊ณ ๊ทธ ์ดํ Jobs์์ ์ด๊ฑธ ๋ณ์์ฒ๋ผ ์ฌ์ฉ ํ ์ ์์.
env: AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }} AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} AWS_DEFAULT_REGION: ap-northeast-2 AWS_DEFAULT_OUTPUT: json IMAGE: datepop-micro
์ฌ์ฉํ ๋๋ ์๋์ฒ๋ผ $๋ณ์๋ช
์ผ๋ก ์ฌ์ฉํจ.
echo ::set-output name=URL::$AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE
ย
Jobs
์ค์ ๋ก Action์ด ํ ์ผ์ ์ ๋ฆฌํ๋ ๊ฒ.
ํ๋์ Action์ ์ฌ๋ฌ๊ฐ์ง job์ ์ค์ ํ ์ ์์. ์ฌ๊ธฐ์๋ ํ๋์ โjiraTicketToInProgressโ Job๋ง ์กด์ฌํจ.
ํ๋์ Job๋ด์์๋ ์ฌ๋ฌ step์ ํตํด ์ฌ๋ฌ ๋์๋ค์ ํฌํจ ์ํฌ์๊ฐ ์์.
์ฌ๊ธฐ์๋ Login โ Find in Jira ticket โ Transition issue to Done์ผ๋ก step ์ค์ ์ ํจ.
ย
์๋ ๋ด์ฉ ์ค ${{ secrets.JIRA_BASE_URL }} ์ด๋ ๊ฒ ๋์ด์๋๊ฒ ์๋๋ฐ ์ด๊ฑด ๋ค Github repository์์ secret key๋ก ์ค์ ์ด ๊ฐ๋ฅํ๋ค. ๊ทธ๋์ ๋ฏผ๊ฐํ ์ ๋ณด๋ค์ secret์ฒ๋ฆฌํด์ ํ์ผ๋ก ์ ์ฅํ๊ณ ์ด ํ์ผ์ ๊ณต๊ฐ์ ์ผ๋ก ๊ณต๊ฐ๋ฅผ ํด๋ ์๊ด์๋ค.
Secret ์ค์ ์ Github โ Settings โ Secrets โ Actions์ ๋ค์ด๊ฐ ๋ค์ New repository secret ๋ฒํผ์ ๋๋ฌ์ ์ค์ ํ๋ฉด ๋๋ค.
ย
ย
์์ฑ๋ jobs YAML ํ์ผ โผ
jobs: jiraTicketToInProgress: name: Transition Issue to In Progress runs-on: ubuntu-latest steps: - name: Login uses: atlassian/gajira-login@master env: JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }} JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }} JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }} - name: Find in Jira ticket uses: atlassian/gajira-find-issue-key@master id: jira-ticket with: string: ${{ github.event.ref }} - name: Transition issue to Done if: steps.jira-ticket.outputs.issue != '' uses: atlassian/gajira-transition@master with: issue: ${{ steps.jira-ticket.outputs.issue }} transition: "In Progress"
ย
์์ ๋ด์ฉ์ ๋ค ํ๋์ ํ์ผ๋ก ํฉ์น๋ฉด
name: Jira Transition to InProgress on: create: branches: - 'feature/**' - 'feat/**' - 'fix/**' - 'hotfix/**' jobs: jiraTicketToInProgress: name: Transition Issue to In Progress runs-on: ubuntu-latest steps: - name: Login uses: atlassian/gajira-login@master env: JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }} JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }} JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }} - name: Find in Jira ticket uses: atlassian/gajira-find-issue-key@master id: jira-ticket with: string: ${{ github.event.ref }} - name: Transition issue to Done if: steps.jira-ticket.outputs.issue != '' uses: atlassian/gajira-transition@master with: issue: ${{ steps.jira-ticket.outputs.issue }} transition: "In Progress"
ย
step ์ฑ์ ๋ฃ๋ ๋ฐฉ๋ฒ
Github marketplace์ ๋ค์ด๊ฐ์ ์ํ๋ action ์ฐพ๊ธฐ
ย
aws๋ง ๊ฒ์ํด๋ด๋ ๊ฒฐ๊ณผ๊ฐ ๋ง์ด ๋์ด.
ย
์๋ฅผ๋ค์ด lambda ํจ์ ๋ฐฐํฌํ๋๊ฑธ ๋ง๋ ๋ค๋ฉด ์์ ๋ชฉ๋ก ์ค ์๋ action์ ์ฐธ๊ณ .
๋ณดํต ๋ชจ๋ action marketplace์ ๋ค์ด๊ฐ๋ฉด ์์ ๊ฐ์ด ์์ ๋ค์ด ์ ๋์ค๊ธฐ ๋๋ฌธ์ ๋ณด๊ณ ๊ทธ๋๋ก ๋ฐ๋ผํ๋ฉด ๋๋ค.
ย
ย
ย
ย