멋진 Jenkinsfile로 활성화된 CI/CD 및 GitOps에 대한 필수 사항
때때로 그들은 세부 사항을 알아차리지 못하지만 이 코드가 어떻게 배포됩니까? 파이프라인이 다른 환경에 배포되는 모습은 어떻습니까? 우리는 충분한 코드 품질 검사를 실행하고 있습니까? 그것을 구축하고 배포하기 위해 취한 단계는 무엇입니까?
어떻게 할 수 있는지에 대한 더 넓은 비전을 얻기 위해(그리고 그것은 그것을 하는 한 가지 방법일 뿐임) Jenkins, CI/CD 및 GitOps가 무엇이며 Jenkins 파이프라인이 어떻게 생겼는지에 대해 조금 더 명확히 합시다.
Jenkins, CI/CD 및 GitOps
아시다시피 Jenkins is a very popular and complete tool CI/CD 프로세스와 관련된 빌드, 배포 및 스크립트를 관리합니다.
CI/CD stands for continuous integration and continuous delivery 최종 고객에게 빈번한 소프트웨어 제공을 목표로 합니다. 새로운 기능을 구현하고 다양한 수준의 테스트 및 품질 코드 항목(린트, 정적 코드 분석 등)을 실행한 다음 이 새로운 코드를 아무 것도 손상시키지 않고 다른 환경에 통합하는 전체 애플리케이션 수명 주기에 대해 생각해 보십시오.
Now GitOps comes tied together to the DevOps world 모든 버전 기록 및 최신 업데이트된 구현과 함께 프로세스의 실제 구현에 대한 모든 세부 정보(예: 파이프라인 및 자동화 스크립트)를 Git/VCS에 유지하려는 마음가짐을 가져옵니다.
그 이상으로 협업, 규정 준수 및 자동화된 방식으로 버전이 지정된 스크립트를 기반으로 인프라를 프로비저닝할 수 있습니다(애플리케이션에 대해 수행하는 것과 동일).
우리는 애플리케이션 파이프라인의 모든 변경 사항과 가장 업데이트된 버전을 추적하고 싶기 때문에 Jenkins는 Jenkinsfile을 사용하여 빌드에서 배포까지 각 단계를 정의할 수 있도록 합니다.
Jenkinsfile이 어떻게 생겼는지에 대한 간단하고 효과적인 예
간단히 말해서 Jenkinsfile을 사용하면 선언적/스크립팅된 파이프라인에 필요한 모든 로직을 유연하게 작성할 수 있으며 모든 변경 기록과 함께 배포 및 CI/CD가 어떻게 보이는지에 대한 단일 정보 소스를 대부분 유지할 수 있습니다.
아래에서 볼 수 있듯이 이 파이프라인이 작동하는 방식에는 마법이 없습니다.
도구, AWS 환경 변수, 기본 maven 설치(mvn 명령)와 같은 Jenkins 사전 구성 항목을 암시적으로 사용합니다.
그 외에는 각 단계와 끝에서 끝까지 실행하기 위해 수행된 모든 단계를 볼 수 있습니다. 숨겨진 세부 정보가 없습니다.
pipeline {
agent any
options {
timeout(time: 10, unit: 'MINUTES') // you can set a global pipeline timeout
}
tools {
jdk "jdk8" // you can use pre-configured Jenkins tools
}
environment {
// using pre-configured Jenkins environment variables
awsKey = "${env.AWS_ACCESS_KEY_ID}"
awsSecretKey = "${env.AWS_SECRET_ACCESS_KEY}"
awsRegion = "${env.AWS_DEFAULT_REGION}"
isDevEnvironment = true
shouldCreateTag = false
}
stages {
stage('Initialize') {
steps {
script {
isBranchValid = ['master', 'feature/', 'hotfix/', 'bugfix/'].any { standard_branch -> env.BRANCH_NAME.startsWith(standard_branch) }
if (!is_branch_valid) {
error("You couldn't have a branch named like that!")
}
}
}
}
stage('Build') {
options {
timeout(time: 5, unit: 'MINUTES') // you can set a stage specific timeout
}
steps {
sh 'mvn clean package -DskipTests -U'
}
}
stage("Unit Tests") {
steps {
sh "mvn test"
}
}
stage('Create tag') {
when {
expression { return env.shouldCreateTag }
}
steps {
nextTag = createTag()
echo "Created tag as [${nextTag}]!"
}
}
stage("Deploy DEV") {
when {
expression { return env.isDevEnvironment }
}
steps {
echo "Deploying to DEV..."
deploy()
}
}
}
post {
always {
cleanWs() // post.always will run at the end
}
}
}
Boolean deploy() {
// do some logic to deploy..
}
String createTag() {
// logic to create a new Git tag..
}
그런 다음 새 Jenkins 작업을 연결하여 git 리포지토리에서 Jenkinsfile을 읽은 다음 실제 파이프라인에서 전환됩니다.
결론
Jenkins 파이프라인을 설정하는 방법에 대해 인터넷을 통해 많은 이야기, 샘플 코드 및 연습이 있습니다. 해결하려는 문제가 무엇인지 먼저 이해하고 해결해야 합니다.
Jenkins pipeline documentation은 파이프라인 구문, 선언적 대 스크립트 파이프라인, 모범 사례 등과 같은 세부 정보를 자세히 살펴볼 수 있는 좋은 장소입니다.
Reference
이 문제에 관하여(멋진 Jenkinsfile로 활성화된 CI/CD 및 GitOps에 대한 필수 사항), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rodrigocprates/the-essentials-about-cicd-and-gitops-enabled-by-a-fancy-jenkinsfile-41g3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)