[DevOps] Docker 컨테이너 환경에서 gitlab - jenkins 배포 자동화 -1

윤성철·2024년 4월 9일

DevOps

목록 보기
1/6
post-thumbnail

사내 프로젝트에서 Gitlab과 Jenkins를 통한 CI/CD를 도입하게 되었다.
Docker, Docker compose부터 처음하는 것들이라 공부하는 내용을 기록하고자 한다.

  1. Docker 및 Docker compose 설치 - https://www.uname.in/209
$ sudo dnf update -y
$ reboot
$ sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
$ sudo dnf install -y docker-ce

$ sudo dnf install docker-ce
$ sudo setenforce 0 //selinux 방화벽 해제

$ sudo systemctl start docker
$ sudo systemctl enable docker
$ sudo systemctl status docker

$ sudo usermod -aG docker $USER //도커 사용자 설정

$ sudo dnf install -y curl
$ sudo curl -L "https://github.com/docker/compose/releases/download/v2.7.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ docker-compose --version
docker-compose version 2.7.0
  1. Jenkins 설치 - https://velog.io/@tomy8964/gitlab-jenkins-CI-CD를-위한-시스템-아키텍처-구축실습#jenkins-설치
$ docker pull jenkins/jenkins:lts
$ docker run -d -p 8181:8080 --restart=always --name jenkins -u root jenkins/jenkins:lts
  • 공인 IP:8181 접속
  • 초기 암호 확인
$ docker logs jenkins
  • Jenkins plugins으로 이동해서 git, gitlab 관련 패키지 다운로드
  1. gitalb 설치
  • 홈 디렉토리로 이동 후 docker-compose.yml 파일 생성
version: '3.7'
  gitlab:
   image: 'gitlab/gitlab-ce:latest'
   restart: always
   hostname: '{서버IP}'
   container_name: gitlab
   environment:
     GITLAB_OMNIBUS_CONFIG: |
       external_url 'http://{서버IP}'
   ports:
          - '9000:80'
          - '1022:22'
          - '443:443'
   volumes:
          - '~/gitlab/config:/etc/gitlab'
          - '~/gitlab/logs:/var/log/gitlab'
          - '~/gitlab/data:/var/opt/gitlab'
          - '~/gitlab/backups:/var/opt/gitlab/backups'
$ docker-compose up -d
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
$ sudo firewall-cmd --permanent --add-port=9090/tcp
$ sudo systemtctl reload firwalld

  1. Gitlab 프로젝트 생성(create or import)
    • access-token을 발급받고 passoword로 활용
  2. Jenkins item등록
    • 소스코드 관리

- 빌드유발

업로드중..

체크 해주고, 고급에서 secret-token을 generate해준다. → gitlab webhook 등록하는데 사용됨
  1. 마지막으로, Gitlab에서 webhook 등록 작업

위의 경로와 secret-token을 등록해준다.

업로드중..

다음 시간에는 Jenkins에서 WAR 파일 빌드하고 SSH 통신을 통해 파일을 넘겨 자동 배포하는 포스트를 다뤄보겠습니다.

profile
내 기억보단 내가 작성한 기록을 보자..

2개의 댓글

comment-user-thumbnail
2024년 4월 9일

멋있습니다!!

1개의 답글