LoginSignup
0
1

More than 1 year has passed since last update.

MacOSでnginxとJenkinsを使う

Last updated at Posted at 2021-02-12

個人の作業メモですが誰かの参考になれば幸いです。

やりたいこと

  • 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>

:warning: /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 )

参考

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1