Como você faz backup dos trabalhos Jenkins e das configurações principais?


56

Eu gostaria de fazer backup de todos os trabalhos e arquivos de configuração do Jenkins. Qual é a maneira mais fácil de fazer isso?


O que você tentou?
030

11
Eu tentei isso .
kenorb

Respostas:


33

Existem várias maneiras de fazer isso, mas a maneira mais fácil de pensar é fazer um backup da pasta Jenkins Home.

Você pode ver onde fica sua casa em Jenkins:

echo $JENKINS_HOME

E, por exemplo, se você deseja fazer backup apenas dos trabalhos, acesse:

cd $JENKINS_HOME/jobs

E faça um backup para essa pasta.

Toda essa configuração será um monte de arquivos XML .

Se você estiver usando a imagem da janela de encaixe Jenkins oficial , a casa será:

/var/jenkins_home

2
Eu precisava mudar para o usuário Jenkins ter acesso à $JENKINS_HOMEvariável de ambiente: sudo su -s /bin/bash jenkinse, em seguida echo $JENKINS_HOME, que para mim foi/var/lib/jenkins
Bryce Guinta

2
O problema com o backup de toda a pasta 'jobs' é que também as execuções dos jobs serão copiadas - isso pode significar muitos GB.
quer

Se o serviço do Jenkins deve reiniciar?
Xin Meng

Página inicial do Jenkins no MacOS (instalação padrão do Homebrew): ~ / .jenkins
chuckSaldana

30

Todos os trabalhos ( jobs/) e arquivos de configuração mestre ( config.xml) podem ser encontrados na pasta inicial do Jenkins ( JENKINS_HOME) na seguinte estrutura:

JENKINS_HOME
 +- config.xml     (jenkins root configuration)
 +- *.xml          (other site-wide configuration files)
 +- userContent    (files in this directory will be served under your http://server/userContent/)
 +- fingerprints   (stores fingerprint records)
 +- plugins        (stores plugins)
 +- workspace (working directory for the version control system)
     +- [JOBNAME] (sub directory for each job)
 +- jobs
     +- [JOBNAME]      (sub directory for each job)
         +- config.xml     (job configuration file)
         +- latest         (symbolic link to the last successful build)
         +- builds
             +- [BUILD_ID]     (for each build)
                 +- build.xml      (build result summary)
                 +- log            (log file)
                 +- changelog.xml  (change log)

A maioria das configurações está no formato XML, portanto, fazer backup de todos os .xmlarquivos deve ser suficiente.

Todas as configurações, logs de construção, arquivos de artefato são armazenados no diretório JENKINS_HOME. Simplesmente arquive este diretório para fazer um backup. Da mesma forma, restaurar os dados está apenas substituindo o conteúdo do diretório JENKINS_HOME de um backup.

Os backups podem ser feitos sem parar o servidor, mas quando você restaurar, pare o servidor.


Para backups consistentes, é uma boa prática manter o JENKINS_HOMEdiretório no repositório Git.

Por exemplo:

cd $JENKINS_HOME
git init
shopt -s globstar
git add **/config.xml
git commit -m'Added job config files' -a

e enviando os arquivos para o repositório externo. Você também pode adicionar o seguinte .gitignorearquivo para ignorar alguns arquivos.

Relacionado: Existe uma maneira de manter os arquivos de configuração do Hudson / Jenkins no controle de origem?


Com que frequência você cria um backup? Você envia o código automaticamente para um repositório git? Se verdadeiro, você cria uma solicitação de recebimento que precisa ser mesclada manualmente (intervenção manual) para fazer alguma verificação de integridade do backup?
030

2
@ 030 Normalmente, manualmente, depois de algumas mudanças importantes, quando eu sei que a configuração é estável e preciso fazer backup, pois o Jenkins geralmente gosta de quebrar coisas, como mudar escravos de unix para janelas por si só, removendo senhas de formulários, então tê-los no git / GitHub, posso facilmente comparar e encontrar os dados ausentes e adicioná-los novamente ou reverter algum arquivo específico. Existem alguns plugins para manter as alterações no histórico, mas não achei útil.
kenorb

Você armazena as senhas no git? Você os criptografa? Você usa pipelines também conhecidos como Pipeline como código?
030

3
@ 030 Jenkins criptografa senhas / credenciais por padrão, mas você pode facilmente descriptografá- las. No entanto, sem a chave mestra (que não deve fazer parte do backup) ou o acesso ao Jenkins, ninguém mais pode. Não estou usando o Pipeline como código.
precisa saber é o seguinte

Como você testa a integridade desse backup no git? Por exemplo, você cria uma máquina virtual ou um sistema docker, monta o repositório git e verifica se tudo ainda funciona?
030

11

Se seus trabalhos do Jenkins estiverem definidos em um arquivo Jenkins, você poderá armazená-lo em um repositório git e carregá-lo usando o Pipeline .

Infelizmente, como nem todos os plugins Jenkins suportam Jenkinsfile e Pipeline, você precisará criar manualmente novos Jenkinsfiles se desejar mover os trabalhos existentes para esse formato.


9

O plug-in de configuração do SCM Sync faz exatamente o que você deseja. Funciona com svn ou git para fazer backup do seu núcleo jenkins e da configuração do trabalho, para facilitar o rastreamento de quem fez as alterações, bem como um backup.


11
Eu literalmente tar a pasta $ JENKINS_HOME, mas isso parece muuuuito melhor.
precisa saber é o seguinte

2
Que os plugins parecem bastante inativos / inoperantes - é realmente funcional e a par a partir de 2017?
Tuukka Mustonen

5

Existem poucas maneiras de fazer backup de dados jenkins e configurações principais. A melhor maneira de fazer backup é usar o plugin Thinbackup. Você pode agendar backups oportunos usando expressões cron. Você também pode configurar o backup completo e o backup incremental.

Outra maneira de fazer backup dos dados e da configuração é tirar o instantâneo do disco do servidor mestre jenkins. A maneira ideal de fazer isso montando um disco e vinculando o diretório de configuração jenkins ao ponto de montagem do disco

Ambos os cenários estão bem explicados nesta postagem do blog . Você terá uma idéia e etapas melhores para as configurações.


3

Eu estou usando scripts de sue445/jenkins-backup-script.

Ele arquiva configurações e plugins do Jenkins, como:

  • $JENKINS_HOME/*.xml
  • $JENKINS_HOME/jobs/*/*.xml
  • $JENKINS_HOME/nodes/*
  • $JENKINS_HOME/plugins/*.jpi
  • $JENKINS_HOME/secrets/*
  • $JENKINS_HOME/users/*

Uso

./jenkins-backup.sh /path/to/jenkins_home archive.tar.gz

# add timestamp suffix
./jenkins-backup.sh /path/to/jenkins_home backup_`date +"%Y%m%d%H%M%S"`.tar.gz

3

Você pode experimentar o plug- in thinBackup (mesmo que não seja mantido ativamente) [se você deseja fazer um backup lógico ] (ou seja, a maioria dos arquivos xml de configuração, trabalhos, nós etc.). O tamanho do backup não será enorme.


1

Eu precisava migrar um Jenkins de uma instância do Windows Server para outra. Finalmente consegui fazer assim:

  • Interrompa o serviço Jenkins (se você puder pagar)
  • Copie a pasta Jenkins inteira (por padrão C:\Program Files x86\Jenkins)
  • Cole na nova instância
  • Entre no diretório e execute jenkins.exe install

Isso registrará o Jenkins recém-colado como um serviço na nova máquina e funcionará 100% da mesma maneira.

Se isso funcionar, se você precisar de um backup apenas para segurança futura, copie a pasta Jenkins em algum lugar. Funcionará como um instantâneo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.