Skip to content

eea/eea.docker.jenkins

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

77 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Docker orchestration for EEA Jenkins CI

Docker orchestration for EEA Jenkins

Changes

Installation

  1. Install Docker.
  2. Install Docker Compose.

Usage

$ git clone https://github.com/eea/eea.docker.jenkins.git
$ cd eea.docker.jenkins
$ docker-compose up -d

Setup Jenkins at http://localhost

  • Login as admin. Get the generated admin password within master logs:

      $ docker-compose logs master
    
  • Create user jenkins with password jenkins (or the one you've set within docker-compose.yml) in order to allow workers to connect.

      JENKINS_USER: "jenkins"
      JENKINS_PASS: "jenkins"
    
  • To add more Jenkins workers:

      $ sudo docker-compose scale worker=3
    
  • Check that everything started as expected and the slave successfully connected to master:

      $ sudo docker-compose logs worker
    

Restore existing jenkins configuration

Production

Deployment

Note: See EEA SVN for answers.txt files

  • Within Rancher Catalog > EEA deploy:

    • EEA - Jenkins (Master)
    • EEA - Jenkins (Worker)
    • EEA - Jenkins (EEA Worker)
  • Deploy EEA - Jenkins (Docker Worker) with docker-compose (recommended)

    $ ssh user@docker-host-1
    $ cd /var/local/deploy
    $ git clone https://github.com/eea/eea.rancher.catalog.git
    $ ln -s eea.rancher.catalog/templates/jenkins-worker-dind jenkins-worker-dind
    $ cd jenkins-worker-dind
    
  • Add deployment environment variables:

    $ vim .env
    $ echo "JENKINS_NAME=docker-$(hostname)" >> .env
    
  • Deploy the latest version (e.g.: 4):

    $ docker-compose -f 4/docker-compose.yml up -d
    

Production data migration

You can access production data for Jenkins Master is within jenkins-master volume:

jenkins-master:/var/jenkins_home

And jenkins-worker volumes:

jenkins-worker:/var/jenkins_home/worker

Thus:

  1. Start rsync client on host where do you want to migrate Jenkins master data (DESTINATION HOST):
  $ docker run -it --rm --name=r-client -v jenkins-master:/var/jenkins_home  eeacms/rsync sh
  1. Start rsync server on host from where do you want to migrate Jenkins master data (SOURCE HOST):
  $ docker run -it --rm --name=r-server -p 2222:22 --v jenkins-master:/var/jenkins_home  \
               -e SSH_AUTH_KEY="<SSH-KEY-FROM-R-CLIENT-ABOVE>" \
           eeacms/rsync server
  1. Within rsync client container from step 1 run:
  $ rsync -e 'ssh -p 2222' -avz --numeric-ids root@<SOURCE HOST IP>:/var/jenkins_home/ /var/jenkins_home/
  1. Start rsync client on host where do you want to migrate Jenkins worker data (DESTINATION HOST):
  $ docker run -it --rm --name=r-client -v jenkins-worker:/var/jenkins_home/worker eeacms/rsync sh
  1. Start rsync server on host from where do you want to migrate Jenkins worker data (SOURCE HOST):
  $ docker run -it --rm --name=r-server -p 2222:22 -v jenkins-worker:/var/jenkins_home/worker \
               -e SSH_AUTH_KEY="<SSH-KEY-FROM-R-CLIENT-ABOVE>" \
           eeacms/rsync server
  1. Within rsync client container from step 4 run:
  $ rsync -e 'ssh -p 2222' -avz --numeric-ids --exclude="workspace" root@<SOURCE HOST IP>:/var/jenkins_home/worker/ /var/jenkins_home/worker/

Copyright and license

The Initial Owner of the Original Code is European Environment Agency (EEA). All Rights Reserved.

The Original Code is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

Funding

European Environment Agency (EU)