Implementando CI/CD com GitHub Actions em Hospedagem Compartilhada (HostGator)

2 min read

Introdução

No mundo do desenvolvimento web, um pipeline CI/CD eficiente é crucial para garantir que novos recursos e correções sejam implantados rapidamente e com segurança. Com ferramentas como GitHub Actions, os desenvolvedores podem automatizar e otimizar seu fluxo de trabalho. Neste artigo, exploraremos os benefícios do GitHub Actions e como configurá-lo para funcionar com um ambiente de hospedagem compartilhada, como o HostGator.

Benefícios do GitHub Actions

  1. Automação Completa: GitHub Actions permite a automação de processos desde testes até deploys, economizando tempo e minimizando erros manuais.
  2. Integração Fácil: Integra-se perfeitamente com o GitHub, simplificando a configuração e monitoramento dos workflows.
  3. Flexibilidade: Suporta múltiplos ambientes e linguagens, oferecendo uma ampla gama de ações pré-configuradas.
  4. Escalabilidade: Ideal para projetos de todos os tamanhos, desde pequenos sites pessoais até grandes aplicações corporativas.

Configuração Passo a Passo

1. Preparando o Ambiente

No HostGator, precisamos garantir que as ferramentas necessárias, como composer e drush, estejam instaladas e disponíveis no PATH.

# Instalar Composer
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

# Instalar Drush
composer global require drush/drush
echo 'export PATH="$HOME/.composer/vendor/bin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile

 

2. Configurando o GitHub Actions

No seu repositório do GitHub, crie um arquivo .github/workflows/deploy.yml com o seguinte conteúdo:

name: CI/CD Pipeline

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Set up PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: '8.2'
          extensions: mbstring, xml, ctype, iconv, tokenizer, gd, openssl, json, pdo_mysql

      - name: Cache Composer dependencies
        uses: actions/cache@v2
        with:
          path: vendor
          key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
          restore-keys: ${{ runner.os }}-composer

      - name: Install dependencies
        run: composer install --prefer-dist --no-progress --no-suggest

      - name: Run Code Sniffer
        run: |
          export PHPCS_MEMORY_LIMIT=512M
          vendor/bin/phpcs --standard=Drupal --ignore=*.min.js,*.min.css, web/themes/custom/

      - name: Add SSH Key and Known Hosts
        run: |
          mkdir -p ~/.ssh
          echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_rsa
          chmod 600 ~/.ssh/id_rsa
          ssh-keyscan -H 162.241.2.203 >> ~/.ssh/known_hosts
          ssh-keyscan -H github.com >> ~/.ssh/known_hosts

      - name: Deploy to Production Server
        uses: appleboy/ssh-action@master
        with:
          host: ${{ secrets.SSH_HOST }}
          username: ${{ secrets.SSH_USER }}
          password: ${{ secrets.SSH_PASSWORD }}
          port: 22
          use_insecure_cipher: true
          script: |
            source ~/.bash_profile || true
            cd ~/public_html
            git pull
            composer install
            vendor/bin/drush @default.production cr
            vendor/bin/drush @default.production updb -y
            vendor/bin/drush @default.production cim -y
            vendor/bin/drush @default.production cr

 

3. Configurando o HostGator

No HostGator, crie e configure o arquivo ~/.ssh/config para garantir que a autenticação SSH funcione corretamente:

nano ~/.ssh/config

Adicione o seguinte conteúdo:

Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa
  StrictHostKeyChecking no


 

4. Adicionando Chaves SSH ao GitHub

Adicione a chave pública SSH ao seu repositório no GitHub em Configurações > SSH e GPG keys.

Conclusão

Configurar o GitHub Actions para implantações automáticas em um ambiente de hospedagem compartilhada como o HostGator pode parecer desafiador inicialmente, mas os benefícios de automação, integração e escalabilidade valem a pena. Com essa configuração, você garante que seu fluxo de trabalho seja eficiente e suas alterações sejam implantadas de maneira rápida e segura.

Compartilhar esse artigo