Pergunta

Eu sou novo no Hudson / Jenkins e me perguntei se existe uma maneira de verificar os arquivos de configuração do Hudson no controle de origem.

Idealmente, quero poder clicar em algum botão na interface do usuário que diz 'Salvar configuração' e ter os arquivos de configuração do Hudson marcarem o controle de origem.

Foi útil?

Solução

Resposta mais útil

Há um plugin chamado Plug -in de configuração de sincronização do SCM.


Resposta original

Dê uma olhada em minha resposta a uma pergunta semelhante. A idéia básica é usar o FileSystem-scm-plugin Para detectar alterações nos arquivos XML. Sua segunda parte seria cometer as alterações no SVN.

EDITAR: Se você encontrar uma maneira de determinar o usuário para uma alteração, informe -nos.

Editar 2011-01-10 Enquanto isso, há um novo plugin: Plug -in de configuração de sincronização do SCM. Atualmente, ele funciona apenas com subversão e git, mas o suporte para mais repositórios está planejado. Estou usando -o desde a versão 0.0.3 e funcionou bem até agora.

Outras dicas

Observe que Vogella tem uma recente (janeiro de 2014, em comparação com a pergunta do OP em janeiro de 2010) e uma opinião diferente sobre isso.
Considere que o Plug -in de configuração de sincronização do SCM pode gerar um monte de COMITES.
Portanto, em vez de confiar em um plug -in e um processo automatizado, ele gerencia o mesmo recurso manualmente:

Armazenando as informações de trabalho de Jenkins em Git

Eu achei a quantidade de começos um pouco esmagadores, então decidi controlar as confirmações manualmente e salvar apenas as informações do trabalho e não a configuração de Jenkins.
Para isso, mude para o seu diretório Jenkins Jobs (Ubuntu: /var/lib/jenkins/jobs) e executar o “git init”Comando.

Eu criei o seguinte .gitignore Arquivo para armazenar apenas as informações do trabalho Git:

builds/
workspace/
lastStable
lastSuccessful
nextBuildNumber
modules/
*.log

Agora você pode adicionar e cometer mudanças por vontade própria.
E se você adicionar outro controle remoto ao seu repositório Git, poderá empurrar sua configuração para outro servidor.

Alberto realmente recomendo adicionar também (em $JENKINS_HOME):

  • Jenkins possui configuração (config.xml),
  • As configurações dos plugins Jenkins (hudson*.xml) e
  • as configurações dos usuários (users/*/config.xml)

Para gerenciar manualmente sua configuração com o GIT, o seguinte arquivo .gitignore pode ser útil.

# Miscellaneous Hudson litter
*.log
*.tmp
*.old
*.bak
*.jar
*.json

# Generated Hudson state
/.owner
/secret.key
/queue.xml
/fingerprints/
/shelvedProjects/
/updates/

# Tools that Hudson manages
/tools/

# Extracted plugins
/plugins/*/

# Job state
builds/
workspace/
lastStable
lastSuccessful
nextBuildNumber

Ver Este Github Gist e esta postagem do blog para mais detalhes.

Há um novo Plug-in de configuração de sincronização do SCM o que faz exatamente o que você está procurando.

Configuração do SCM Sync Plugin Hudson é destinado a 2 recursos principais:

  • Mantenha os arquivos sincronizados do seu config.xml (e outros Ressources) com um repositório SCM
  • Rastrear alterações (e autor) feitas em todos os arquivos com mensagens de confirmação

Na verdade, ainda não tentei isso, mas parece promissor.

Você pode encontrar arquivos de configuração em Jenkins Pasta Home (por exemplo: /var/lib/jenkins).

Para mantê -los em VCs, primeiro login como Jenkins (sudo su - jenkins) e crie suas credenciais Git:

git config --global user.name "Jenkins"
git config --global user.email "jenkins@example.com"

Em seguida, inicialize, adicione e comprometa os arquivos básicos, como:

git init
git add config.xml jobs/ .gitconfig
git commit -m'Adds Jenkins config files' -a

Considere também criar .gitignore com os seguintes arquivos a serem ignorados (personalizados conforme necessário):

# Git untracked files to ignore.

# Cache.
.cache/

# Fingerprint records.
fingerprints/

# Working directories.
workspace/

# Secret files.
secrets/
secret.*
*.enc
*.key
users/
id_rsa

# Plugins.
plugins/

# State files.
*.state

# Job state files.
builds/
lastStable
lastSuccessful
nextBuildNumber

# Updates.
updates/

# Hidden files.
.*
# Except git config files.
!.git*
!.ssh/

# User content.
userContent/

# Log files.
logs/
*.log

# Miscellaneous litter
*.tmp
*.old
*.bak
*.jar
*.json
*.lastExecVersion

Em seguida, adicione: git add .gitignore.

Quando terminar, você pode adicionar arquivos de configuração de trabalho, por exemplo

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

Por fim, adicione e comprometa outros arquivos, se necessário, empurre -o para o repositório remoto, onde deseja manter os arquivos de configuração.


Quando os arquivos Jenkins são atualizados, você precisa recarregá -los (Recarregue a configuração do disco) ou correr reload-configuration De Jenkins CLI.

A maneira como prefiro é excluir tudo na pasta Home Jenkins exceto Os arquivos de configuração que você realmente deseja estar no seu VCS. Aqui está o .gitignore Arquivo que eu uso:

*
!.gitignore
!/jobs/*/*.xml
!/*.xml
!/users/*/config.xml
!*/

Isso ignora tudo (*) exceto (!) .gitignore Por si só, os empregos/projetos, o plug -in e outros arquivos importantes e de configuração do usuário.

Também vale a pena considerar incluir o plugins pasta. Plugins irritantemente atualizados devem ser incluídos ...

Basicamente, essa solução facilita as atualizações futuras de Jenkins/Hudson, porque novos arquivos não estão automaticamente no escopo. Você apenas entra no Screeen o que realmente deseja.

Um mais preciso .gitignore, inspirado na resposta de Nepa:

*
!.gitignore
!/jobs/
!/jobs/*/
/jobs/*/*
!/jobs/*/config.xml
!/users/
!/users/*/
/users/*/*
!/users/*/config.xml
!/*.xml

Ignora tudo, exceto .xml arquivos de configuração e .gitignore em si. (a diferença para Nepa's .gitignore é que não "sem design" todos os diretórios de nível superior (!*/) Curti logs/, cache/, etc.)

Resposta de Mark (https://stackoverflow.com/a/4066654/142207) deve funcionar para SVN e GIT (embora a configuração do GIT não tenha funcionado para mim).

Mas se você precisar trabalhar com o Mercurial Repo, crie um trabalho com o seguinte script:

hg remove -A || true
hg add ../../config.xml
hg add ../../*/config.xml
if [ ! -z "`hg status -admrn`" ]; then
    hg commit -m "Scheduled commit" -u fill_in_the@blank.com
    hg push
fi

Eu tenho escrito um plugin Isso permite verificar as instruções do Jenkins no controle de origem. Basta adicionar um .jenkins.yml Arquivo com o conteúdo:

script:
    - make
    - make test

E Jenkins fará isso:

enter image description here

Eu verifiquei completamente Hudson, você poderia usar isso como ponto de partida https://github.com/morkeleb/continuous-delivery-with-hudson

Há benefícios em manter inteiro hudson em Git. Todas as alterações de configuração são registradas e você pode testar o teste com bastante facilidade em uma máquina e, em seguida, atualizar a (s) outra máquina (s) usando o GIT PULL.

Usamos isso como um caldeira para nossa configuração de entrega contínua do Hudson no trabalho.

Atenciosamente Morten

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top