Wie konfiguriere ich einen Jenkins-Job, um einen bestimmten Server als Ziel bereitzustellen?

2587
Kiran

Ich verwende zwei CentOS-Server. Ich verwende kein Code-Repository. Wenn ich in "Jenkins" auf "New Item" klicke, sehe ich keinen Platz für den Zielserver. Ich erwarte, dass ein Zielserver für einen bestimmten Build konfiguriert werden kann (z. B. um einen Bash-Befehl auszuführen oder eine Datei vom Jenkins-Server zum Zielserver zu übertragen). Da Jenkins auf der Linux-Seite als Jenkins-Benutzer ausgeführt wird, kann SSH nicht als Root-Benutzer ausgeführt werden. Ich möchte root sein und einen Befehl ausführen, nachdem eine Datei vom Linux-Server übertragen wurde, der Jenkins unterstützt. Ich könnte dies mit nativen Shell-Befehlen in den Erstellungsschritten "New Item" von Jenkins tun. Es gibt ein Freitextfeld für solche Befehle. Ich weiß jedoch nicht, wie ich interaktiv auf die Kennwortherausforderung reagieren soll.

Wo konfiguriere ich den Zielserver einer bestimmten Bereitstellung?

Kann ich das root-Passwort fest in den Jenkins-Job eingeben? Wenn ja, wie mache ich das? Ich möchte sshpass nicht installieren.

Welche Plugins sind neben Core-Jenkins erforderlich, um Dateien von einem Linux-Server auf einem anderen Linux-Server bereitzustellen?

0

1 Antwort auf die Frage

0
pKami

In Jenkins you use labels to define where a project can be built. Once you create a new item you will see (in the job configuration) a checkbox named "Restrict where this project can be run". Here can either use the slave node name (for example slave4.mycompany) or create a label which is a container for multiple slaves. Once properly filled out, this job will always build on the given slave node.

If you need more functionality than that, try the NodeLabel Parameter Plugin (nodelabelparameter). You can install it from Manage Jenkins > Manage Plugins > Available.

To identify which node you are on during the build, you can for instance manually set persistent environment variables on both build slaves, as example $SLAVENAME returning "buildslave1", or use the linux "hostname" command in your scripts to identify the current context, and based on that output decide how to proceed.