Criando uma Action para compilar uma aplicação feita no ElectronJs utilizando GitHub
Configurando GitHub Actions para compilar automaticamente seu aplicativo Electron para Windows e macOS

Olá Gente!
GitHub é magnifico, podemos configurar para que sempre que você fizer um push de alguma mudança, já inicie a compilação de sua aplicação.
Se você utiliza windows, não consegue compilar aplicativo do ElectronJs para o MAC, mas via GitHub é possível já que podemos criar uma Action para compilar utilizando o MAC.
Primeiramente crie um arquivo dentro da pasta “.github/workflows/” de seu repositório.
No meu caso, utilizo nome “release.yml”.
Neste arquivo precisamos especificar quais as ações serão feitas, quando serão feitas e qualquer outra especificação.
Antes de tudo precisamos definir o nome da ação:
name: Release
Agora iremos configurar para que esta ação seja executada apenas quando fizermos um push com uma tag que comece com “v” (Por exemplo: “v1.0.8”).
Desta forma, podemos indicar que apenas push que mudem a versão do repositório devem executar a ação.
Então configuramos o filtro:
on:
push:
tags:
- 'v*'
Agora iremos começar a configurar os “jobs”.
Uma ação pode ter vários jobs diferentes, neste caso, iremos configurar dois jobs, para para compilar para windows e um para compilar para mac.
Os Jobs ficam dentro do elemento:
jobs:
Vamos começar a compilação para MAC:
publish_on_mac:
permissions: write-all
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@master
with:
node-version: 14
- name: install dependencies
run: npm install
- name: build
run: npm run build
- name: publish
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: npm run publish
E agora para Windows:
publish_on_win:
permissions: write-all
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@master
with:
node-version: 14
- name: install dependencies
run: npm install
- name: build
run: npm run build
- name: publish
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: npm run publish
No final, teremos um arquivo “release.yml” similar ao arquivo abaixo:
name: Release
on:
push:
tags:
- 'v*'
jobs:
publish_on_mac:
permissions: write-all
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@master
with:
node-version: 14
- name: install dependencies
run: npm install
- name: build
run: npm run build
- name: publish
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: npm run publish
publish_on_win:
permissions: write-all
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@master
with:
node-version: 14
- name: install dependencies
run: npm install
- name: build
run: npm run build
- name: publish
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: npm run publish
Vamos entender o que esta sendo feito:
- Primeiro configuramos para que a ação possa escrever no repositório, isto ira permitir a criação de um “release”, isto é feito em “permissions: write-all”
- Através do “runs-on” configuramos o sistema operacional que será utilizado na compilação
Depois disto começamos as etapas da compilação através do elemento “steps”:
- Carregamos “actions/checkout@v2” que é necessário para toda ação
- Carregamos o Nodejs na versão 14 através de “actions/setup-node@master”
Agora começa a parte legal:
- Iremos executar o comando “npm install” para instalar as dependências de nosso projeto
- Executamos o comando “npm run build” que executar o build de nossa aplicação (Isto caso você tenha esta função no “package.json”)
- Executamos o comando “npm run publish” para que o ElectronJs compile a aplicação
Observe que você precisa ter a função “publish” em seu “package.json” configurada para compilar a aplicação:
"scripts": {
"publish": "electron-forge publish"
},
Quando você fizer um Push com uma tag de versão, o Github ira começar as ações.
Depois que as ações forem completadas a action é exibida com status de completada:

E um “release” de rascunho é criado que você pode converter em um release oficial tendo a compilação para Dowload.
Finalizando este tutorial, gente! 😄
Até já! 👋