Meus sites


Sites relevantes


Contato

Email: devanon.kyosha@gmail.com

Sejam bem vindos

Fabrício Web Home Page

Desenvolvimento PHP Laravel, Manutenção em sites PHP, Arquitetura de serviços Web, Geração de endpoints REST API e Tutoriais.

Sejam bem vindos à página Fabrício Web. Eu sou o Fabrício Dias.
Passarei aqui uma parte significativa de minha experiência. Acompanhe minhas publicações. Vou publicar amenidades nerds também. O site está em desenvolvimento, e vou colocar melhorias ainda. E com certeza vou adicionar interação com o leitor em breve.

Fabrício Dias de Oliveira

Devops - Deploy de aplicações usando Circle CI

ícone Circleci, logo em Vector LogoEntenda como construir uma build usando Circle CI de maneira automatizada.

Introdução

A lógica é a mesma. O deploy é realizado usando uma máquina Docker, mas aqui a sintaxe é diferente. Vou explicar somente as diferenças.

A configuração

A configuração e operação referente às builds são todas realizadas no site https://circleci.com/

E clique no botão Go to Application.

Na próxima tela você fará o login. Se o seu projeto está no Bitbucket, você loga com sua conta do Bitbucket. Se o seu projeto está no Github, você loga com sua conta do Github.

Na próxima tela você escolhe sua organização.

E por fim você escolhe qual projeto você quer que o Circle CI faça a build.

Então escolha a opção Faster.

Esta opção vai forçar a criação de um branch no seu projeto, com o arquivo de configuração, e automaticamente vai lhe redirecionar à página de build do projeto.

No seu branch novo

Foi criado um novo branch com a pasta .circleci.

Dentro dela há o arquivo config.yml.

Com uma versão “hello word” da sua build. E é nesse arquivo que a máquina Docker será configurada.

A máquina que fará o deploy

 

# CircleCI configuration file jobs

version: 2.1

 

jobs:

  # Job one with a unique name

  master:

    docker:

     - image: cimg/base:2022.05

    steps:

      - checkout

      - when:

          condition:

            equal: [ master, << pipeline.git.branch >> ]

          steps:

            - run:

                name: Fazendo a publicação

                command: |

                   sudo apt update

                   sudo apt install git git-ftp -y

                   git config git.ftp.syncroot ./

                   git config git-ftp.url $FTP_HOST_BLOG

                   git config git-ftp.user $FTP_USER

                   git config git-ftp.password $FTP_PASSWORD

                   git ftp push

  # Job two with a unique name

  develop:

    docker:

     - image: cimg/base:2022.05

    steps:

      - checkout

      - when:

          condition:

            equal: [ develop, << pipeline.git.branch >> ]

          steps:

            - run:

                name: Um teste ordinário

                command: |

                   echo "Commit efetuado com sucesso"

  init:

    docker:

     - image: cimg/base:2022.05

    steps:

      - checkout

      - when:

          condition:

            equal: [ init, << pipeline.git.branch >> ]

          steps:

            - run:

                name: Inicialização do repositório

                command: |

                   sudo apt update

                   sudo apt install git git-ftp -y

                   git config git.ftp.syncroot ./

                   git config git-ftp.url $FTP_HOST_BLOG

                   git config git-ftp.user $FTP_USER

                   git config git-ftp.password $FTP_PASSWORD

                   git ftp init

 

workflows:

  # Name of workflow

  principal:

    # List of jobs that will run

    jobs:

      - master

      - develop

      - init

Aqui podemos determinar as diferenças. Pelo fato do Circle CI não disponibilizar botões para escolhermos qual build executar, usamos um recurso técnico. 3 branchs configurados no arquivo para que a build funcione corretamente. Fazendo o commit em init, seu site é iniciado. Fazendo commit em develop, será inerte e não haverá nenhum deploy. Fazendo o commit em master, fará o commit das alterações no site já iniciado em init.

As variáveis do projeto

Exatamente como no Bitbucket, servem para manter informações sensíveis sob proteção, somente você terá acesso a tais informações.

Clique em Project Settings.

E em Environment Variables.

Aqui você adiciona as variáveis.

Entendendo o arquivo config.yml

 

# CircleCI configuration file jobs

version: 2.1

 

jobs:

  # Job one with a unique name

Esse é o início do arquivo. Basicamente é o padrão para qualquer build que queira executar.

 

develop:

    docker:

     - image: cimg/base:2022.05

    steps:

      - checkout

      - when:

          condition:

            equal: [ develop, << pipeline.git.branch >> ]

          steps:

            - run:

                name: Um teste ordinário

                command: |

                   echo "Commit efetuado com sucesso"

Esse é um job (uma tarefa, mas usamos o termo em inglês a nível de padronização do jargão). Note que o nome develop aparece 2 vezes, esse é o branch para o qual esse job aponta. As linhas chave são:

 

- when:

          condition:

            equal: [ develop, << pipeline.git.branch >> ]

Que vão garantir que somente commits em develop vão acionar os comandos. Tudo após a linha -run: são os comando a serem executados em sequência.

 

                name: Um teste ordinário

É o nome que irá aparecer no momento que a build estiver sendo executada.

Dito isso, fica simples entender os jobs init:

 

init:

    docker:

     - image: cimg/base:2022.05

    steps:

      - checkout

      - when:

          condition:

            equal: [ init, << pipeline.git.branch >> ]

          steps:

            - run:

                name: Inicialização do repositório

                command: |

                   sudo apt update

                   sudo apt install git git-ftp -y

                   git config git.ftp.syncroot ./

                   git config git-ftp.url $FTP_HOST_BLOG

                   git config git-ftp.user $FTP_USER

                   git config git-ftp.password $FTP_PASSWORD

                   git ftp init

E master:

 

master:

    docker:

     - image: cimg/base:2022.05

    steps:

      - checkout

      - when:

          condition:

            equal: [ master, << pipeline.git.branch >> ]

          steps:

            - run:

                name: Fazendo a publicação

                command: |

                   sudo apt update

                   sudo apt install git git-ftp -y

                   git config git.ftp.syncroot ./

                   git config git-ftp.url $FTP_HOST_BLOG

                   git config git-ftp.user $FTP_USER

                   git config git-ftp.password $FTP_PASSWORD

                   git ftp push

As linhas mais importantes do arquivo são estas:

 

workflows:

  # Name of workflow

  principal:

    # List of jobs that will run

    jobs:

      - master

      - develop

      - init

Pois elas indicam os jobs que serão executados a cada commit detectado em seu repositório.

Nos jobs, os verbetes $FTP_HOST_BLOG, $FTP_USER e $FTP_PASSWORD são suas variáveis de sistema configuradas. No momento da build, esses nomes serão substituídos pelos valores que configurou. Sempre atento às identações, porque em arquivos YML, identação ruim conta como erro. Os espaços antes dos comandos são essenciais.

Conclusão

Fazer uma build é relativamente simples, você conseguirá fazer sem maiores problemas. O Circle CI é o ideal para isso.

Fabrício Dias de Oliveira

Procurar artigos