본문 바로가기

Back-End/Jenkins

[Jenkins] 깃허브에 없는 파일 젠킨스에 수동으로 업로드하는 방법

728x90

젠킨스로 CI 파이프라인을 구축하다가 다음과 같은 에러가 발생했습니다. Node.js 와 파이어베이스를 연동할 때 사용되는 정보들이 담긴 json 파일이 없다고 뜨는데, 깃허브에 올릴 때 gitignore 파일에 포함시켜놓았기 때문입니다.

해당 모듈이 없어서 발생한 에러

 

이렇게 깃허브에 없는 파일들로 인해 젠킨스에서 빌드를 실패하게 되는데, 이런 경우 직접 젠킨스 서버에 접속해 수동으로 파일을 가져와야 합니다. gitignore 파일에 포함시킨 파일들이 많으므로 좀 더 간편하게 Back 단의 server 폴더 자체를 가져오겠습니다. server 폴더가 로컬에 있기 때문에 SCP 를 사용하여 로컬에서 EC2 로 업로드해야 합니다.

 

1)  프로젝트 경로 확인

먼저, 콘솔창을 확인하면 현재 프로젝트의 경로가 아래와 나옵니다. 젠킨스 서버에서 해당 경로로 들어갑니다.

현재 프로젝트 경로 확인

 

2)  필요한 폴더 로컬에서 가져오기

server 폴더가 필요하므로, 아래의 명령어로 해당 폴더를 로컬에서 가져옵니다.

$ scp -i {키 페어 경로} -r {디렉토리} ubuntu@{퍼블릭 IPv4 주소}:{젠킨스 프로젝트 경로}

 

그런데... 여기서 예상치 못한 에러가 발생했습니다. 에러 문구를 보니 Permission denied 라고 되어 있었습니다. 이렇게 SCP 를 사용하는 중에 Permission denied 에러가 발생하는 이유는, 위에서 실행한 SCP 접근이 해당 파일이나 디렉토리에 대한 접근 권한을 가지고 있지 않기 때문입니다. 따라서 권한을 변경해줌으로써 해결할 수 있지만, 필자의 경우 본 서버가 운영 중인 서버이므로 섣불리 권한을 변경하는 것은 좋은 방법이 아닙니다.

따라서, 좀 더 단순한 방법으로 해당 파일이나 디렉토리를 접근 가능한 곳에 복제하는 방법으로 해결해보겠습니다.

 

1) 먼저 해당 디렉토리, 필자의 경우에는 server 폴더의 권한을 확인해보면 아래와 같습니다.

해당 디렉토리의 권한 확인

 

2) 접근 가능한 폴더를 만들기 위해, 아래와 같이 server1 폴더를 생성합니다.

$ sudo mkdir server1

 

3) server1 의 권한을 바꿔줍니다.

$ sudo chmod 777 {폴더 경로}

 

4) 다시 위에서 했던 SCP 명령어를 실행해줍니다.

$ scp -i {키 페어 경로} -r {디렉토리} ubuntu@{퍼블릭 IPv4 주소}:{젠킨스 프로젝트 경로}

 

5) 새로 만든 디렉토리에 복사하고자 하는 폴더를 모두 가져왔으면, 원래 가져오려고 했던 폴더가 현재 임시로 만들어둔 폴더(접근 가능한 폴더)에 있게 됩니다. 따라서 기존의 'server' 폴더를 지우고, 접근 가능한 폴더로 가져온 server 폴더를 원하는 경로에 옮겨놓으면 됩니다.

$ sudo rm -rf server 	// 기존에 있던 server 폴더 삭제
$ cd server1 		// server1 폴더로 이동
$ sudo mv server ../ 	// 로컬에서 가져온 server 폴더 부모 디렉토리로 이동
$ sudo rmdir server1 	// 비어있는 server1 폴더 삭제

 

 

728x90