J'ai le fichier jenkins-agent.service
suivant placé dans /etc/systemd/system/
:
[Unit]
Description=Jenkins agent
Requires=network-online.target
After=network-online.target
[Service]
ExecStart=/usr/bin/Java -jar /home/jenkins/jenkins/Agent/agent.jar -jnlpUrl http://my.jenkins.server.com:8087/jenkins/computer/Ubuntu%2064-bit/slave-agent.jnlp -secret d1ac22621ad4c460e5f8de4f564345fa7cdb2bea1d26b6f17230451a37a08e7e -workDir "/home/jenkins/jenkins"
Restart=always
[Install]
Wants=network-online.target
WantedBy=multi-user.target
Il est enregistré avec systemd
et fonctionne parfaitement pour démarrer le processus de l'agent Jenkins au démarrage du système. Mais je viens de mettre à jour la version 18.04, et maintenant ce script génère une erreur de syntaxe:
systemd-analyze verify /etc/systemd/system/jenkins-agent.service
File /lib/systemd/system/systemd-journald.service:36 configures an IP firewall (IPAddressDeny=any), but the local system does not support BPF/cgroup based firewalling.
Proceeding WITHOUT firewalling in effect! (This warning is only shown for the first loaded unit using IP firewalling.)
/etc/systemd/system/jenkins-agent.service:7: Failed to resolve unit specifiers on http://my.jenkins.sever.com:8087/jenkins/computer/Ubuntu%2064-bit/slave-agent.jnlp: Invalid slot
jenkins-agent.service: Failed to create jenkins-agent.service/start: Unit jenkins-agent.service is not loaded properly: Exec format error.
Attempted to remove disk file system, and we can't allow that.
Comment cela peut-il être corrigé? Je ne comprends pas ce qui ne va pas. Il dit que le problème vient de la section Unit
. J'ai donc vérifié que /lib/systemd/system/network-online.target
existe (c'est le cas).
Le problème est l'utilisation de %
ici:
.../Ubuntu%2064-bit/...
# ^
SystemD utilise %
comme mot-clé pour divers spécificateurs de format internes, et dans ExecStart
(et frères), ces spécificateurs de format peuvent être utilisés pour le remplacement dynamique de valeurs. Comme il ne peut pas interpréter %2
comme un spécificateur approprié, vous obtenez:
Exec format error
Vous devez vous échapper du %
avec un autre %
:
.../Ubuntu%%2064-bit/...