
π― Computer Scienceμ λν΄ μ 리ν©λλ€.
νμ΄νλΌμΈ λͺ¨λν°λ§
λΉλ λ° λ°°ν¬κ° μΌμ΄λλ κ²μ μ΄μμκ° μΈμ§ν μ μλλ‘ μλ¦Ό μ€μ
μ½λ 리ν¬μ§ν 리μ λ¦΄λ¦¬μ€ λΈλμΉλ₯Ό λ³λλ‘ κ΅¬μ±νμ¬ λΉλ λ° λ°°ν¬ μ μ΄
ν΄λ¬μ€ν° λͺ¨λν°λ§
μμ€ν μμμ μ΄μ© μνμ μμ© μννΈμ¨μ΄μ μ€ν μνλ₯Ό μ κ²
ν΄λ¬μ€ν° λ΄μ λ©νΈλ¦ λ°μ΄ν° μμ§μ μν λꡬλ₯Ό μ€μΉ
λμ보λλ₯Ό μ€μ νμ¬ μ μ©ν μ 보λ₯Ό λΉ λ₯΄κ² νμ ν μ μλλ‘ μκ°ν
Slack μλ¦Ό μ€μ
Slack μ±λ μμ± λ° Slack app (Jenkins CI) μ€μΉ
Slack μ±λ μ κ·Όμ μν authentication token μμ± Jenkins - credentials μ λ±λ‘
Jenkins νλ¬κ·ΈμΈ (Slack Notification) μ€μΉ
Pipeline Script μμ μλ¦Ό μ€μ , ν μ€νΈ
μΆκ° μ 보 (code diff) ν¬ν¨
μ§μ 컀λ°κ³Ό λΉκ΅νμ¬ μ½λ νΈμμμ λ³κ²½λ μ¬νμ μμ§
μμ§ν λ³κ²½ λ΄μμ Jenkins μ κ²μνκ³ λ§ν¬λ₯Ό μ»μ΄ Slack μλ¦Ό λ©μμ§μ ν¬ν¨
stage("Start") {
steps {
slackSend(
message: "Pipeline ${env.JOB_NAME} #${env.BUILD_NUMBER} Start",
color: "good", tokenCredentialId: "slack-key"
)
}
post {
always {
(...)
slackSend(
message: "Pipeline ${env.JOB_NAME} #${env.BUILD_NUMBER} Completed " +
"with status [${currentBuild.currentResult}]",
color: "good", tokenCredentialId: "slack-key"
)
}
}
script {
def publisher = LastChanges.getLastChangesPublisher "PREVIOUS_REVISION",
"SIDE", "LINE", true, true, "", "", "", "", ""
publisher.publishLastChanges()
def htmlDiff = publisher.getHtmlDiff()
writeFile file: "deployment-diff-${env.BUILD_NUMBER}.html",
text: htmlDiff
}
Prometheus μ Grafana λ₯Ό λ‘컬 ν΄λ¬μ€ν°μ μ€μΉ
Helm μ μ΄μ©νμ¬ kube-prometheus-stack μ κ°νΈ μ€μΉ
λ‘컬 μ»΄ν¨ν°μ λΈλΌμ°μ μμ μ κ·Όν μ μλλ‘ μλΉμ€ μ€μ
λͺ¨λν°λ§ λμ보λ ꡬμ±
μμ€ν λΆν λͺ¨λν°λ§ ν μ€νΈ