Como fazer o deploy de um aplicativo Qt com Github Actions
Como fazer o deploy de um aplicativo Qt com Github Actions
Hoje veremos como utilizar o GitHub Actions com Nuitka para automatizar o processo de deploy de um aplicativo que utiliza a linguagem de programação Python e o binding PySide6.
O que é o Github Actions?
O GitHub Actions é um recurso do GitHub que permite automatizar tarefas dentro do seu fluxo de trabalho de desenvolvimento de software.
Com o GitHub Actions, você pode criar fluxos de trabalho customizados para automatizar a compilação, teste, implantação e outras etapas do ciclo de vida do desenvolvimento de software.
Os fluxos de trabalho do GitHub Actions são definidos em arquivos YAML (***.yaml**
) armazenados no diretório **.github/workflows**
do seu repositório.
Esses arquivos descrevem as ações a serem executadas, incluindo as condições sob as quais devem ser acionadas e quaisquer parâmetros necessários.
As ações do GitHub Actions são unidades de trabalho individuais que podem ser combinadas para criar fluxos de trabalho complexos.
Existem ações disponíveis na GitHub Marketplace que podem ser usadas para uma variedade de tarefas, como compilar código, executar testes, implantar aplicativos e notificar equipes sobre o progresso do desenvolvimento.
Nuitka
Nuitka é um compilador Python de código aberto que traduz código Python para C++ ou código C otimizado, permitindo que ele seja executado mais rapidamente do que se fosse interpretado diretamente pelo interpretador Python padrão.
Ele funciona analisando o código Python e o traduzindo para código C ou C++, que é então compilado em código de máquina nativo. Isso pode resultar em melhorias significativas de desempenho em determinadas situações, especialmente em código Python que é intensivo em CPU.
Criando o arquivo de deploy
No repositório crie um arquivo deploy.yaml
em .github/workflows
.
⚠️ O arquivo pode ter o nome que você desejar.
Dentro do arquivo será utilizado o seguinte código:
# Fluxo de deploy para um aplicativo Qt (PySide) com Nuitka.
name: Deploying PySide6 with Nuitka ⚙️.
on:
# Arquivo será executado sempre que houver um push para a branch main.
push:
branches: ['main']
# Esta opção permite executar a ação de forma manual na interface web do Github.
workflow_dispatch:
# Definindo as permissões do GITHUB_TOKEN.
permissions:
contents: read
pages: write
id-token: write
# Permite que a implantação seja simultânea.
concurrency:
group: 'deploy'
cancel-in-progress: true
jobs:
build:
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: '${{ matrix.os }}'
steps:
- name: Check out repository 💾.
uses: actions/checkout@v4
- name: Install Python 🐍.
uses: actions/setup-python@v5
with:
python-version: '3.11'
architecture: 'x64'
cache: 'pip'
cache-dependency-path: |
**/requirements*.txt
- name: Install requirements 🔨.
working-directory: .
run: python -m pip install --upgrade pip && pip install -r requirements.txt
- name: Install and configure Nuitka 🛠️.
uses: Nuitka/Nuitka-Action@main
with:
nuitka-version: main
script-name: caminho/até/o/script.py
enable-plugins: pyside6
quiet: true
standalone: true
disable-console: true
macos-create-app-bundle: true
output-file: nome-do-aplicativo
linux-icon: caminho/até/ícone.ico
windows-icon-from-ico: caminho/até/ícone.ico
macos-app-icon: caminho/até/ícone.icns
macos-app-name: nome-do-aplicativo
- name: Upload artifact (onefile) 🚀.
uses: actions/upload-artifact@v4
with:
name: '${{ runner.os }}-build'
path: |
build/app.dist
build/*.exe
build/*.bin
build/*.app/**/*
⚠️ Lembre-se de modificar as variáveis conforme as suas necessidades.
O arquivo de deploy considera sempre a raiz do projeto como diretório padrão, neste caso adicione o caminho relativo até os ícones.
Essa Github Action será executada sempre que houver um push
para a branch main
do repositório.
Também é possível executar essa Github Action através da interface web do Github, para isso basta clicar na aba Actions
.
Ao final do processo é possível verifica os executáveis que foram gerados para cada um dos sistema operacionais e fazer o download dos mesmos.
Conclusão
O GitHub Actions é uma ferramenta poderosa para automatizar e personalizar seu fluxo de trabalho de desenvolvimento, ajudando a melhorar a produtividade e a consistência do seu projeto.
Subscribe to my newsletter
Read articles from Renato Cruz directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Renato Cruz
Renato Cruz
👨💻 Desenvolvedor de Software | Pós graduado em desenvolvimento de aplicativos com Python. 👋 Bem-vindo ao meu mundo digital!