Use jenkins para construir um sistema de publicação automatizado para construir jenkins
Perspectiva DevOps de Niu Hengbo
instalação de Jenkins
instalação
Defina o diretório jenkins Defina jenkins em catalina.sh
$ export CATALINA_OPTS="-DJENKINS_HOME=/path/to/jenkins_home/ -Xmx512m"
$ catalina.sh start
Definir jenkins nas variáveis de ambiente do Linux
$ export JENKINS_HOME=/path/to/jenkins_home/
$ catalina.sh start
Defina Jenkins-home no contexto
<Context ...>
<Environment name="JENKINS_HOME" value="/path/to/jenkins_home/" type="java.lang.String"/>
</Context>
Instalação e inicialização
wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war
java -jar jenkins.war
http://localhost:8080
Instale plugins comuns
Escolha instalar
iniciar a instalação
Após a conclusão da instalação do plug-in, comece a configurar o nome de usuário e a senha do administrador. Comece a usar Jenkins
Altere o diretório inicial de Jenkins
O caminho padrão do diretório inicial jenkins é /root/.jenkins/ path. Dependendo do método de inicialização, o método de modificação é ligeiramente diferente.
1. Inicie java -jar jenkins.war diretamente da linha de comando
cat >>/etc/profile<<EOF
export JENKINS_HOME=/data/db/jenkins/
EOF
source /etc/profile
2. Comece com o contêiner Tomcat
vim /data/app/tomcat/bin/catalina.sh
export JENKINS_HOME=/data/db/jenkins/
# OS specific support. $var _must_ be set to either true or false.
3. Modifique o pacote jenkins.war (não recomendado)
vim jenkins /web.xml
<!-- if specified, this value is used as the Hudson home directory -->
<env-entry>
<env-entry-name>HUDSON_HOME</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>/data/db/jenkins/</env-entry-value> #填入路径
</env-entry>
Comece a instalar o plugin
Plug-ins são os mais comumente usados em jenkins, então começamos instalando plug-ins.
método um
Caminho: Gerenciamento do sistema -> Gerenciar plug-ins, comece a instalar os plug-ins.
- Plug-in de pipeline de construção: Plug-in de configuração de processo de construção.
- Plug-in Gitlab: plug-in pull do gitlab.
- Plug-in do Gitlab Hook: plug-in do Gitlab Hook.
- Build Authorization Token Root Plugin: Plug-in de verificação de autorização do usuário.
- SonarQube Scanner para Jenkins: plug-in de gerenciamento de qualidade de código.
- Plugin de acionamento remoto parametrizado: plug-in de acionamento remoto.
- AnsiColor (opcional): este plug-in pode fazer com que a saída do log pelo console Jenkins seja colorida (assim como o console Linux)
- Plugin de integração Maven
- Plug-in de parâmetro de escolha estendida: interface gráfica para configurar parâmetros de múltipla escolha
Método Dois
Upload de plugin Jenkins-plugin management-advanced-upload plugin
Método Três
Faça upload diretamente para o diretório do arquivo (de acordo com o caminho do arquivo de senha acima, você pode saber que o diretório jenkins está em /root/.jenkins/) /root/.jenkins/plugins restart Jenkins
Crie um processo de construção
Insira o nome do projeto - escolha construir um projeto de software de estilo livre
Configurar endereço de download de origem
Adicione a chave de autenticação do gitlab, configure a chave privada do ssh aqui
Adicione a chave pública de ssh-key no gitlab
Configure o processo de construção
Há um ponto a ser observado aqui. Por exemplo, o que devemos fazer se quisermos executar scripts relacionados em uma máquina remota?
Um princípio: durante a execução do jenkins, o usuário que usa o jenkins está executando.
Dois métodos:
- Todos os servidores fazem login sem chave com jenkins.
- A raiz de todos os servidores faz um login sem chave.
É recomendável usar o segundo tipo, porque o script publicado pode envolver problemas de permissão. Se você usar jenkins, pode haver permissões insuficientes.
a melhor solução
sudo ssh -p 52113 [email protected] "/data/scripts/web-deploy.sh"
Executar compilar agora - visualizar a saída do console
explicar:
Jenkins irá clonar em / workspace de jenkins.
[root@linux-node1 web-build16:29:46]#pwd
/root/.jenkins/workspace/web-build
[root@linux-node1 web-build16:29:56]#ls -a
. .. .git index.html README.md
[root@linux-node1 web-build16:29:58]#
[root@linux-node1 web-build16:31:49]#cat /tmp/1.txt
2017-03-01
Aguarde o próximo artigo: Gerenciamento de qualidade de código de sonar