리셋 되지 말자

[Jenkins] 로컬 gitlab Jenkins 연동 본문

CI CD

[Jenkins] 로컬 gitlab Jenkins 연동

kyeongjun-dev 2021. 2. 24. 10:43

(miiingo.tistory.com/170?category=670534)

miiingo 님의 글을 보고 따라해 보았다. 중간에 다른점도 많고, 배포 서비스도 다르다. 

1. 서버 구성

로컬 환경에서 코드를 push 했을 때 수정사항이 반영되도록 테스트하기 위해 위처럼 구성하였다.

AWS나 외부 서비스를 목표로 한게 아니라 CI/CD 과정을 간단하게 테스트하기 위함이다. 외부 서비스까지 구현하는걸 목표로 하는 분은 이 창을 닫고 다른 글을 찾아보시기를...

2. [CentOS 7] 준비 사항

- Docker 설치

sudo yum update -y
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
yum list docker-ce --showduplicates | sort -r
yum install -y docker-ce-3:20.10.2-3.el7 docker-ce-cli-3:20.10.2-3.el7 containerd.io
systemctl status docker
systemctl start docker
systemctl status docker
systemctl enable docker

ce는 community edition이다. Docker repository는 설치하지 않았다.

- docker compose 설치

sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
docker-compose --version
chmod +x /usr/local/bin/docker-compose
docker-compose --version

download/ 다음에 버전을 잘 맞춰서 설치한다. Docker와 설치가 많이 나면 동작을 안할 수도 있다고 한다.

- git 설치

yum install -y git

 

3. [CentOS 7] GitLab을 docker compose로 실행

실행을 위해 docker-compose.yml 파일을 작성한다.

- docker-compose.yml

# cat docker-compose.yml
web:
  image: "gitlab/gitlab-ce:latest"
  restart: always
  hostname: "192.168.0.4"
  environment:
    GITLAB_OMNIBUS_CONFIG: |
      external_url 'https://192.168.0.4'
      # Add any other gitlab.rb configuration here, each on its own line
  ports:
    - "9090:80"
    - "22:22"
    - "443:443"
  volumes:
    - "~/gitlab/config:/etc/gitlab"
    - "~/gitlab/logs:/var/log/gitlab"
    - "~/gitlab/data:/var/opt/gitlab"

192.168.0.4 대신에 자신에게 맞는 ip 주소를 입력한다. external_url도 자신에게 맞는 ip 주소를 입력한다.

docker-compose up

위 명령어를 사용하여 gitlab 컨테이너를 실행한다.

- 192.168.0.4:9090 접속

호스트 포트(9090)로 컨테이너의 80포트로 접속할 수 있다.

4. Jenkins 컨테이너 실행

docker run -v /var/run/docker.sock:/var/run/docker.sock -v /srv/jenkins/home:/var/jenkins_home -p 8080:8080 -p 50000:50000 --name=jenkins jenkins/jenkins

위 명령어로 젠킨스를 실행한다.

[error]
touch: cannot touch ‘/var/jenkins_home/copy_reference_file.log’: Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?

위와 같은 에러 발생시 /srv/jenkinx/home의 퍼미션을 컨테이너의 jenkins 유저가 접근가능하도록 권할 설정을 아래와 같이 해준다.

sudo chown -R 1000:1000 /srv/jenkins/home/

 

Comments