特定のタスクディレクトリと特定のユーザーアカウントでJenkinsを実行する方法は?

特定のタスクディレクトリと特定のユーザーアカウントでJenkinsを実行する方法は?

jenkins.warで実行するには、次のコマンドを使用しています。

  jenkins -jar jenkins.war

しかし、戦争を実行するときは、次のパスを指定したいと思います。

 `/data/jenkins`

jenkinsユーザーとして実行する必要があります。これで、ディレクトリrootの下でユーザーとして/root実行されています。

どうすればいいですか?

答え1

スクリプトで次の環境変数を使用しました。

JENKINS_HOME="/data/jenkins" JENKINS_WAR="/data/jenkins/jenkins.war"

-D オプションを使用して Java に渡します。

Java -DJENKINS_HOME=$JENKINS_HOME -jar $JENKINS_WAR

# ps -ef | grep java
root         5     1  0 Mar19 ?        00:05:10 /apps/java/jdk1.8.0_121/bin/java  -DJENKINS_HOME=/data/jenkins -jar /data/jenkins/jenkins.war

答え2

Jenkins Wikiでは、これをUnixデーモンに設定する方法について説明します。JenkinsをUnixデーモンとしてインストールする。あなたの質問にRHELタグがあり、RHEL 7が使用されているため、Jenkinsをサービスsystemdとして実行するように設定できます。systemdこれを行う手順は次のとおりです。

  1. まず、Jenkins WARファイルをダウンロードしてどこかに配置する必要があります。私は場所を選んだ/opt/jenkins/jenkins.war

  2. /data/jenkins次に、使用するデータディレクトリを作成/準備する必要があります。

  3. これで、次の名前のシステムユーザーアカウントを作成できますjenkins

    useradd -r jenkins
    
  4. 次に、Jenkins WARファイルとデータディレクトリの所有権をこの新しいユーザーに変更します。

    chown -R jenkins:jenkins /opt/jenkins/
    chown -R jenkins:jenkins /data/jenkins/
    
  5. 次に、systemd新しいユニットファイルを作成してサービスを定義します。

    vi /etc/systemd/system/jenkins.service
    
    [Unit]
    Description=Jenkins Daemon
    
    [Service]
    ExecStart=/bin/java -jar /opt/jenkins/jenkins.war
    User=jenkins
    Environment=JENKINS_HOME=/data/jenkins
    
    [Install]
    WantedBy=multi-user.target
    
  6. 再読み込みしてsystemd新しいユニットについて学びます。

    systemctl daemon-reload
    
  7. 最後にJenkinsを起動します。

    systemctl start jenkins
    

これで、ポート8080からJenkinsにアクセスできます。ポートが有効な場合は、システムで実行してそれを許可するfirewalld必要があります。firewall-cmd --add-port=8080/tcp

これでJenkinsログを表示することができますjournalctl _SYSTEMD_UNIT=jenkins.service。実行中の場合は、ユーザーとして実行中であることps -ef | grep jenkinsを示しますjenkins

jenkins   1749     1  7 11:04 ?        00:00:35 /bin/java -jar /opt/jenkins/jenkins.war

追加ボーナスでsystemctl enable jenkinsシステム起動時に自動的に起動するようにするには、Jenkinsサービスを実行してください。

関連情報