個人の作業メモですが誰かの参考になれば幸いです。
やりたいこと
- JenkinsでCI環境を作る
- nginxでプロキシして
http://localhost/jenkins
でJenkinsにアクセスできるようにする
環境
macOS Catalina 10.15.7
Homebrew 3.0.0
java 1.8.0_151
nginx
インストール
$ brew install nginx
自動起動
$ brew services start nginx
設定変更
/jenkins
のリクエストを8080ポートで受け付けるように設定。
デフォルトで/usr/local/etc/nginx/servers/*
がincludeされる設定になっているため、該当ディレクトリにJenkins用のファイルとして作成しておく。
/usr/local/etc/nginx/servers/jenkins.conf
upstream jenkins {
server 127.0.0.1:8080;
}
/usr/local/etc/nginx/nginx.conf
location ~ /jenkins {
proxy_pass http://jenkins;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
Jenkins
インストール
$ brew install jenkins
自動起動
$ brew services start jenkins
設定変更
http://127.0.0.1:8080/jenkins
でアクセスするために以下を設定。
/usr/local/opt/jenkins/homebrew.mxcl.jenkins.plist
<string>--httpListenAddress=127.0.0.1</string>
<string>--httpPort=8080</string>
<string>--prefix=/jenkins</string>
/usr/local/opt/jenkins
は /usr/local/Cellar/jenkins/バージョン
のシンボリックのため、Jenkinsをバージョンアップすると無効になります。
Jenkinsの画面からJenkinsURLを設定
この時点で http://localhost/jenkins
にアクセスしてJenkinsが開けるはず。
Jenkinsの管理
を開くと 「リバースプロキシーの設定がおかしいようです。」 と警告されるので、
Jenkinsの管理 -> システムの設定 -> Jenkins URL
を
http://localhost/jenkins/
に変更して警告が消えれば完了。
おまけ : JNLPスレーブ
これだけだとJNLP経由でslaveエージェントを起動しようとした時にエラーが出ていた
$ java -jar agent.jar -jnlpUrl http://localhost/jenkins/computer/build/jenkins-agent.jnlp
8 11, 2021 7:36:15 午前 hudson.remoting.jnlp.Main createEngine
情報: Setting up agent: build
8 11, 2021 7:36:15 午前 hudson.remoting.jnlp.Main$CuiListener <init>
情報: Jenkins agent is running in headless mode.
8 11, 2021 7:36:15 午前 hudson.remoting.Engine startEngine
情報: Using Remoting version: 4.10
8 11, 2021 7:36:15 午前 hudson.remoting.Engine startEngine
警告: No Working Directory. Using the legacy JAR Cache location: /Users/tochigi/.jenkins/cache/jars
8 11, 2021 7:36:15 午前 hudson.remoting.jnlp.Main$CuiListener error
重大: Handshake error.
io.jenkins.remoting.shaded.javax.websocket.DeploymentException: Handshake error. at io.jenkins.remoting.shaded.org.glassfish.tyrus.client.ClientManager$3$1.run(ClientManager.java:658)
at io.jenkins.remoting.shaded.org.glassfish.tyrus.client.ClientManager$3.run(ClientManager.java:696)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
...
これを解決するには以下の設定が必要
-
Jenkinsの管理 -> グローバルセキュリティの設定 -> Agents -> 固定TCPポート
- 任意のポート番号を指定 ( 例:
8888
)
- 任意のポート番号を指定 ( 例:
-
Jenkinsの管理 -> ノードの管理 -> 該当ノードの設定 -> 起動方法 -> 高度な設定 -> トンネル接続
- Jenkinsのホストとポート番号を指定 ( 例:
localhost:8888
)
- Jenkinsのホストとポート番号を指定 ( 例: