[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한 방법으로 버전을 설치할 수 있는 방법이 있는지는 고수님들에게 물어봐야 할 것 같다.