Jenkins CLI를 SSH에서 사용

9909 단어 Jenkinsjenkins2
Jenkins CLI를 실행중인 Jenkins 서버에 SSH 로그인하고 조작하는 방법입니다.

가정 환경


  • CentOS7.5 이상
  • Jenkins 2 이상 (검증 환경은 ver. 2.138.1)
  • 역방향 프록시에 아파치 사용

  • 필요한 플러그인


  • 특히 없음

  • 역방향 프록시 설정



    이 기사 을 참고로 설정합니다.

    Jenkins 설정하기



    포트 번호 설정



    Jenkins 관리 → 글로벌 보안 설정 → SSH 서버 → SSHD 포트에서 무작위로 설정합니다.





    사용자에게 조작 권한 부여



    Jenkins 관리 → 글로벌 보안 설정 → 권한 관리 → 로그인한 사용자에게 권한으로 설정합니다.



    Jenkins CLI 작업을 위한 사용자 만들기



    "Jenkins 관리"→ "사용자 관리"→ "사용자 만들기"에서 이번에는 사용자 "jenkinscli"를 만듭니다. 관리자 계정이 이미 있는 경우 이 단계를 건너뜁니다.





    쌍 키 만들기



    Jenkins가 실행중인 시스템에 SSH 로그인하고 Jenkins CLI를 조작하는 사용자와 같은 이름의 사용자를 만듭니다. 이 사용자의 키를 작성합니다.

    사용자를 추가하는 샘플 코드
    # rootユーザーで実行する / パスワードが必要な場合はpasswdコマンドで適宜設定する
    adduser jenkinscli
    su jenkinscli
    
    # jenkinscliユーザーで実行する
    ssh-keygen
    
    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/jenkinscli/.ssh/id_rsa): 
    Created directory '/home/jenkinscli/.ssh'.
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /home/jenkinscli/.ssh/id_rsa.
    Your public key has been saved in /home/jenkinscli/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:vcbYq/bGKtlhGFQNY+nGYiu2UuKUdWuoDBj/JaPDoNo [email protected]
    The key's randomart image is:
    +---[RSA 2048]----+
    |       .=+       |
    |      .....      |
    |     . o         |
    |.   . = +.       |
    |.o o + BS .      |
    |+ = B * o+ .     |
    |.B B B +.o=      |
    |..O o o o.o.     |
    |o Eo   oo=o      |
    +----[SHA256]-----+
    


    공개키를 Jenkins에 등록하기



    실행중인 Jenkins에 공개 키를 등록합니다.

    Jenkins 관리 → 사용자 관리 → 사용자 이름 → 설정 → SSH Public Keys의 순서로 공개 키를 등록합니다.





    Jenkins CLI 사용



    실행중인 Jenkins에 SSH 로그인하고 Jenkins CLI를 사용합니다.

    포트 조사



    SSH를 사용하여 Jenkins CLI를 활용합니다. 이전에 이 조작용 포트를 랜덤하게 선택하도록 설정했으므로 조작용 포트 번호를 확인합니다.
    # リバースプロクシの設定によって変化する
    curl -v http://localhost:8080/jenkins/login 2>&1 | grep SSH-Endpoint| cut -d':' -f3
    46321
    
    # リバースプロクシの設定によって変化する
    curl -v http://localhost:8080/login 2>&1 | grep SSH-Endpoint| cut -d':' -f3
    46321
    

    Jenkins CLI 실행



    다음 명령으로 Jenkins CLI 도움말 화면을 표시합니다.
    # jenkinscli操作用のユーザーで実行します
    # ポート番号はランダムに変更されますので環境に合わせて下さい
    su jenkinscli
    ssh -l jenkinscli -p 46321 localhost help
    
      add-job-to-view
        Adds jobs to view.
      build
        ジョブをビルドします。オプションで完了するまで待ちます。
      cancel-quiet-down
        "quiet-down"コマンドの処理をキャンセルします。
      clear-queue
        ビルドキューをクリアします。
      connect-node
        ノードと再接続します。
      console
        ビルドのコンソール出力を取得します。
      copy-job
        ジョブをコピーします。
      create-credentials-by-xml
        Create Credential by XML
      create-credentials-domain-by-xml
        Create Credentials Domain by XML
      create-job
        標準入力をConfig XMLとして読み込み、ジョブを新規に作成します。
      create-node
        標準入力をConfig XMLとして読み込み、ノードを新規に作成します。
      create-view
        Creates a new view by reading stdin as a XML configuration.
      delete-builds
        ビルドを削除します。
      delete-credentials
        Delete a Credential
      delete-credentials-domain
        Delete a Credentials Domain
      delete-job
        ジョブを削除します。
      delete-node
        ノードを削除します。
      delete-view
        Deletes view(s).
      disable-job
        ジョブを無効化します。
      disconnect-node
        ノードとの接続を切断します。
      enable-job
        ジョブを有効化します。
      enable-plugin
        Enables one or more installed plugins transitively.
      get-credentials-as-xml
        Get a Credentials as XML (secrets redacted)
      get-credentials-domain-as-xml
        Get a Credentials Domain as XML
      get-job
        ジョブ定義XMLを標準出力に出力します。
      get-node
        ノード定義XMLを標準出力に出力します。
      get-view
        Dumps the view definition XML to stdout.
      groovy
        指定したGroovyスクリプトを実行します。
      groovysh
        対話式のGroovyシェルを起動します。
      help
        利用可能なコマンドの一覧を表示します。
      import-credentials-as-xml
        Import credentials as XML. The output of "list-credentials-as-xml" can be used as input here as is, the only needed change is to set the actual Secrets which are redacted in the output.
      install-plugin
        ファイル、URLおよびアップデートセンターからプラグインをインストールします。
      install-tool
        ツールの自動インストールを実行し、インストール先を表示します。
      keep-build
        ビルドを保存するようにマークします。
      list-changes
        指定したビルドの変更履歴を表示します。
      list-credentials
        Lists the Credentials in a specific Store
      list-credentials-as-xml
        Export credentials as XML. The output of this command can be used as input for "import-credentials-as-xml" as is, the only needed change is to set the actual Secrets which are redacted in the output.
      list-credentials-context-resolvers
        List Credentials Context Resolvers
      list-credentials-providers
        List Credentials Providers
      list-jobs
        指定したビューかItem Groupのすべてのジョブを一覧表示します。
      list-plugins
        インストール済みのプラグインを一覧表示します。
      login
        認証情報を保存して、認証情報なしにコマンドを実行できるようにします。
      logout
        loginコマンドで保存した認証情報を削除します。
      mail
        標準入力の内容をメールとして送信します。
      offline-node
        "online-node"コマンドが実行されるまで、ビルドを実行するノードの使用を一時的に停止します。
      online-node
        直前に実行した"online-node"コマンドを取り消し、ビルドを実行するノードの使用を再開します。
      quiet-down
        Jenkinsは再起動に向けて終了処理を実施中です。ビルドを開始しないでください。
      reload-configuration
        メモリにあるすべてのデータを破棄して、ファイルから再ロードします。設定ファイルを直接修正した場合に役に立ちます。
      reload-job
        Reload job(s)
      remove-job-from-view
        Removes jobs from view.
      restart
        Jenkinsを再起動します。
      safe-restart
        Jenkinsを安全に再起動します。
      safe-shutdown
        Jenkinsを終了モードに変更しビルドが完了後に、シャットダウンします。
      session-id
        Jenkinsの再起動ごとに変化するセッションIDを出力します。
      set-build-description
        ビルドの説明を設定します。
      set-build-display-name
        ビルドの名称を設定します。
      set-build-parameter
        現在実行中のビルドのビルドパラメータを設定、更新します。
      set-build-result
        現在のビルドの結果を設定します。ビルド中に呼び出された場合のみ動作します。
      shutdown
        Jenkinsサーバーを直ちにシャットダウンします。
      update-credentials-by-xml
        Update Credentials by XML
      update-credentials-domain-by-xml
        Update Credentials Domain by XML
      update-job
        標準入力からの情報でジョブ定義XMLを更新します。get-jobコマンドの正反対のことを行います。
      update-node
        標準入力からの情報でノード定義XMLを更新します。get-nodeコマンドの正反対のことを行います。
      update-view
        Updates the view definition XML from stdin. The opposite of the get-view command.
      version
        バージョンを表示します。 
      wait-node-offline
        ノードがオフラインになるのを待ちます。
      wait-node-online
        ノードがオンラインになるのを待ちます。
      who-am-i
        認証情報を表示します。
    

    참고로 한 사이트


  • Running Jenkins behind Apache - Jenkins - Jenkins Wiki
  • Jenkins CLI
  • 좋은 웹페이지 즐겨찾기