Jenkins 테스트 자동화

Sbae·2024년 2월 13일
0
post-thumbnail

현재 kubernetes 자동화 설치 툴을 개발 중입니다.
해당 글은 사용자 환경마다 상이할 수 있습니다.
관리자 권한을 기준으로 작성하였습니다.

요구사항

  • 코드를 작성 후 테스트하는 양이 너무 많고 귀찮은데 자동화를 해주세요. 딸깍딸깍

메타몽은 귀찮아

시스템 환경

  • 필수 패키지
    • Java
  • master
    • OS : ubuntu2204
  • slave
    • OS : ubuntu2204

Jenkins 설치

  • jenkins download
    • master 역할을 할 VM에만 설치해주면 된다.
  • 기타 terraform, docker 등 필요한 것은 플러그인 설치 후 jenkins 관리 ► tools에서 설정해 주면 쉽게 사용이 가능하다.
    • ex) blue ocean

Github 연동

Jenkins Agent 연동

  1. websoket을 이용하는 방법
  2. ssh를 이용하는 방법
  • 2가지 방법 중 하나를 선택해서 검색 후 연동하면 된다.
    • 필자는 ssh를 사용했다.

Jenkins file

pipeline {
  agent {
    node {
      label 'agent'
    }
  }
  tools {
    git 'GitInstall'
    go 'GoInstall'
    terraform 'TerraformInstall'
  }
  environment {
    testDir    = 'testDir'
    #`key`      = `value` 이런 형식으로 작성하면 된다.
  }

  stages {
    stage('=====Clean Workspace=====') {
      steps {
        cleanWs()
      }
    }

    stage('=====Git Clone=====') {
      steps {
        dir('./test') {
          git branch: 'main', credentialsId: 'github_login', url: '(repository url)'
        }
      }
    }
    
    stage('=====빌드 및 테스트 내용=====') {
      steps {
        # 빌드 및 테스트 내용을 작성
      }
    }
  }

  post {
    success {
      # 성공 시 실행
      script {
        def buildDurationMillis = currentBuild.duration
        def buildDurationMinutes = (buildDurationMillis / 60000).toInteger()
        def hours = (buildDurationMinutes / 60).toInteger()
        def minutes = (buildDurationMinutes % 60).toInteger()
        def buildDurationString = "${hours}시간 ${minutes}분"

        echo "test가 완료되었습니다. 소요된 시간 : ${buildDurationString}"

        slackSend(
          channel: '#sig-cube',
          color: 'good',
          message: "Test Success! :o: Build #${env.BUILD_NUMBER} success.\n소요된 시간 : ${buildDurationString}"
        )
      }
    }

    failure {
      # 실패 시 실행

      echo "test가 실패하였습니다."

      slackSend(
        channel: '#sig-cube',
        color: 'danger',
        message: "Test Failed! :x: Build #${env.BUILD_NUMBER} failed. See Jenkins for details.\nDetail link ${BUILD_URL}"
      )
    }
  }
}

테스트 결과 받기

  • 테스트 완료된 결과와 내용을 보기위하여 webhook을 보내야한다.
  • slack webhook
profile
끄적이는 일반인

0개의 댓글