/ Linux

Create Linux user for CI/CD(Jenkins here)

Why

You often needs to execute shell scripts on the remote machine if you are using Jenkins to do CD to a remote server from your central server. Sometimes you must prefix your command with sudo in order to complete your deployment, here the problem comes, sudo will prompt you to enter password and this is what you can't do from Jenkins.

Solution

  1. Add a dedicated user for Jenkins, eg: ci
sudo adduser USERNAME
sudo usermod -aG sudo USERNAME
  1. From your local machine, set up private key login.
    Note I'm on MacOS Mojave, this version somehow has a new public/private version, if you simply do ssh-keygen without the parameters below, Jenkins will not be able to use the private key. So if you're on the latest MacOS, use the below command to generate your key.
ssh-keygen -m PEM -t rsa -b 4096
ssh-copy-id -i PUBLIC_KEY_PATH USER@HOST
  1. Go back to your remote host
    Run sudo visudo
    Add a line at the END of the file.
    USERNAME ALL = (ALL) NOPASSWD: ALL
    replace USERNAME with your ci user name.
  2. Save the file.

Now Jenkins should be able to run sudo command smoothly.

Comments are welcomed!

mimimi

mimimi

Currently a Computer Engineering student at the National University of Singapore, passionate about software engineering. Contact me: info at mimimi.fun

Read More
Create Linux user for CI/CD(Jenkins here)
Share this