don't stop believing

Pipeline 추가 시 Materials에 gitlab 등록하기 본문

Tools/GoCD

Pipeline 추가 시 Materials에 gitlab 등록하기

Tongchun 2019. 4. 17. 15:30

GoCD를 설치하고 처음 Pileline을 추가할 때 좀 헤맸습니다.

 

우선 문제는 아래와 같습니다.

  1. GoCD(go-server)를 설치한 서버에 go 계정은 있으나 home 디렉터리가 /var/go 였다는 것 (당황)
  2. 처음 go 계정으로 접속하니 /var/go 디렉터리에 권한이 없었다는 것.
  3. ssh-keygen 으로 퍼블릭키를 생성하고 gitlab에 등록해도 권한이 없다는 메시지가 나온 것

지금은 해결한 상태이며 처음부터 설명하겠습니다.

 

처음 Pipeline을 추가할 때 Materials를 추가해야 합니다.

사내에 있는 Git 서버와 연동할 프로젝트는 아래와 같습니다.

ssh 경로 : git@gitlab.ngle.co.kr:marshmallow/APITutor.git

http 경로 : http://gitlab.ngle.co.kr/marshmallow/APITutor.git

 

GoCD와 Gitlab을 연결하려면 인증에 대한 처리를 해야 합니다.

두 가지 방법이 있는데 하나는 http로된 git repository에 계정과 패스워드를 함께 전달하는 방법입니다.

http 경로에 아래와 같이 계정과 패스워드를 포함해서 전달할 수 있습니다.

http://<계정명>:<패스워드>@gitlab.ngle.co.kr/marshmallow/APITutor.git

 

제 계정이 tongchun이고 패스워드가 1234!@#$ 라면 quotation으로 각각 묶어서 사용할 수 있습니다.

http://'tongchun':'1234!@#$'@gitlab.ngle.co.kr/marshmallow/APITutor.git

 

하지만 이렇게 사용하면 패스워드가 노출될 수 있게 때문에 권장하지 않습니다.

그래서 두 번째 방법인 ssh key를 만들어 사용하려고 합니다.

 

! 참고로, 저는 CentOS7에 GoCD (go-server)가 설치되어 있습니다. Ubuntu에서는 다를 수 있습니다.

 

먼저 GoCD가 설치된 서버로 접속해 go 계정이 있는지 확인합니다.

go 유저는 go-server가 설치되었다면 추가되어 있습니다.

$ grep GoCD /etc/passwd
go:x:997:995:GoCD User:/var/go:/bin/bash

go 계정의 기본 경로는 /var/go 입니다. 여기에 .ssh 폴더를 만들어 줍니다.

$ sudo mkdir /var/go/.ssh

그리고 .ssh 폴더에 go 계정의 소유권과 권한을 변경합니다.

$ sudo chown -R go:go /var/go/.ssh/
$ sudo chmod -R 700 /var/go/.ssh/

이제 go 계정으로 변경하고 ssh key를 만들어 줍니다.

$ sudo su go
$ ssh-keygen -t rsa -b 4096 -C "gocd"

ssh-keyget -t rsa -b 4096 -C "gocd" 명령을 실행하면 몇 가지를 묻습니다.

 

Generating public/private rsa key pair.
Enter file in which to save the key (/var/go/.ssh/id_rsa): 

생성되는 키가 /var/go/ssh/id_rsa에 저장할 것인지 묻습니다. 저는 그냥 엔터를 치고 지정된 경로에 만들어 줍니다.

 

/var/go/.ssh/id_rsa already exists.
Overwrite (y/n)? y

저는 이미 만들어 진게 있기 때문에 덥어 쓸것인지를 묻습니다. 엔터를 치고 덥어 썼습니다.

 

Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

키에 패스워드를 넣을 것인지를 묻습니다. 저는 넣지 않았습니다. 엔터를 치고 넘어갑니다.

 

key가 생성되었다면 해당 경로에 생성되어 있는지 확인해 봅니다.

$ ls -la /var/go/.ssh/
total 12
drwx------. 2 go   go     57  4월 17 02:04 .
drwxr-xr-x. 3 root root   18  4월 16 20:51 ..
-rw-------. 1 go   go   3243  4월 17 03:08 id_rsa
-rw-r--r--. 1 go   go    730  4월 17 03:08 id_rsa.pub

이제 생성된 퍼블릭 키를 gitlab에 저장해 줘야 합니다.

생성된 퍼블릭 키(id_rsa.pub)를 cat 명령으로 확인합니다.

$ cat /var/go/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCsKEUfBCdiK+HeTrBbZVhuOxsdO9Unx4dfxaxmjPUv4CPFQtLiaSeUkWEpL5ZtmJ1ZqaCO257LFjyhVV+bBDirMzPW3bQt6Sees5YN/XNR1IrhSrH+/xosMXXHt2l2Cso174EiHnvNEf7jvZ4tFwzG9cqWZxIEPe0lbeLeQZ0s0hVE6Etr9UPGkHsW9xELnmIamoQ5IfIBsgj5pT+/u7s3ohJa/2co0fz5kYlwEUtFRVpXx3xeRnHjQV2cQhJM9BYR4CO4oEQ5oeJ/t+Av28aF4lXMRsg7vy3h7bIH02rg9gIEB1odjV9K2dU3zlNt+mOMOlHft9LTeiXQi/7xXV5/4Hd2mq7hvhVh9D2qpbDDirnXEfQ/C3O2q9BbKxJmDcquSHwLC6/C6LX/uEMIqwG+f3SCIXwNUL962uJZu1hu+lu1vhXNtJyo7Ku2yBF7PBaxVqCoZ3/aR+zBrfibPkBXCkLps6j+7EMZygyiy2MaiRBMmenU18+1j2FE3ozo9azTb+vpLSA7RJq5OmOIlo2eISiOGZsZKZmn5R+lLnqhPgDANl4mngBpoa2PurV9pjp3qjYNZdyyROWQh57Ad3S8VjXd0YmMFtR97UfXD9YMvmR8BOr2raiZtB55d4d9Dsg94sDIVo5elFyI5Tkam5uhZQ5csFD2f841gvsstEktlQ== gocd

생성된 키를 gitlab의 SSH Keys에 등록합니다.

SSH Key를 등록하는 경로는 User Settings > SSH Keys 에서 등록할 수 있습니다.

이번에는 GoCD Pipeline 등록하는 페이지로 가서 gitlab 경로를 등록합니다.

URL에 gitlab 주소를 넣었다면 밑에 있는 CHECK CONNECTION 버튼을 클릭해 정상적으로 접속되는지 확인합니다.

에러가 나네요. public key로 요청이 왔다면 서버에서 다시 인증해 줘야 합니다.

ssh-keyscan 명령으로 인증 요청된 key를 known_hosts에 저장해 줍니다.

$ ssh-keyscan gitlab.ngle.co.kr > /var/go/.ssh/known_hosts
# gitlab.ngle.co.kr:22 SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.8
# gitlab.ngle.co.kr:22 SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.8
# gitlab.ngle.co.kr:22 SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.8

known_hosts 파일이 생성되었는지 확인해 봅니다.

$ ls -la /var/go/.ssh/
합계 12
drwx------. 2 go   go     57  4월 17 03:31 .
drwxr-xr-x. 3 root root   18  4월 16 20:51 ..
-rw-------. 1 go   go   3243  4월 17 03:08 id_rsa
-rw-r--r--. 1 go   go    730  4월 17 03:08 id_rsa.pub
-rw-r--r--. 1 go   go    677  4월 17 03:31 known_hosts

이제 다시 GoCD의 CHECK CONNECTION 버튼을 클릭해 봅니다.

정상적으로 인증이 되었습니다.

우선 여기까지 정리하겠습니다.

 

'Tools > GoCD' 카테고리의 다른 글

GoCD 설치 (on CentOS 7)  (0) 2019.04.03
Comments