LoginSignup
2
3

More than 3 years have passed since last update.

Jenkinsバージョンアップ後にハマった件

Last updated at Posted at 2021-03-31

はじめに

  • 1年ぶりにjenkins本体のバージョンを最新(2.286)まで一気に更新したところ、大ハマリしたので問題と対処法をメモしておく
  • 環境はEC2(Amazon Linux 2)上に構築したものとする

(1) java.lang.IllegalStateException: An attempt to save the global configuration was made before it was loaded

状況

  • jenkins再起動後にこのエラーが出て何もできない状態になる
  • プラグインのバージョンを上げずに、jenkins本体のバージョンを最新まで上げてしまった場合に起こる模様

対策

  • jenkinsを安定版の2.263に一旦ダウングレードして再起動(a)
    • ここですんなり起動すれば問題ないものの、今回は次の(2)の問題が発生
sudo yum downgrade jenkins-2.263
sudo systemctl restart jenkins
  • 再起動後、GUI上でプラグインのバージョンを上げる
  • プラグインのバージョンアップ後に再度jenkinsを最新版までバージョンアップし、再起動
sudo yum install jenkins
sudo systemctl restart jenkins

(2) com.thoughtworks.xstream.mapper.CannotResolveClassException: hudson.security.LDAPSecurityRealm

状況

  • jenkins再起動後にこのエラーが出て何もできない状態になる
  • (1)の(a)でダウングレード後に発生

対策

  • /var/lib/jenkins/config.xml のバックアップを取っておく
  • /var/lib/jenkins/config.xml<securityRealm ...>...</securityRealm> を削除する
    • 今回はLDAP認証の設定なので、これにより既存ユーザとしてはログインできなくなる
    • (role-strategyで運用している場合)匿名ユーザにadminロールを一時的に付ける
    • /var/lib/jenkins/config.xml<authorizationStrategy ...> のうち、adminロールのassignedSIDsに <sid>anonymous</sid> を追加する
<authorizationStrategy class="com.michelin.cio.hudson.plugins.rolestrategy.RoleBasedAuthorizationStrategy">
    [...]
    <role name="admin" pattern=".*">
    <permissions>
        [...]
    </permissions>
    <assignedSIDs>
        <sid>anonymous</sid>
        [...]
    </assignedSIDs>
    </role>
    [...]
</authorizationStrategy>
  • /var/lib/jenkins/config.xml を編集したら再起動し、(1)の(a)に戻る

参考: https://stackoverflow.com/questions/55742680/jenkins-fails-to-start-after-restart-due-to-com-thoughtworks-xstream-mapper-cann

(3) jenkins slave(agent)とのJNLP接続が切れる

状況

  • jenkins slaveとの接続が全て切れている

対策

  • グローバルセキュリティの設定のうち、agent用のポート(TCP port for inbound agents)が無効になっていないか確認
    • 無効になっている場合は適当なポートを指定する
  • jenkins slaveホスト側のjnlpUrlを確認して変更
    • 旧: "java ... -jnlpUrl http://{host}/computer/agent_name/slave-agent.jnlp"
    • 新: "java ... -jnlpUrl http://{host}/computer/agent_name/jenkins-agent.jnlp"
    • ポリコレの流れでmaster/slaveという用語の見直しがあったためと思われる
  • jnlpUrlの変更後、JNLP接続を張り直す

参考: https://issues.jenkins.io/browse/JENKINS-35452

2
3
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
2
3