Como automatizei a implantação de aplicativos Linux no joelho usando scripts Bash e Java

Depois de escrever seu aplicativo de servidor, você precisa implantá-lo em algum lugar. Em nossa empresa, isso agora é implementado usando um VPS no Linux, scripts bash e um pequeno programa Java. Este é um processo evolutivo e, quanto a mim, acabou muito bem.



No artigo, quero descrever a evolução dessa abordagem, por que aconteceu, os prós e os contras da abordagem. Se você tiver um problema semelhante, leia-o; talvez pensamentos úteis venham à sua mente.



KDPV - arquitetura do sistema, para uma parte da qual automatizamos a implantação:





Um pouco de fundo



Atualmente sou chefe do departamento de desenvolvimento da empresa onde trabalho. Temos uma equipe pequena, mas equilibrada - há um back-end, desenvolvedores front-end, controle de qualidade, um designer, um designer de layout.



Nossa empresa está envolvida em atividades educacionais em TI e criamos software para nós mesmos. Isso impõe certas restrições - não temos orçamentos enormes para o desenvolvimento, há requisitos vagos, porque não está totalmente claro o que as pessoas precisam.



Ao mesmo tempo, existem vantagens - escrevemos sobre o que queremos e podemos definir e concordar sobre o cronograma de desenvolvimento nós mesmos. Além disso, como não estamos vendo uma página de destino de cem mil ou uma loja online, é interessante trabalhar. Desenvolvemos vários produtos, coletamos feedback do usuário e corrigimos / adicionamos recursos.



, , .





:





— . ( ). , -.



, . :



  • . , , ;
  • , . , — .
  • . java, node.js, python.


— , ( markdown ). .



, , . . .



Level 1



. SSH VPS, git, mvn build, npm i, java -jar .



, . — .



Level 2



- , . ..



, gihub SSH VPS. git pull, . , .



Level 3



. , .



, bash . :



  • git pull,
  • mvn package — fatjar ( Java)
  • pkill yourserverprocessname —
  • java -jar yourfatjar.jar


VPS, cd ~/git/repository_name, — ./deploy.sh



Level 4



, ?



, VPS. - . C — . , — . C , , , , .



, Java. . HttpServer. GET POST , token, — bash .



.



VPS . . — , .



— - , URL, bash , .



Level 5



.



github, webhook . , (push, etc) — github URL. — POST .



webhook push. URL, .



, git push, .



Level 6 (bonus)



, . . , node.js .



, .



, . UptimeRobot. :



  • — ( POST/GET , ..).


! , — , URL . , .



- . , UptimeRobot . , - , .



— . Spring Boot , UptimeRobot, . , — / , .



, , :



imagem



, .





— . bash .



, , . , .





— .



, push github ?



, push, ?



, . , . , .



CI/CD . , — production.



, , MVP. , , . , , — . , .



?



, . Java, Maven , , jar. , — .



bash , ( .jar mvn package) . - node.js — , .



github , (, , ).



CI/CD , Jenkins, Gitlab, Ansible. , .



, — . , - , . , — , .





, . , . , , , . , .



As restrições de tempo e financeiras devem ser levadas em consideração. Considere as especificidades de cada desenvolvedor. Agora leio muita literatura temática, dos últimos livros que li em um mês - "Como pastar gatos", "Eu, nerds e geeks", "Programador programático", "Um romance sobre gerenciamento de projetos".



Este é um caminho novo e interessante para mim. Eu passo por ele, descrevendo meu progresso no meu canal Telegram - Programador e negócios .



Estou escrevendo sobre negócios do ponto de vista de um desenvolvedor. Lá eu posto notas curtas que não cabem no formato do Habr.




All Articles