Introdução

Neste tutorial, iremos construir um sistema de controle de versão customizado utilizando Git, Docker e práticas de CI/CD (Integração Contínua e Entrega Contínua). A ideia é capacitar desenvolvedores a implementar uma solução robusta que facilite a manutenção e a evolução de seus projetos, permitindo a gestão eficiente das versões e a automação de processos. O uso do Docker garantirá que nosso ambiente seja idêntico em todas as estações de trabalho e servidores, minimizando problemas de configuração. Ao final deste curso, você terá uma aplicação funcional, capaz de integrar as melhores práticas de desenvolvimento com uma ótima experiência de configuração e automação.

Etapas

  1. Preparação do Ambiente de Desenvolvimento

    Antes de começar, verifique se você tem o Git e o Docker instalados em sua máquina. Se não estiverem instalados, siga as instruções em seus sites oficiais. Verifique as versões instaladas utilizando os seguintes comandos.

    commands
    # Verifique se o Git está instalado
    git --version
    # Verifique se o Docker está instalado
    docker --version

  2. Criação do Repositório Git

    Crie um novo repositório Git para o seu projeto em uma pasta de sua escolha.

    commands
    # Navegue até a pasta onde deseja criar o repositório
    mkdir meu-projeto && cd meu-projeto
    # Inicialize o repositório Git
    git init

  3. Configuração do Docker

    Crie um arquivo `Dockerfile` para configurar seu ambiente de aplicação. Aqui, estamos configurando um container que utiliza Node.js como exemplo. Adapte conforme necessário para seu projeto.

    Dockerfile
    FROM node:14
    
    WORKDIR /app
    
    COPY package*.json ./
    
    RUN npm install
    
    COPY . .
    
    CMD ["npm", "start"]

  4. Construindo a Imagem Docker

    Agora você pode construir a imagem do Docker usando o `Dockerfile` que criou. Execute o seguinte comando na pasta do seu projeto.

    commands
    # Construa a imagem Docker
    docker build -t meu-app-docker .

  5. Executando o Container Docker

    Após a construção da sua imagem, você pode iniciar um container baseado nela. Isso permitirá que você execute sua aplicação em um ambiente isolado.

    commands
    # Execute o container
    docker run -p 3000:3000 meu-app-docker

  6. Implementação do CI/CD com GitHub Actions

    Crie um arquivo de fluxo de trabalho no diretório `.github/workflows` para habilitar ações de CI/CD. Este fluxo instalará dependências e executará testes sempre que uma nova alteração for enviada ao repositório.

    .github/workflows/ci.yml
    name: CI
    
    on:
      push:
        branches:
          - main
    
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
          - name: Checkout código
            uses: actions/checkout@v2
          - name: Instalar Dependências
            run: npm install
          - name: Executar Testes
            run: npm test

  7. Testes Automatizados

    Adicione testes automatizados ao seu projeto, utilizando ferramentas como Jest ou Mocha. Certifique-se de que seus testes estejam em um diretório designado, como `tests/`.

    commands
    # Teste seu aplicativo
    npm test

  8. Documentação do Projeto

    Documente seu projeto utilizando um arquivo `README.md`. Este arquivo deve conter informações sobre como configurar, executar e contribuir com o projeto.

    README.md
    # Meu Projeto
    Este é um exemplo de projeto configurado com Git, Docker e CI/CD.
    
    ## Configuração
    
    1. Clone o repositório
    2. Configure seu ambiente:
       ```
    docker-compose up
       ```
    
    3. Para executar testes:
       ```
    npm test
       ```

  9. Gerenciando Versões com Git

    Use comandos Git para gerenciar as versões do seu código. Certifique-se de fazer commit das suas alterações e enviar para o repositório remoto com frequência.

    commands
    # Adicione alterações ao índice
    git add .
    # Realize um commit
    git commit -m "Configuração inicial do projeto com Docker e CI/CD"
    # Envie para o repositório remoto
    git push origin main

Conclusão

Neste tutorial, construímos um sistema de controle de versão customizado, integrando Git, Docker e práticas de CI/CD. Aprendemos a configurar um ambiente de desenvolvimento robusto e eficiente, facilitando a colaboração e a manutenção de projetos. Ao utilizar Docker, garantimos um ambiente consistente para todos os desenvolvedores envolvidos no projeto, enquanto o CI/CD permite uma integração e entrega contínuas, reduzindo o tempo gasto em operações manuais. Com estas habilidades, você pode aprimorar seu fluxo de trabalho de desenvolvimento e preparar-se para desafios maiores no futuro.

Hashtags

#Git #Docker #CICD #DesenvolvimentoDeSoftware #Automação