Jenkinsのセットアップ(インストールとsshの設定)

Jekinsのインストール,設定メモ.Markdownで残っていたので公開する.

install & run (for mac)

$ brew install jenkins # インストール
$ java -jar /usr/local/opt/jenkins/libexec/jenkins.war # 起動.デフォルトポート:8080

Publish over SSH

JenkinsからリモートサーバへSSH&SCPするために使用したプラグイン. Jenkinsのホストで生成した秘密鍵と公開鍵を用いてリモートサーバにアクセスする.

  • ssh keyの生成 (<ホームディレクトリ>/.ssh/に秘密鍵id_rsa,公開鍵id_rsa.pubが生成されたとする)
[Jenkins host]
$ ssh-keygen -t rsa
Enter file in which to save the key (<ホームディレクトリ>/.ssh/id_rsa): <鍵の保存先と名前>
Enter passphrase (empty for no passphrase): <鍵のパスフレーズ>
  • 公開鍵をリモートサーバにコピー
  • 公開鍵の登録
[remote server]
$ cat id_rsa.pub >> ~/.ssh/authorized_keys 
  • Jenkinsに登録
    • [Jenkinsの管理] -> [システムの設定] -> Publish over SSH
      • 鍵の設定
      • Remote Serverの追加
        • [追加] をクリックし,出現した項目に以下を入力
          • Name : サーバの名前
          • Hostname: サーバのアドレス or URL
          • Username: アクセスするユーザ
        • [Test Configuration] をクリック.接続テスト 
  • ジョブ毎の設定
    • [設定]
      • ビルド環境以下の2つが設定可能となる(上がビルド前,下がビルド後に実行)
        • Send files or execute commands over SSH before the build starts
        • Send files or execute commands over SSH after the build runs
      • 各設定
        • Name : 設定したサーバの名前
        • Transfers: 送るファイル,実行するコマンド
      • [Add Transfer Set] で実行するサーバ,コマンドを増やす事ができる.
      • Tips
        • [高度な設定]により設定を追加できる.
          • Exec timeout (ms) : SSHで実行する操作のタイムアウトの時間を設定.時間がかかる処理は数を増やしておく.

pluginを用いない場合のSSHの設定

ビルドのシェルスクリプトsshのコマンドを利用する.

$ ssh -i <秘密鍵> <リモート先> <実行コマンド>

sudoのパスワードと秘密鍵パスフレーズを突破する必要があるため,以下の設定を行っておく必要がある.

  • sudoのパスワード省略
    • visudoで/etc/sudoersに以下の行を追加する.%sudo ALL=(ALL:ALL) ALLの下に追記した.
$ sudo visudo
<username> ALL=(ALL) NOPASSWD:ALL
[Mac]
$ ssh-add -l # 秘密鍵の登録状況
$ ssh-add <秘密鍵>

[Linux]
$ eval `ssh-agent`
$ ssh-add -l
$ ssh-add <秘密鍵>

Tips: sudo できなくなったら. Ubuntuの場合

  • Shiftを押しながら起動.シングルユーザモード(recoverey mode)でログイン.
  • root Drop to root shell prompt

なんでこんなTipsがあるかって? 察して.

Reference