[macOS] Jenkins 버전 선택하여 설치하기

이 글은 메뉴얼 보다는 기록에 가까울 것 같다.  Mac에서 설치하였고, OS는 Big Sur 11.5.2 기반이다.

Jenkins 과거 버전인 2.176 설치를 목표로 했다.  brew install을 통해 jenkins버전을 지정하고 실행하였다.

~ % brew install jenkins@2.176.2
Updating Homebrew... 
 ==> Auto-updated Homebrew! 
Updated 1 tap (homebrew/cask). 
==> Updated Casks 
Updated 1 cask. 
Warning: No available formula or cask with the name "jenkins@2.176.2". 
==> Searching for similarly named formulae... 
Error: No similarly named formulae found. 
==> Searching for a previously deleted formula (in the last month)... 
Error: No previously deleted formula found. 
==> Searching taps on GitHub... 
Error: No formulae found in taps.

에러가 발생했다. 뭔가 버전에 대한  formula가 없다고 하는 것 같다.  formula가 무엇인지는 확실치 않다. brew info가 있다는 것을 알았다.  brew info를 해보았다.

~ % brew info jenkins 
 jenkins: stable 2.312 (bottled), HEAD 
Extendable open source continuous integration server 
https://jenkins.io/ 
Not installed 
From: https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/jenkins.rb 
License: MIT 
==> Dependencies 
Required: openjdk@11 ✘ 
==> Options 
--HEAD 
Install HEAD version 
==> Caveats 
Note: When using launchctl the port will be 8080. 
To start jenkins: 
  brew services start jenkins 
Or, if you don't want/need a background service you can just run: 
  /usr/local/opt/openjdk@11/bin/java -Dmail.smtp.starttls.enable=true -jar /usr/local/opt/jenkins/libexec/jenkins.war --httpListenAddress=127.0.0.1 --httpPort=8080 
==> Analytics 
install: 4,154 (30 days), 11,818 (90 days), 52,613 (365 days) 
install-on-request: 4,134 (30 days), 11,757 (90 days), 52,063 (365 days) 
build-error: 0 (30 days)

jenkins 설치 버전은 현재 2.312를 지정하고 있는 것으로 보인다.  그리고 중간쯤 Required: openjdk@11이 X로 되어 있다.  OpenJDK 11이 필요한데 설치가 안된 것이 분명하다.  그래서 OpenJDK를 먼저 설치해보았다.

~ % brew install openjdk@11 
 Updating Homebrew...  
==> Auto-updated Homebrew! 
 Updated 2 taps (homebrew/core and homebrew/cask).  
==> Updated Formulae 
 Updated 1 formula. 
 ==> Updated Casks 
 Updated 12 casks. 
==> Downloading https://ghcr.io/v2/homebrew/core/openjdk/11/manifests/11.0.12 
 ######################################################################## 100.0% 
 ==> Downloading https://ghcr.io/v2/homebrew/core/openjdk/11/blobs/sha256:2de8af552742c3caa4d19fa15f6c39c771c20684c0afc0ebaa1e5f9b1ce1801a 
 ==> Downloading from https://pkg-containers.githubusercontent.com/ghcr1/blobs/sha256:2de8af552742c3caa4d19fa15f6c39c771c20684c0afc0ebaa1e5f9b1ce1801a?se=2021-09 
 ######################################################################## 100.0% 
==> Pouring openjdk@11--11.0.12.big_sur.bottle.tar.gz 
==> Caveats 
For the system Java wrappers to find this JDK, symlink it with 
  sudo ln -sfn /usr/local/opt/openjdk@11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-11.jdk 
openjdk@11 is keg-only, which means it was not symlinked into /usr/local, 
 because this is an alternate version of another formula. 

If you need to have openjdk@11 first in your PATH, run: 
  echo 'export PATH="/usr/local/opt/openjdk@11/bin:$PATH"' >> ~/.zshrc 
For compilers to find openjdk@11 you may need to set: 
   export CPPFLAGS="-I/usr/local/opt/openjdk@11/include" 
==> Summary 
 🍺  /usr/local/Cellar/openjdk@11/11.0.12: 679 files, 297.9MB 
==========

다행히 Openjdk 11버전은 설치가 잘 된 것 같다.  Path에 추가하라고 되어 있어 바로 Path에도 추가하였다.  (echo ‘export PATH=”/usr/local/opt/openjdk@11/bin:$PATH”‘ >> ~/.zshrc)

자, 이제 formula라는 것만 어떻게 해보면 될 것 같다.  formula를 파일 시스템에서 뒤져보다가 의심나는 것을 찾았다.

/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula

이 폴더 안에 jenkins를 검색해보니 jenkins.rb라는 것이 있었다.이것을 열어보면 대략 이렇다.

class Jenkins < Formula 
   desc "Extendable open source continuous integration server" 
  homepage "https://jenkins.io/" 
  url "http://mirrors.jenkins.io/war/2.312/jenkins.war" 
  sha256 "a017207f9d2110a8c8a6c753fd2a2209941e0e44a4aa1a8c6e394277973f0de5" 
  license "MIT"

...............

버전이 의심스럽다.  2.312가 여기 정의되어 있는 것으로 보니 이것을 바꿔보기로 했다.  타겟하는 버전인 2.176으로 변경하였다.  http://mirrors.jenkins.io/war/ 여기 들어가서 실제 버전이 있는지 확인하고, sha256도 버전에 맞게 고쳐 넣었다.  그리고 다시 jenkins 설치를 시도하였다.

~ % brew install jenkins       
==> Downloading https://ghcr.io/v2/homebrew/core/jenkins/manifests/2.176 
#=#=#                                                                          
curl: (22) The requested URL returned error: 404  
 Error: jenkins: Failed to download resource "jenkins_bottle_manifest" 
Download failed: https://ghcr.io/v2/homebrew/core/jenkins/manifests/2.176

뭔가 menifests를 찾다가 못 찾았다고 실패했다.  https://ghcr.io/v2/homebrew/core/jenkins/manifests 이 url 자체가 없는 주소로 나온다.  뭘까.구글링을 하다 옵션 –build-from-source가 있다는 것을 알았다.  왠지 중간 과정 없이 소스에서 바로 설치를 시도하는 듯한 옵션이다.  그래서 다시 설치 시도를 해보았다.

~ % brew install jenkins --build-from-source 
 ==> Downloading http://mirrors.jenkins.io/war/2.176/jenkins.war 
==> Downloading from http://archives.jenkins-ci.org/war/2.176/jenkins.war 
 ######################################################################## 100.0% 
==> /usr/local/opt/openjdk@11/bin/jar xvf jenkins.war 
==> Caveats 
Note: When using launchctl the port will be 8080. 
To start jenkins: 
  brew services start jenkins 
Or, if you don't want/need a background service you can just run: 
  /usr/local/opt/openjdk@11/bin/java -Dmail.smtp.starttls.enable=true -jar /usr/local/opt/jenkins/libexec/jenkins.war --httpListenAddress=127.0.0.1 --httpPort=8080 
==> Summary 
🍺  /usr/local/Cellar/jenkins/2.176: 8 files, 73.8MB, built in 8 seconds

오 드디어 성공!  맥주 아이콘은 Cheers!인가! 이제 jenkins를 start해보자.

~ % brew services start jenkins
==> Tapping homebrew/services 
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-services'... 
 remote: Enumerating objects: 1434, done. 
remote: Counting objects: 100% (313/313), done. 
remote: Compressing objects: 100% (228/228), done. 
remote: Total 1434 (delta 121), reused 241 (delta 79), pack-reused 1121 
Receiving objects: 100% (1434/1434), 423.47 KiB | 1.19 MiB/s, done. 
Resolving deltas: 100% (598/598), done. 
Tapped 1 command (35 files, 523.2KB). 
==> Successfully started `jenkins` (label: homebrew.mxcl.jenkins)

성공적으로 jenkins가 시작했다고 한다.  이제 http://127.0.0.1:8080 또는 http://localhost:8080에 접속하여 Web에도 잘 뜨는지 확인해보자.

성공!  초기 패스워드를 입력하라고 뜨는 것을 보니 설치가 잘 된 것으로 보인다. 설치를 쭉 진행하면 아래와 같은 화면까지 갈 수 있다.

좀 더 elegant한 방법으로 버전을 설치할 수 있는 방법이 있는지는 고수님들에게 물어봐야 할 것 같다.


Leave a Reply

Your email address will not be published. Required fields are marked *