## Jenkins image for OHRRPGCE For running a local Jenkins instance. This assumes you have installed docker and terraform This is a Jenkins docker image that is capable of running other docker images as build agents. (They actually run as sibling containers, even though they behave as nested child containers) A teraform main.tf file is included for starting up the container with the correct volume mounts (You could definitely accomplish the same thing with docker-compose) ## Instructions # Build the docker image docker build -t myjenkins ./ # Start the docker image terraform init terraform apply ## First Run On the first run, you will be prompted to unlock Jenkins with the initial admin password from: `/var/jenkins_home/secrets/initialAdminPassword` but if that path is inside the docker container, so if you don't want to connect a shell to the container you can look instead on the host at: `/var/lib/docker/volumes/jenkins_home_vol/_data/secrets/initialAdminPassword` After that you will be prompted to install the default recommended plugins, and to create your real admin user password ## Extra Plugins * Go to "Manage Jenkins" * Go to "Manage Plugins" * From "Available" search for "Docker Pipeline" and install it * Allow Jenkins to restart ## Setting up OHRRPGCE build job From the main Jenkins page, pick "New Item" Name it "OHRRPGCE" and pick "Multibranch Pipeline" Fill in the following: * Display Name: OHRRPGCE * Add source: * pick "git" (use plain "git" not "github" even if the url is github) * Input the repository url https://github.com/ohrrpgce/ohrrpgce.git (If using your private fork you might need to add auth) * In "Behaviors" add "filter by name" with wildcards and include "wip" * Skip all other options and pick "Save" at the bottom * Wait for the "Scan multibranch pipeline" to find the Jenkinsfile on the wip branch * OHRRPGCE wip job will be added, and should attempt to build itself * The first build will take a long time because the docker images have to be built Go to "Manage Jenkins" Go to "Manage Credentials" Go to the "Jenkins" (System) store Go to the "Global Credentials unrestricted" domain Click "Add Credentials" Pick "SSH username with private key" For "ID" use "hamsterrepublic-ohrrpgce" Enter directly and paste the private key (matching public key should be appended to ~/.ssh/authorized_keys on the upload host) (Username in the credentials doesn't actually matter, it is a parameter in the Jenkinsfile. Only the ID and private key actually matters) Click "Build with Parameters" and you can change any of the upload parameters that need to be changed for your environment. These values will be remembered for subsequent automatic builds. ## Backup You'll definitely want to back up your jenkins_home_vol docker volume because it contains all the Jenkins state and configuration, including plugins and jobs and logs. The quick and dirty way to back it up is to back up /var/lib/docker/volumes/jenkins_home_vol/_data (that exact location might vary depending on what platform you are running docker on)