본문 바로가기
DevOps

[Jenkins] pipeline script

by 햄과함께 2019. 10. 14.
반응형
$ docker pull jenkins/jenkins:2.138.4

jenkins 2.138.4 버전 이미지를 pull 받는다.

latest 버전이 2.60 버전인데 플러그인들이 제대로 설치가 안되는게 있어서 2.138.4 버전으로 했다.

 

docker images 명령어로 이미지 파일을 확인해보면 jenkins/jenkins 라는 이름의 2.138.4 태그를 단 이미지가 있다.

이게 방금 pull 받은 젠킨스 이미지이다.

$ docker run -p 8080:8080 -p 50000:50000 -v /var/jenkins_home jenkins/jenkins:2.138.4

위 명령어로 docker run을 해준다. 

http://localhost:8080로 접속

추천 플러그인 설치, 계정 생성이 끝나면

위와 같은 화면을 확인할 수 있다.


새아이템 생성

Pipeline 선택.

생성 후 설정에서 아래로 내려가보면 pipeline script 작성하는 곳이 있다.

node {
   echo 'Hello World'
}

위와 같이 스크립트를 작성하고 빌드를 하면

위와 같이 Hello World가 출력된다.


Pipeline Syntax를 클릭하면 

버튼으로 스크립트를 작성해주는 기능을 사용할수도 있다.

예를들어 git clone을 하는 스크립트를 작성하고 싶으면 

Sample Step에서 git을 선택한 뒤 git repository 주소를 적는다.

공개 깃헙이기 때문에 별도의 credential 은 필요없다.

sh 'npm install'
sh 'npm run build'

테스트할때 사용하고자하는 레파지토리는 vue 프로젝트여서 node(npm)를 사용한다.

스크립트에 git clone 하는 코드다음에 build하는 코드를 넣고 job을 빌드해보았다.

결과는 빌드 실패가 뜨고 npm을 찾을 수 없다고 한다.

node를 사용하려면 젠킨스에서 NodeJS 플러그인이 필요하다.

Jenkins 관리 > 플러그인 관리

NodeJs 플러그인을 설치한다.

Jenkins 관리 > Global Tool Configuration.

NodeJS에서 Add NodeJS 클릭.

name을 정한다. 이 이름을 스크립트에서 사용할것이기 때문에 기억해둔다.

node 버전은 데탑에서 쓰고 있던 노드 버전과 동일한 버전으로 선택했다.

pipeline {
    agent any
    tools {nodejs "nodejs"}

    stages {
        stage('test') {
            steps {
                git url: 'https://github.com/fpdjsns/ts-vue.git'
                sh 'npm install'
                sh 'npm run build'
            }
        }
    }
}

최종적으로 스크립트는 위와 같이 작성한다.

tools 명령어로 nodejs 플러그인을 사용한다고 지정해둔다.

pipeline 블럭은 agent를 필수이기때문에 agent any 라고 명시해두었다.

테스트로 간단하게 작성해보았기때문에 steps 안에 git clone, 빌드 스크립트를 모두 적었다.

이렇게 작성하고 job을 빌드해보면

요렇게 성공적으로 빌드가 된 것을 확인할 수 있다.

output console을 보면 /var/jenkins_home/workspace/pipeline-ex 위치에서 스크립트가 실행되었다.

jenkins docker 내부로 들어가서 위 폴더로 들어가보자.

$ docker exec -it <CONTAINER_ID> /bin/bash

container id로 docker jcontainer 접속.

해당 폴더에는 clone된 파일, 폴더 들이 있고 build를 했기 때문에 빌드된 결과물이 있는 dist 폴더가 성공적으로 생성되었다.


Git repository로 pipeline script를 관리하는 요거를 한 번 해봐야하는데 생각외로 시간이 오래걸렸다.

이건 다음에 해보자.


참고

https://hub.docker.com/_/jenkins/

https://jenkins.io/doc/pipeline/tour/hello-world/#examples

https://jenkins.io/doc/pipeline/examples/

https://medium.com/@gustavo.guss/jenkins-starting-with-pipeline-doing-a-node-js-test-72c6057b67d4

https://jenkins.io/doc/book/pipeline/syntax/

반응형

댓글0