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
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 --versionCriaçã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 initConfiguraçã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.
DockerfileFROM node:14 WORKDIR /app COPY package*.json ./ RUN npm install COPY . . CMD ["npm", "start"]
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 .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-dockerImplementaçã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.ymlname: 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
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 testDocumentaçã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 ```
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.