π₯οΈ λ°±μλ/CICD
[CICD] ν€μλ κΈ°λ° μ΄μ μλ¦Ό μλν
OR15A
2024. 3. 23. 01:48
3. κ°λ¨ν μν¬νλ‘μ° λ§λ€κΈ°
ν€μλ κΈ°λ° μ΄μ μλ¦Ό μλν λ§λ€κΈ°
- μ΄μκ° μμ±λ λ μ€ν
- issue event
- types: [opened]
- νΉμ ν€μλκ° ν¬ν¨λλ©΄ μ¬λμΌλ‘ 곡μ νκΈ°
- if critical -> μ¬λμ critical-issue μ±λλ‘ κ³΅μ
- if cormal -> μ¬λμ normal-issue μ±λλ‘ κ³΅μ
- ν€μλλ λ³λμ¬νμ΄ μκΈΈ μ μμ
볡μ‘μ±μ μ€μ΄λ λ°©λ²
- ν€μλ κ΄λ¦¬νκΈ°
- (X) κΉνμ‘μ μν¬νλ‘μ°μμ κ΄λ¦¬
- (O) μΈλΆμμ ν€μλ κ΄λ¦¬ ex) keyword.txt
- slack step μ¬μ© ꡬ쑰
- ν€μλλ§νΌ μ¬μ©νλ©΄ κ΄λ¦¬κ° μ΄λ €μ
- slack step 1κ°λ‘ μ¬μ©νκΈ°
- λμΌν μ¬λ μΉν
μ΄λ¦ μ¬μ©νκΈ°
- λμΌν μν¬λ¦Ώ μ΄λ¦ μ¬μ©νκΈ°
- ${{ secret.SLACK_WEBHOOK }}
- ꡬμ±
- job 2κ° μ¬μ©νκΈ°
- job-1 : get keyword (keyword-list.txt μ¬μ©. μ΄λ₯ μ λͺ©μ΄ ν€μλ 리μ€νΈμ μλ€λ©΄ κ·Έ κ°μ μμνμΌλ‘ ꡬμ±)
- job-2 : slack (get keywordμ μμνμ λ°μμ environmentλ‘ μ¬μ©)
- job 2κ° μ¬μ©νκΈ°
- μ΄μμ λν Environmentλ§λ€κΈ°
- κ° Envieonmment μμ secret λ§λ€κΈ°
- μ΄μ μ±λμ ν€μλ - μ¬λ ν΄λΉ μ±λ url λ‘ secretλ§λ€κΈ°
name: issue-notify
on:
issues:
types: [opened]
jobs:
get-keyword:
runs-on: ubuntu-latest
outputs:
level: ${{ steps.get-keyword.outputs.level }}
steps:
- name: checkout
uses: actions/checkout@v4
- name: get keyword
id: get-keyword
run: |
echo level=Undefined >> $GITHUB_OUTPUT
keywords=$(cat keyword-list.txt)
for keyword in $keywords; do
if [[ "${{ github.event.issue.title }}" =~ "$keyword" ]]; then
echo level=$keyword >> $GITHUB_OUTPUT
fi
done
- name: get output
run: |
echo ${{ steps.get-keyword.outputs.level }}
slack:
needs: [get-keyword]
if: needs.get-keyword.outputs.level != 'Undefined'
runs-on: ubuntu-latest
# environment: ${{ needs.get-keyword.outputs.level }}
strategy:
matrix: # 맀νΈλ¦μ€λ₯Ό μ¬μ©νλ©΄ μκ°μ μΌλ‘ μ΄λ€ νκ²½μ μ¬μ©νλμ§ νμ
ν μ μμ
environment: ["${{ needs.get-keyword.outputs.level }}"]
environment: ${{ matrix.environment }}
steps:
- name: slack
uses: slackapi/slack-github-action@v1.24.0
with:
payload: |
{
"attachments": [
{
"pretext": "issue alert message",
"color": "28a745",
"fields": [
{
"title": "Level : ${{ needs.get-keyword.outputs.level }}",
"short": true,
"value": "issue url : ${{ github.event.issue.html_url }}"
}
]
}
]
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK