Integração e Entrega Contínuas (CI/CD) de site estático em servidor Linux usando GitLab

Quando estamos trabalhando em alguma empresa ou projeto, é uma prática comum entrarmos rapidamente no espírito de equipe, que normalmente acontece devido à aplicação de metodologias ágeis, ou, em um estágio mais avançado, com uma cultura devops mais en…


This content originally appeared on DEV Community and was authored by xJuggl3r

Quando estamos trabalhando em alguma empresa ou projeto, é uma prática comum entrarmos rapidamente no espírito de equipe, que normalmente acontece devido à aplicação de metodologias ágeis, ou, em um estágio mais avançado, com uma cultura devops mais encorpada.

Mas, naqueles projetos pessoais, muitas vezes a máxima "em casa de ferreiro, espeto de pau", também é uma realidade. As razões podem ser várias, mas geralmente há aquela noção de que os demais projetos e atividades têm prioridade no uso do tempo.

O resultado, muitas vezes, é desorganização que pode custar perda de tempo, dados e, com isso, dinheiro.

Então, nessa ideia de "arrumar a casa", vou mostrar como implementei o CI/CD de um de meus projetos, o Gunbot Brasil. A pipeline é simples, e o conceito é aplicável para qualquer site estático, hospedado em um servidor Linux.

Porque implementar o CI/CD?

São inúmeras as vantagens em relação ao deploy manual, mas, na minha opinião, as principais São:

  • Usando versionamento de arquivo, mesmo que ocorra algum problema com a última versão, basta voltar ao commit anterior;
  • Ganho de tempo através da automação;
  • Menos mudanças no código.

Como implementar o CI/CD?

  • Usei o GitLab tanto para hospedagem dos arquivos no repositório, quanto para a implementação da Integração e Entrega Contínuas;
  • O website está hospedado no Hostgator, mas poderia ser em qualquer outro host provider;
  • Consideramos que o acesso ao servidor é feito via SSH Key, sem password;
  • Git está instalado no servidor.

1 - Criar repositório no GitLab e subir os arquivos do site

  • Já logado no GitLab, clique em 'New Project' > 'Create Blank Project';
  • Informe o nome do projeto, que também criará a slug do repositório;
  • Defina a visualização. Como é um projeto privado, o repositório deve ser marcado como 'Private';
  • Clique em 'Create Project'.

Como o repositório está vazio, a próxima tela mostra as alternativas de comandos disponíveis.

Utilizaremos os seguintes comandos abaixo, substituindo os campos em '< >' com seus próprios valores:
ex:
git remote add origin git@gitlab.com:<seu-user>/<seu-repositorio>.git
git remote add origin git@gitlab.com:xJuggl3r/meu-website.git

git config --global user.name "<seu-username>"
git config --global user.email "<seu-email>"

cd <diretorio-do-seu-site>
git init
git remote add origin git@gitlab.com:<seu-user>/<seu-repositorio>.git
git add .
git commit -m "Initial commit"
git push -u origin --all

2 - Gerar Chaves SSH

3 - Cadastrar Chave SSH no GitLab

  • No GitLab, em seu projeto, vá em 'Settings' > 'CI/CD' > 'Variables'
  • Adicione uma nova variável SSH_PRIVATE_KEY. O valor é sua chave privada ssh (por exemplo, conteúdo de ~/.ssh/id_rsa).

Inserindo SSH na CI/CD do GitLab

Implementando o CI/CD

  • Crie um arquivo .gitlab-ci.yml na raíz do seu projeto, com o seguinte conteúdo (modificando as linhas com comentários ao lado):
before_script:
  - apt-get update -qq
  - apt-get install -qq git
  # Setup SSH deploy keys
  - 'which ssh-agent || ( apt-get install -qq openssh-client )'
  - eval $(ssh-agent -s)
  - ssh-add <(echo "$SSH_PRIVATE_KEY")
  - mkdir -p ~/.ssh
  - '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'

deploy_staging:
  type: deploy
  environment:
    name: staging
    url: example.com #sua-url
  script:
    - ssh root@example.com "cd var/www/ && git checkout master && git pull origin master && exit" # modifique o usuário, url e diretório do site
  only:
    - master

Caso o deploy seja à partir de outro branch, modificar de acordo. Nesse exemplo, usamos o branch 'master'.

Se tudo estiver correto, agora basta fazer o push e a pipeline será ativada, gerando um job e atualizando o site no servidor de origem.

Job Executed

Nota: O projeto em seu servidor deve ter sido inicialmente clonado de seu repositório via git remote add … e sincronizado.


This content originally appeared on DEV Community and was authored by xJuggl3r


Print Share Comment Cite Upload Translate Updates
APA

xJuggl3r | Sciencx (2021-06-03T20:13:41+00:00) Integração e Entrega Contínuas (CI/CD) de site estático em servidor Linux usando GitLab. Retrieved from https://www.scien.cx/2021/06/03/integracao-e-entrega-continuas-ci-cd-de-site-estatico-em-servidor-linux-usando-gitlab/

MLA
" » Integração e Entrega Contínuas (CI/CD) de site estático em servidor Linux usando GitLab." xJuggl3r | Sciencx - Thursday June 3, 2021, https://www.scien.cx/2021/06/03/integracao-e-entrega-continuas-ci-cd-de-site-estatico-em-servidor-linux-usando-gitlab/
HARVARD
xJuggl3r | Sciencx Thursday June 3, 2021 » Integração e Entrega Contínuas (CI/CD) de site estático em servidor Linux usando GitLab., viewed ,<https://www.scien.cx/2021/06/03/integracao-e-entrega-continuas-ci-cd-de-site-estatico-em-servidor-linux-usando-gitlab/>
VANCOUVER
xJuggl3r | Sciencx - » Integração e Entrega Contínuas (CI/CD) de site estático em servidor Linux usando GitLab. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2021/06/03/integracao-e-entrega-continuas-ci-cd-de-site-estatico-em-servidor-linux-usando-gitlab/
CHICAGO
" » Integração e Entrega Contínuas (CI/CD) de site estático em servidor Linux usando GitLab." xJuggl3r | Sciencx - Accessed . https://www.scien.cx/2021/06/03/integracao-e-entrega-continuas-ci-cd-de-site-estatico-em-servidor-linux-usando-gitlab/
IEEE
" » Integração e Entrega Contínuas (CI/CD) de site estático em servidor Linux usando GitLab." xJuggl3r | Sciencx [Online]. Available: https://www.scien.cx/2021/06/03/integracao-e-entrega-continuas-ci-cd-de-site-estatico-em-servidor-linux-usando-gitlab/. [Accessed: ]
rf:citation
» Integração e Entrega Contínuas (CI/CD) de site estático em servidor Linux usando GitLab | xJuggl3r | Sciencx | https://www.scien.cx/2021/06/03/integracao-e-entrega-continuas-ci-cd-de-site-estatico-em-servidor-linux-usando-gitlab/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.