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.