Zenifra
Como começar a usar a Zenifra

Como atualizar automaticamente o código do projeto usando GitHub Actions

Como atualizar automaticamente o código do projeto usando GitHub Actions com a action "ramonpaolo/action-zenifra"

Primeiro Passo

Para atualizar automaticamente o código do seu projeto na Zenifra utilizando GitHub Actions, é necessário ter um repositório Git configurado com o código-fonte da sua aplicação.

Essa funcionalidade permite que a imagem Docker seja construída e enviada para a Zenifra automaticamente, sempre que houver uma nova alteração no repositório, através de um workflow.

Para isso, será utilizada a action ramonpaolo/action-zenifra, que é responsável por integrar o processo de build e deploy automático com a plataforma Zenifra.


Segundo Passo

Para configurar a atualização automática, siga os passos abaixo:

Configuração do Workflow

Você precisará criar um arquivo de workflow no diretório .github/workflows/ do seu repositório Git.

Exemplo de workflow completo com a action ramonpaolo/action-zenifra:

name: Deploy PRD

on:
  push: 
    tags:  
      - 'v[0-9]+.[0-9]+.[0-9]+'

jobs:
  build: # Job para fazer a build e publicar a imagem no registry do Docker(Hub Docker)
    name: build
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@main

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v2

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v2

      - name: Log in to Docker Registry
        uses: docker/login-action@v2
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}

      - name: Build and Publish Docker Image
        run: docker buildx build -t <username_docker>/<name_image>:<tag> --platform=linux/amd64 --push .

  deploy: # Job para fazer deploy da imagem na Zenifra
    needs: build
    name: deploy
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code 
        uses: actions/checkout@main

      - name: Deploy Image to Zenifra
        uses: ramonpaolo/action-zenifra@main
        with:
          PROJECT_ID: <project_id> # ${{ secrets.ZENIFRA_PROJECT_ID }}
          API_KEY: <api_key> # ${{ secrets.ZENIFRA_API_KEY }}
          IMAGE: <username_docker>/<name_image>:<tag> # zenifra/llama-cpp-changer-models:${{ github.ref_name }}

⚠️ Importante: Substitua project-id pelo ID do projeto, API_KEY pela API KEY do projeto, image pela URL completa da imagem do projeto.

Detalhes das Configurações

  • PROJECT_ID: ID do projeto na Zenifra. Deve ser armazenado como um segredo no seu repositório.
  • API_KEY: API KEY do projeto na Zenifra. Deve ser armazenado como um segredo no seu repositório.
  • IMAGE: URI imagem no padrão OCI a ser enviada, incluindo o registry e a tag.

Terceiro Passo

Após criar e fazer commit do arquivo de workflow, toda vez que houver criação de tag no formato vX.X.X (ex: v1.X.X), o GitHub Actions irá:

  1. Fazer o checkout do código;
  2. Construir a imagem no padrão OCI usando o docker;
  3. Enviar a imagem atualizada para a Zenifra, utilizando a action ramonpaolo/action-zenifra.

Isso garante que o projeto sempre esteja com a versão mais recente da sua aplicação, sem necessidade de intervenção manual.


Finalizando

Com esse fluxo configurado, sua aplicação será sempre atualizada conforme as alterações feitas no repositório Git, mantendo o projeto sempre atualizado com a última versão do código.

Se você desejar personalizar ainda mais o workflow, pode adicionar etapas como testes automatizados, validações, ou até mesmo envio para múltiplos ambientes.