반응형
반응형

사실 별거 아니긴한데, Job의 Read권한때문에 애를 먹었다.


기본적으로 유저를 생성하면 Overall/Read권한은 무조건 다 주는 게 맞는데,

이게 Job의 READ권한까지 포함을 하고 있는줄 알았더니,

Job을 볼 수 있는 권한은 Job/Read로 따로 있었다.


여기까지 사전지식이 필요한 부분에 대한 내용이었고, 설정 방법에 대해 소개한다.


Autorization 부분에서 Project-based Matrix Autorization Strategy를 선택해야 한다.

그리고 Job/Read권한은 Anonymous에게 주지 않고, Overall/Read권한만을 부여한다.


이제 생성되어 있는 Job 설정에 가서 Enable project-based security옵션을 체크하여,

해당 Job에 대한 권한을 가질 유저들을 지정해주면 된다.


정리를 해보면..

Anonymous User기준으로.. 

Overall/Read 권한은 Jenkins Main페이지에 접근할 수 있는 권한

Job/Read 권한은 말그대로 Job을 볼 수 있는 권한

Administrator권한은 둘 다 포함

반응형
,
반응형

local vm 환경에서는 같은 네트워크라서 그런지 sshpass같은 명령어로 execute shell에다가만 넣어도 

ssh인증이 문제가 없었는데.. (그놈의 vagrant가 또 문젠가...?)

회사 보안 정책상 뭐가 특이하게 걸려있는지

회사에서 받은 vm에서는 제대로 동작을 하지 않았다.


ssh key폴더를 바꿔보고 이리저리 플러그인을 설치해봤지만... execute shell로는 안되더라.


그러던중 public over ssh plugin이라는 넘을 우연찮게 발견을 했는데..


ssh인증을 미리 받아놓고, jenkins workspace에 있는 빌드 된 넘들을 remote directory (ssh인증을 받아놓은 서버)로 transfer를 해주는 훌륭한 기능을 가지고 있었다.


뭐 아래 링크에 나온 정보가 사실 가장 정확하긴 하지만, 나 처럼 영어를 싫어하는 사람들을 위해 손쉽게 설명을 하도록 함.

https://wiki.jenkins-ci.org/display/JENKINS/Publish+Over+SSH+Plugin

일단 Public Over SSH Plugin을 설치한 후에!


[Jenkins관리] - [시스템 설정]에 가보면, Add an SSH Server라고 아래와 같이 추가할 수 있는 화면이 나온다! 


Name은 Alias라고 보면 되고, hostname이랑 username정도만 적어준다.


그 후, 만들어둔 Item(Job) 설정으로 가서, 빌드 스텝을 추가하는데 아래와 같이 노란색으로 칠해진 넘이 추가가 되었다.


아래와 같이, 빌드 스텝이 아닌 빌드 후 조치사항에서도 동일하게 이용을 할 수가 있다.



체크를 하고나면, 드디어 원하는 동작을 할 수 있도록 구성된 UI가 보인다.

Source files는 jenkins의 job workspace 폴더를 기준으로 어떤 파일을 복사할 것인가에 대해 정의한다.

Remove prefix는 Source files에서 지정한 경로의 하위 폴더를 지우는 기능이라는데.. 이딴걸 어디다 쓰나 싶다.

Remote directory는 SSH Server로 지정한 서버의 원격지 폴더를 의미한다. 

(주의할 점은, 만약 계정이 test라면 /home/test를 기본 폴더로 보게 된다. /test 같은데다가 복사하려고 하면, ../../ 이런거 막 넣어도 원하는대로 안된다는 걸 명심하자. 문의한 사람이 ROOT경로에 /test로 만들어뒀길래.. 어떻게든 맞춰줄려고 왜 안되지 왜안되지 하면서 고민하다가 보니깐, 계정 폴더 하위에 들어가 있었다. ㅡㅡ;; 

본인처럼 삽질하지 말기를...)

Exec command는 파일 전송이 모두 끝난 이후에, SSH Server로 지정한 서버에서 실행될 스크립트를 지정해주는 기능이다.


아래 Add Server버튼이 있는 걸 보면 알겠지만, 서버 여러대에다가도 기존처럼 Execute Shell로 For Loop돌아가며 원시적으로 알아보기 힘든 스크립트를 작성하지 않고도, 깔끔하게 정리가 가능하다.


퇴근하고 계속 머리에 맴돌아서 집에와서 밥도 안먹고 2시간동안 삽질하다가 해결!


이로써 배포 자동화가 완성되었다.

반응형
,
반응형

Jenkins + SVN을 연동하여 사용하면, 기본적으로 HEAD에 대해서 update를 받아서 사용이 된다.


이것만으로 충분한 경우가 대부분이지만, 개발 조직이 아닌 운영 조직 같은 경우는,

왜 특정 Revision으로의 update는 안되냐고 테클이 들어오는게 보통이다.


이런 테클을 방지하기 위해, 해결책을 마련해보았다.


1. Job 설정에서 매개변수를 추가한다.


2. SVN Repo URL을 SVN Url@$매개변수명 형태로 넣어서 지정한다.

  - 이 때, 유효하지 않은 URL이라고 나오지만, 무시하자.


@$매개변수명 이게 포인트 인 것 같다.


스크린샷을 올리고 싶었으나.. 되도않는 보안정책 어쩌고하면서 사진 공유가 안된단다.


어쨋든, 이로써 해결 

반응형
,

[Git] 설치

개발/Git 2016. 6. 11. 00:39
반응형

Jenkins와 연동할 SCM이 필요해서, 뭘 사용할까 고민하다가 git을 사용하기로 마음 먹음.

 

이미 사내에 git, svn 둘다 있지만.. 새로 설치해서 세팅해보는걸로...

CentOS 기준이다. 

 

1. 사전 설치 목록

$ yum install gettext-devel expat-devel curl-devel zlib-devel openssl-devel

 

2. git을 다운받아서 압축을 푼다. 아래경로에서 받을 수 있음. (현재 최신버전이 1.9.0) 

 - http://code.google.com/p/git-core/downloads/list

 

3. 압축푼 경로로 이동 후 아래 명령어 작성

$ make prefix=경로 all
$ make prefix=경로 install

 

4. perl 관련된 에러가 발생한다. (발생하지 않으면 5번으로 넘어간다.)

- 해결 : http://madcoda.com/2013/09/cant-locate-extutilsmakemaker-pm-while-compile-git/ 

- perl-devel이 깔려있지 않아서 인 것 같다.

- 설치 후, 3번을 다시 실행 

반응형
,
반응형

git bash등을 켜서, 디렉토리로 이동한 후 git init을 해주면, 로컬에 Repository가 생김.

 

webapp기준 target/폴더 등은 올라가 필요가 없으므로,

.gitignore파일을 생성하여 추적에서 제외시켜준다.

 

commit 까지 해준다. (git add, git commit) 

 

이제 원격지에 push를 해야 한다.

gerrit을 설치해서 gerrit에 push를 할 것이기 때문에, 다음 포스트는 gerrit 설치 및 연동이 될 것 같다. 

반응형
,
반응형

처음에는 네트워크 상황이 좋지 않아서 타임아웃이 발생했겠구나 싶었는데..

고작 500 line밖에 안되는 텍스트 문서가 타임아웃이 발생하는 건 좀 아닌 것 같고 해서 찾아보니..

역시나 Gerrit의 버그였다.

 

Gerrit 2.9.x 기준으로 해결방법은,

Old Screen -> new Screen으로 설정에서 바꿔주면 발생하지 않는다.

 

처음엔 New Screen이 복잡해보여서 사용을 안했었는데,

Diff 해주는 UI라던지, 코드 리뷰 점수, Submit등 화면이 안넘어가고 한 화면에서 누를 수 있어서

더 편한듯..?

반응형

'개발 > Git' 카테고리의 다른 글

[Git] 설치  (0) 2016.06.11
[Git] Repository 만들기  (0) 2016.06.11
[Git Bash] git push 명령어 만으로 Gerrit Master에 push하기  (0) 2016.06.11
[Gerrit] download-commands Plugin 설치  (0) 2016.06.11
[Git] Git bash public key 추가  (0) 2016.06.11
,
반응형

각 프로젝트에서 vi .git/config로 파일을 열어서

[remote "origin"] 항목에 한줄을 추가한다.


push=HEAD:refs/for/master 


위와 같이 설정을 바꾸어 두면, git push origin HEAD:refs/for/master로 gerrit에 push하던 것을

git push 만으로 가능하게 해준다.

반응형
,
반응형

Eclipse -> IntelliJ로 IDE변경 작업을 하면서,

mylyn에서 제공하던 IDE 자체 리뷰 기능을 사용하지 못해서 아쉬워하던 중..


IntelliJ에서도 gerrit plugin을 지원하여, IDE 자체에서 리뷰 기능을 제공하도록 하고 있었다.


gerrit 플러그인을 설치하고, 새로운 patchSet을 업로드 해보았는데.. 수동으로 검색하기 전까지 목록이 뜨지 않았고

아래와 같은 에러가 발생하였다.


Cannot fetch changes: No fetch information provided. If you are using Gerrit 2.8 or later, you need to install the plugin 'download-commands' in Gerrit.


대충 구글링하여 원인 파악을 해보니, IntelliJ에서 Gerrit으로 보내는 다운로드 프로토콜이 맞지 않아서 발생하는 에러라고 한다.


이 문제는 Gerrit에서 download-commands 플러그인을 설치하여, 다운로드 프로토콜을 추가 지원하면 해결이 된다.

설치 방법은 Gerrit이 설치된 Path의 bin폴더에 가서 아래 명령어를 입력하면 설치가 된다.


java -jar gerrit.war init -d {Gerrit Home 경로} --install-plugin=download-commands

반응형
,
반응형

AWS에 Git 서버가 들어있는 경우 인증키 문제 관련된 내용


Eclipse 같은 경우는 General - Network Connection - SSH2 에서 private key로 ppk든 pem이든 추가를 해주면,

인증 문제가 해결이 되지만, Git Bash같은 경우는 기본적으로 사용자 폴더 밑에 .ssh 폴더에 있는 Key를 참조하기 때문에

Eclipse에서 세팅을 했다고해도 인증 문제가 발생한다.


이런 경우, AWS 인증키(ppk or pem파일)를 이용하여 public key를 직접 생성해주어야 한다.


1. puttygen 프로그램 (구글링 하면 바로 나옴)을 실행하여 ppk파일을 Load해준다.


2. 상단 메뉴 중 Conversions - Export OpenSSH Key 메뉴를 선택 후 발생하는 팝업에서, id_rsa 라고 적어준다.


3. Save public key 버튼을 눌러 id_rsa라고 적어준다. (id_rsa.pub 파일이 생성됨)


4. 생성된 두 개의 파일 (id_rsa, id_rsa.pub)을 Windows 사용자 폴더\.ssh 경로에 복사해준다.

반응형
,
반응형

SSL 인증키 검사때문인데, 그냥 검사하지 않도록 세팅하면 된다.


git config --global http.sslVerify false


반응형
,
반응형