Recentemente, os líderes pediram a projetos locais em Xangai que usassem Jenkins para obter implantação automatizada, para que os projetos possam ser entregues aos estudantes de operação e manutenção para reduzir a carga de trabalho de desenvolvimento. Registre o processo de escalar este poço.
1. Prefácio
Jenkins é uma ferramenta de integração contínua desenvolvida com base no Java para monitorar o trabalho repetitivo contínuo, e suas funções incluem:
1. Projetos contínuos de liberação/teste de versão do software.
2. Monitore o trabalho executado por chamadas externas.
Eu baixei o acima da enciclopédia. Para ser sincero, eu não entendi. O que é isso? De fato, com base no meu entendimento e aplicação atuais, a coisa mais comum é a implantação. Outras funções devem ser estudadas (_) O mestre está atualmente trabalhando em uma empresa estatal desconhecida em Xangai. O processo de liberação atual do projeto é:
1. Servidor local ou embalado usa Maven para fazer um pacote de guerra
2. Conecte -se ao servidor de projeto remotamente ou SSH
3. Pare de Tomcat, exclua o pacote antigo e o cache e coloque o pacote recém-impresso em
4. Reinicie o tomcat. Os passos aparentemente simples para concluir, mas na verdade leva muito tempo de desenvolvimento.
Em seguida, use Jenkins:
1. Clique para construir agora e conclua. O que? Basta clicar em um botão e está pronto. Sim, é um botão. De fato, depois de clicar no botão, Jenkins ajudou você a executar o plano de fundo do processo acima. Desta vez, apresentarei como fazê -lo funcionar em segundo plano.
2. Instalação e construção
Esta introdução é baseada no Windows, que pode ser instalada em um computador de desenvolvimento ou em um servidor Windows Server
1. Baixe Jenkins
Jenkins fornece vários métodos de instalação
1.1Jenkins.MSI A instalação é como quando geralmente instalamos software, pontos. Endereço para download: https://jenkins.io/download/
Pacote 1.2Jenkins.WAR Como é um pacote de guerra, é preciso dizer que todo mundo sabe como iniciá -lo, basta jogá -lo no tomcat. Endereço para download: http://updates.jenkins-ci.org/download/war/
2. Comece Jenkins
Pessoalmente, recomendo o método de instalação de 1.1. Costumo encontrar problemas de transbordamento de memória ao usar 1.2. Obviamente, o excesso de memória pode ser ajustado, mas há uma carga de trabalho extra.
Usando o método de instalação 1.1, após a conclusão da instalação, veremos o serviço Jenkins no serviço Windows. Conforme mostrado na figura abaixo, basta iniciar e fechar e reiniciar o serviço diretamente.
Se você usar 1.2 para baixar o pacote de guerra, na verdade existem duas maneiras de iniciá -lo.
O primeiro tipo é colocado no contêiner Tomcat.
O segundo tipo deve entrar no CMD no diretório de instalação, java -jar jenkins.war
3. Instale Jenkins
O método de instalação 1.1 e 1.2 são os mesmos
Jenkins Porta 8080, pode ser modificada, Method Baidu.
Digite http: // localhost: 8080/. O caminho da fonte vermelha possui uma senha, preencha a senha e depois a próxima etapa.
Ao escolher um plug-in, é recomendável escolher um plug-in oficial recomendado para evitar muitos problemas.
Esperando pela instalação ...
Após a instalação, você verá a figura abaixo. O nome de usuário e a senha são usados para fazer login. O nome completo é usado para exibi -lo. Continue para a próxima etapa.
Como eu quero implantar o projeto Maven, não há maven no plug -in padrão do Jenkins, então preciso instalá -lo primeiro.
Clique no plug -in abaixo para instalá -lo diretamente, Maven Integration Plugins
Instale a implantação do plug -in de implantação quente no plug -in de contêiner
4. Configure Jenkins
Precisamos corresponder ao endereço do arquivo de configuração do Maven, JDK e Maven. O arquivo de configuração deve ser correspondido. Não use -o como padrão. Como isso não é comparado, você está lutando há muito tempo.
Finalmente, basta aplicar e salvar. Lembre -se de não esquecer de salvar o aplicativo, caso contrário, será em vão.
Em seguida, criaremos um novo projeto, primeiro digite o nome do projeto, selecione o projeto Maven, OK
Selecione Gerenciamento de código -fonte, porque somos um projeto corporativo, não de código aberto, use SVN, escolha Subversão para configurar o SVN
O URL é o seu endereço SVN, e as credenciais são a senha da conta
Em seguida, vá para as etapas pré, essa coisa é quais operações são necessárias antes da embalagem. Por exemplo, nosso projeto atual precisa copiar o arquivo log4j.xml, etc. Você pode escrever scripts do Windows ou Shell de acordo com o ambiente
Se não houver operação, não há necessidade de corresponder.
Publique meu script para sua referência. Usarei XXX para substituir as peças relevantes.
@echo offrem set variable :: App.xxx App.xxx Código Local e Directory Set App.xxx = "d: /svn/svn.173.xxx/app.xxx/" ::mm.ommm Log4j.xml variável ::omm_log4j_goals_path the Path para path para Home_omm_log4j_goals_path = "d: /svn/svn.173.xxx/app.xxx/src/home.ommm/src/main/Resources" :: home_omm_log4j o caminho do log4j.xml Test Ambiente de home.ommm set set HOME_OMM_LOG4J="D:/svn/svn.173.XXX/app.XXX/config/home.ommm/sh_test/resources"::home.ommm's log4j.xml variable END::home.weixin's variable START::HOME_WEIXIN_LOG4J_GOALS_PATH The path of the log4j.xml stored at home.weixin's log4j.xml HOME_WEIXIN_LOG4J_GOALS_PATH="D:/svn/svn.173.XXX/app.XXX/src/home.weixin/src/main/resources"::HOME_WEIXIN_LOG4J The path of the log4j.xml test environment of home.weixin set Home_weixin_log4j = "d: /svn/svn.173.xxx/app.xxx/config/home.weixin/sh_test/resources" :: home_weixin_config.js_goals_path config.js Path HOME_WEIXIN_CONFIG.JS_GOALS_PATH="D:/svn/svn.173.XXX/app.XXX/src/home.weixin/src/main/webapp/module/js"::HOME_WEIXIN_CONFIG.JS home.ommm's path HOME_WEIXIN_CONFIG.JS home.ommm's path set Home_weixin_config.js = "d: /svn/svn.173.xxx/app.xxx/config/home.weixin/sh_test/webapp/module/js" :: home.weixin variable the storebiable start ::log4jg4jg4jg4jg4jg4jg4Js ": Service_log4j_goals_path = "d: /svn/svn.173.xxx/app.xxx/src/service/src/main/resources" :: Service_log4j O caminho do ambiente de teste log4j.xml do serviço é definido Service_Log4J = "d: /svn/svn.173.xxx/app.xxx/config/service/sh_test/resources" :: Service_application_resources_all_goals_path O caminho do aplicativo-resources-all.xml é definido Service_application_resources_all_goals_path = "d: /svn/svn.173.xxx/app.xxx/src/service/src/main/resources/config/spring" :: Service_Application_Resources_All Application-sources-all.xml.xml Service_Application_Resources_all = "d: /svn/svn.173.xxx/app.xxx/config/service/sh_test/resources/config/spring" :: variable end :: Service.refresh Variable :: de Of Service_Refresh_Log4_Log4_LOGL4J_GRAIBT_GRAIX_GRIATS_GRATELTELTEL_GRATELTEL_GRATH_GRATH_GHRESHELT4J_GRATE. Service_refresh_log4j_goals_path = "d: /svn/svn.173.xxx/app.xxx/src/service.refresh/src/main/Resources" :: Service_refresh_log4j Service Set Service Set Service_Refresh_Log4J = "d: /svn/svn.173.xxx/app.xxx/config/service.refresh/sh_test/resources" :: Service_refresh_application_resources_all_lgoals_path the Path to Application Application-Ald.xlic.xml é SERVICE_REFRESH_APPLICATION_RESOURCES_ALL_GOALS_PATH="D:/svn/svn.173.XXX/app.XXX/src/service.refresh/src/main/resources/config/spring":: SERVICE_REFRESH_APPLICATION_RESOURCES_ALL application-resources-all.xml test environment path set Service_refresh_application_resources_all = "d: /svn/svn.173.xxx/app.xxx/config/service.refresh/sh_test/Resources/config/spring" :: Service.refresh Variable end :: Judge se o log4j.xml filefrend of.erfresh %Home_omm_log4j_goals_path %/log4j.xml (del %home_omm_log4j_goals_path %/log4j.xml) CD %home_omm_log4j_goals_path %cópia %home_omm_log4j %log4j.xml Log4j.xml: %Home_weixin_log4j_goals_path %/log4j.xml (del %home_weixin_log4j_goals_path %/log4j.xml) CD %home_weixin_log4j_goals_path %/log4j.xml) CDPEL_WPHPATILING4J_GOM_GHATH %/log4j.xml) %Home_weixin_log4j %/log4j.xml log4j.xml :: julga se o arquivo config.js de home.weixin existe se existir %home_weixin_config.js_goals_path %/config.js (del %config.wixin_config.JS_GATS_PATHLOALS_PATHEL/config.js (del %config_wixin_config.js_ghoal %Home_weixin_config.js_goals_path %copy %home_weixin_config.js %/config.js config.js :: julgar se o arquivo config.xml de serviço existe se existir %service_log4j_goals_path %/log4j.xml ( %) service_og4j_goals_path %/log4j.xml (%.log4jg4j_goals_path/Log4j.xml ( %) %Service_log4j_goals_path %cópia %service_log4j %/log4j.xml log4j.xml :: JULGE se o arquivo de aplicativo-resources-all.xml do serviço existe %service_application_resources_all_goals_path %/aplicação-resources-ll.xml (DELSLATIONSLACIONAIS_ALL_GOALS_PATH/ %Service_application_resources_all_goals_path%/aplicativo-resources-all.xml) CD%Service_application_resources_all_goals_path%copy%service_application_resources_all%/Application-resources-all.xml Application.xmlslt.sheshshheshsheshsheshsheshsffsffshits exstert.shesh.Sheshshesh.Sheshshesh.Sheshsheshsheshsheshsffsfsfsfsfs.xml. %Service_refresh_log4j_goals_path%/log4j.xml (del%Service_refresh_log4j_goals_path%/log4j.xml) CD%Service_Refresh_Log4j_goals_path%copy_refresh_log4j%/log4j.xml log4jml Log4jml Log4j.xl.xl.xl.xl.x.lpation Service.Refresh Existe se existir %Service_refresh_application_resources_all_goals_path %/Application-resources-all.xml (del %Service_refresh_application_resources_all_goals_path %/Application-resources-l.xml) CD %Service_refresh_application_resources_all_goals_path %/aplicativo-resources-all.xml) CD %Service_refresh_application_resources_all_goals_path %copy Service_refresh_application_resources_all/Application-Resources-l.xml-RESOUSCESMO
A construção foi compilada, especificando o local do POM e o comando MVN. A propósito, você também pode configurar o espaço de trabalho no nível avançado, que não corresponde ao padrão no diretório de instalação Jenkins.
Após a construção, a operação é onde colocá -lo após a conclusão da embalagem. Selecione a seguinte imagem
Após esta operação de construção, usamos a implantação quente do Tomcat. Você pode se referir ao meu artigo anterior: a implantação quente de Tomcat
Guerra/ouvido: o endereço do pacote de guerra
Contexto: é o nome do pacote implantado
Nome de usuário/senha refere -se à conta/senha para implantação a quente tomcat
URL: interface Tomcat, como: http://172.16.101.71:8180/
5. Comece a construir
Depois de falar tanto, finalmente chegou a hora de chegar. A operação de um botão finalmente chegou. Você pode ver nosso projeto quando retornar à página inicial de Jenkins.
Após a construção, clique no status de execução da construção no canto inferior esquerdo para ver que nosso projeto está em construção. Clique no nome do projeto para inserir
Selecione console para ver a mensagem de log ou erro impressa durante o processo de construção.
3. Problemas existentes
A questão do papel de Jenkins, desde que é lançada, envolve o ambiente de produção. Todos os usuários não podem ter permissão para implantar o ambiente de produção. Se alguém clicar acidentalmente. As consequências ... não posso acreditar.
Solução: Instale a estratégia de autorização baseada em função, consulte as etapas restantes: http://www.cnblogs.com/zz0412/p/jenkins_jj_14.html. Eu não sou detalhado.
O problema da implantação do Tomcat Hot, o aumento da memória e o transbordamento após implantar várias vezes, parar de executar ou relatar um erro. Eu verifiquei o problema da própria implantação on -line e estou procurando uma solução ...
Solução: Existem problemas com a própria implantação do Tomcat Hot, e o ambiente de produção geralmente não adota o método de implantação a quente. Atualmente, como meu ambiente de teste está usando o sistema Windows Server 2008, ele adota o método de implantação a quente. O problema ainda existe. No entanto, li um post que ele pode ser resolvido usando o comando Windows Batch, que é o comando BAT, mas não o estudei em profundidade. No sistema Linux no ambiente de produção, atualmente uso a publicação sobre o plug-in SSH. As etapas específicas são adicionar as etapas abaixo à configuração.
1. Nas configurações de gerenciamento de sistemas, encontre publicar sobre SSH e digite:
2. Configure as etapas de postagem
Aqui continuaremos com o projeto acima. Esta configuração será exibida apenas após a instalação do plug-in acima!
Transfer Setsource Arquivos: Indica o pacote de guerra local e o caminho para fazer upload, você pode ir ao espaço de trabalho para visualizá -lo.
Remover prefixo: significa a pasta a ser removida ao fazer upload, ou seja, apenas o pacote de guerra é carregado
Exercício remoto: significa o caminho durante a execução, o que equivale a fazer upload do pacote de guerra aqui
EXEC COMMAD: O comando a ser executado
Como mostrado na figura, o pacote de guerra será colocado na pasta Home/Admin e, em seguida, executarei o comando Shell que escrevi. Ele envolve principalmente parar o Tomcat, fazer backup do pacote de guerra original, excluir o pacote de guerra original no WebApp, copiar o novo pacote de guerra sob casa/administrador, iniciar o Tomcat e, em seguida, está pronto. Isso evita o problema da falha do servidor causada pelo excesso de memória de implantação a quente.
Referência de script:
#!/bin/sh #defined tomcat_home = "/usr/java/tomcat/apache-tomcat-7.0.67/" id = `ps -ef | grep java | grep tomcat | awk '{print $ 2}' `echo $ id eco" mata o tomcat "kill -9 $ id eco" Remover war File "cd" $ tomcat_home "/webApps rm -rf javaweb-0.0.1-snapshot rm-rm javaweB- /home/lin cp javaweb-0.0.1-snapshot.war "$ tomcat_home"/webapps cd "$ tomcat_home"/bin echo "start tomcat" ./startup.shshO problema do plug -in de implantação, o plug -in de implantação para o contêiner usado acima é usado para implementar a implantação a quente, mas o plug -in de implantação limita um projeto que um projeto só pode implantar um pacote de guerra. Meu projeto é que duas guerras separadas das extremidades dianteiras e traseiras de um projeto não podem ser construídas duas vezes,  ̄へ ̄.
Solução: tente não usar a implantação a quente. Se o ambiente de teste for usado temporariamente, atualmente estou construindo dois novos projetos e compilará apenas um pacote de guerra por vez.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.