Automatizar deploy com o GitHub Actions

O GitHub Actions é uma ferramenta de CI/CD integrada ao GitHub que pode ajudar a automatizar o deploy de sites e códigos publicados na plataforma.

Esse procedimento vai mostrar como ativar o Actions e configurar um workflow para fazer o deploy via FTP de um website.


1 Passo – Ativar o Actions

No GitHub selecione o repositório e clique em “Settings

Clique em “Actions” e selecione “Enable local Actions only for this repository


2 Passo: Criar o arquivo de Workflow

Na raiz do projeto crie um novo arquivo: “.\github\workflows\main.yml”

New-Item .github\workflows -ItemType Directory
New-Item .github\workflows\main.yml

3 Passo: Criar a ação

Para definir uma ação basicamente é necessário configurar dois componentes: a causa (ou trigger) e a(s) consequencia(s) (ou job) .

Um trigger pode ser de diversos tipos, por exemplo quando fazemos push em um branch específico, quando uma pull request é processada ou muitas outras opções. Veja a documentação existente no GitHub para explorar-las.

Nesse exemplo vamos definir que a ação será disparada quando fizermos push de algum código para um branch chamado master.

Então, no arquivo “main.yml” adicione o seguinte código:

on:      
  push: 
    branches:          
        - master

Importante: por se tratar de um arquivo .yml é fundamental que a identação seja respeitada.

Agora vamos definir a nossa ação. Ela vai procurar por um diretório local chamado “build” e fazer upload de todos os arquivos para um diretório remoto utilizando FTP.

Para isso vamos utilizar um módulo pré-existente no MarketPlace denominado “SamKirkland/FTP-Deploy-Action@2.0.0” que vai lidar com conexão ao servidor FTP.

Vale ressaltar que existem diversos módulos no marketplace do GitHub e você pode utilizá-los da mesma forma como estamos usando aqui.

Então no nosso arquivo “main.yml” adicione o código:

name: Build and Publish
jobs:
  FTP-Deploy-Action:
    name: FTP-Deploy-Action
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master

    - name: List output files
      run: ls
      
    - name: FTP-Deploy-Action
      uses: SamKirkland/FTP-Deploy-Action@2.0.0
      env:
        FTP_SERVER: ${{ secrets.FTP_SERVER }}
        FTP_USERNAME: ${{ secrets.FTP_USERNAME }}
        FTP_PASSWORD: ${{ secrets.FTP_PASSWORD }}
        REMOTE_DIR: ${{ secrets.REMOTE_DIR }}
        LOCAL_DIR: build
        METHOD: ftp
        PORT: 21
        ARGS: --delete 

Nesse código definimos um job com 2 passos: Listar os arquivos e fazer o deploy dos mesmos para o servidor via FTP.

No segundo passo, chamado “FTP-Deploy-Action” informamos que vamos usar o módulo que mencionei acima e configuramos as instruções de acesso ao servidor FPT.

Caso a porta ou método de conexão do seu servidor sejam diferentes faça os ajustes necessários.

É possível adicionar ainda outros passos para, por exemplo, instalar o nodeJS, fazer validações, etc. Basta repetir a estrutura:

     - name: <my_job_name>
       run: ...

Finalmente, vamos configurar as credenciais de acesso ao servidor FTP com o GitHub secrets, para que elas não fiquem expostas no nosso código.

Na console do GitHub vá até o seu repositório > Settings > Secrets.

Clique “Add new secret” e adicione os as variáveis e os valores do seu ambiente.


4 Passo: Validar a configuração

Para validar a nossa configuração, faça push de alguma alteração para o branch master.
Em seguida, na console do GitHub vá ao seu repositório > Actions. Uma lista com a ação disparada deve ser exibida.

Clique no nome da ação para explorar os detalhes de execução e ver que ela foi executada corretamente.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *