Jenkins + Gitlab + Mattermost

Gunjoo Ahn·2023년 1월 30일
1
post-thumbnail

Jenkins 구동

Docker로 Jenkins를 구동하기 위해서 Docker in Docker 이미지 먼저 실행하고 Jenkins를 실행

DinD 사용에 대한 주의
문제가 있을 수 있음을 인지하고 사용하도록 하자

Jenkins Docker Install Docs

Jenkins DinD

docker network create jenkins

docker run --name jenkins-docker --detach --restart=always \
  --privileged --network jenkins --network-alias docker \
  --env DOCKER_TLS_CERTDIR=/certs \
  --volume /home/username/jenkins/certs:/certs/client \
  --volume /home/username/jenkins/jenkins_home:/var/jenkins_home \
  --publish 2376:2376 \
  docker:dind --storage-driver overlay2 \
  --insecure-registry <IP>
  # Docker registry에 https 프로토콜이 아닌 http 프로토콜을 날리고 싶다면
  # 도커 레지스트리 아이피 추가

Jenkins Container

docker run --name jenkins-blueocean --restart=on-failure --detach \
  --network jenkins --env DOCKER_HOST=tcp://docker:2376 \
  --env DOCKER_CERT_PATH=/certs/client --env DOCKER_TLS_VERIFY=1 --env TZ=Asia/Seoul \
  --publish 1025:8080 --publish 50000:50000 \
  --volume /home/username/jenkins/jenkins_home:/var/jenkins_home \
  --volume /home/username/jenkins/certs:/certs/client:ro \
  jenkins/jenkins:lts-jdk11

1025 포트를 잡아놓았다.

Gitlab Webhook 설정

Jenkins 설정

위 플러그인을 설치하자.

Gitlab 플러그인을 설치해서 (ㄱ)(ㄴ)을 준비하자. Gitlab 설정에서 사용할 것이다.

Gitlab 설정


Settings -> Webhook 메뉴에 들어가서 프로젝트 URL(ㄱ)과 Jenkins에서 설정하였던 secret token(ㄴ)을 넣고 Add webhook을 하면 webhook이 등록된 것이다.

Push events 등으로 Webhook Test를 할 수 있다.

위와 같이 프로젝트 빌드가 시작된다

Mattermost 설정

Mattermost 설정

이렇게 Mattermost에서 incomming webhook을 받을 준비를 하고 Jenkins configure에 설정을 해주면 된다. Incomming Webhook URL이 Endpoint URL이다.

Jenkins 설정

Mattermost 플러그인을 설치하고 Jenkins configure에서 Endpoint url 설정을 해주면 된다. 설정 이후 Jenkinsfile에서 mattermostSend 메서드로 message send가 가능해진다.

Jenkinsfile에는 아래와 같이 넣었다.

Author_ID = sh(script: "git show -s --pretty=%an", returnStdout: true).trim()
Author_Name = sh(script: "git show -s --pretty=%ae", returnStdout: true).trim()
mattermostSend (
    color: "#D0E0E3",
    icon: "https://jenkins.io/images/logos/jenkins/jenkins.png",
    message: "Dev Build Start: ${env.JOB_NAME} #${env.BUILD_NUMBER} (<${env.BUILD_URL}|Link to build>) by ${Author_ID}(${Author_Name})"
                    )
profile
Backend Developer

0개의 댓글