Este repositório centraliza as ferramentas, configurações e os fluxos de trabalho (Reusable Workflows) de Integração e Entrega Contínuas (CI/CD) para os projetos da Lumia Nexus, incluindo o Player One (site e aplicativos móveis).
Oferecemos fluxos de trabalho reutilizáveis para facilitar e padronizar o build e o deploy dos projetos da organização. Qualquer repositório sob a organização cdrluminianexus-droid pode chamá-los diretamente em seus arquivos de workflow locais.
- Implantar Website (
deploy-website.yml) - Implantar Aplicativo Android (
deploy-android.yml) - Implantar Aplicativo iOS / Apple TV (
deploy-ios.yml)
Permite compilar e implantar o site do Player One em provedores como GitHub Pages, Vercel ou Netlify.
name: Deploy Website do Player One
on:
push:
branches:
- main
jobs:
release:
uses: cdrluminianexus-droid/.github/.github/workflows/deploy-website.yml@main
with:
provider: 'github-pages' # Opções: github-pages, vercel, netlify
node-version: '20'
build-command: 'npm run build'
dist-directory: 'dist'
secrets:
DEPLOY_TOKEN: ${{ secrets.DEPLOY_TOKEN }} # Necessário para Vercel/NetlifyCompila, assina digitalmente o aplicativo Android do Player One e publica o pacote (.aab) diretamente no Google Play Console para testes ou produção. Como o Google Play aceita apenas artefatos de distribuição, este workflow suporta apenas builds do tipo release.
KEYSTORE_BASE64: O arquivo.jkscodificado em base64.KEYSTORE_PASSWORD: Senha do Keystore.KEY_ALIAS: Alias do Keystore.KEY_PASSWORD: Senha da chave.PLAY_SERVICE_ACCOUNT_JSON: Credenciais JSON da conta de serviço do Google Play Console.
name: Deploy Android do Player One
on:
push:
tags:
- 'v*'
jobs:
deploy:
uses: cdrluminianexus-droid/.github/.github/workflows/deploy-android.yml@main
with:
environment: 'production'
java-version: '17'
track: 'internal' # Opções: internal, alpha, beta, production
package-name: 'com.lumianexus.playerone'
secrets:
KEYSTORE_BASE64: ${{ secrets.KEYSTORE_BASE64 }}
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
PLAY_SERVICE_ACCOUNT_JSON: ${{ secrets.PLAY_SERVICE_ACCOUNT_JSON }}Compila o aplicativo móvel ou para Apple TV do Player One, realiza a assinatura de código nativa do macOS e envia a versão automaticamente para testes no TestFlight / App Store Connect.
team-id: Apple Developer Team ID usado para exportar o arquivo.ipa.
P12_KEY_BASE64: Certificado de distribuição iOS.p12codificado em base64.P12_PASSWORD: Senha do certificado.p12.PROVISION_PROFILE_BASE64: Perfil de provisionamento.mobileprovisionem base64.APP_STORE_CONNECT_API_KEY: Conteúdo do arquivo de chave privada.p8para acesso à API do App Store Connect.APP_STORE_CONNECT_KEY_ID: ID da chave de API do App Store Connect.APP_STORE_CONNECT_ISSUER_ID: ID do emissor do App Store Connect.
name: Deploy iOS do Player One
on:
push:
tags:
- 'v*'
jobs:
deploy:
uses: cdrluminianexus-droid/.github/.github/workflows/deploy-ios.yml@main
with:
environment: 'production'
xcode-version: '15.2'
scheme: 'PlayerOne'
team-id: 'YOUR_TEAM_ID'
workspace-path: 'ios/PlayerOne.xcworkspace'
secrets:
P12_KEY_BASE64: ${{ secrets.P12_KEY_BASE64 }}
P12_PASSWORD: ${{ secrets.P12_PASSWORD }}
PROVISION_PROFILE_BASE64: ${{ secrets.PROVISION_PROFILE_BASE64 }}
APP_STORE_CONNECT_API_KEY: ${{ secrets.APP_STORE_CONNECT_API_KEY }}
APP_STORE_CONNECT_KEY_ID: ${{ secrets.APP_STORE_CONNECT_KEY_ID }}
APP_STORE_CONNECT_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_ISSUER_ID }}Para maior flexibilidade, controle e capacidade de execução local ou em outros servidores de automação, todo o fluxo de implantação foi implementado em Python puro.
O script deploy.py está disponível na raiz deste repositório e suporta três subcomandos principais:
website: Compila e publica websites (GitHub Pages, Vercel ou Netlify).android: Compila via Gradle, decodifica a keystore, assina o pacote AAB e publica na Google Play Store.ios: Configura certificados e chaveiros no macOS, executa o build, exporta o arquivo IPA e o envia ao TestFlight.
Você pode executar o script passando os argumentos diretamente pela linha de comando ou definir variáveis de ambiente que o script detectará automaticamente.
python3 deploy.py website \
--provider github-pages \
--dist-directory dist \
--token "SEU_GITHUB_TOKEN"python3 deploy.py android \
--package-name "com.lumianexus.playerone" \
--build-type release \
--track internal \
--keystore-base64 "CONTEUDO_BASE64_DO_JKS" \
--keystore-password "SENHA_KEYSTORE" \
--key-alias "ALIAS_DA_CHAVE" \
--key-password "SENHA_DA_CHAVE" \
--service-account-json "CONTEUDO_JSON_DA_CONTA_DE_SERVICO"python3 deploy.py ios \
--scheme "PlayerOne" \
--workspace-path "ios/PlayerOne.xcworkspace" \
--p12-base64 "CONTEUDO_BASE64_P12" \
--p12-password "SENHA_P12" \
--profile-base64 "CONTEUDO_BASE64_MOBILEPROVISION" \
--api-key "CHAVE_PRIVADA_P8_EM_TEXTO" \
--key-id "ID_DA_CHAVE" \
--issuer-id "ID_DO_EMISSOR"Nunca exponha chaves ou senhas em texto puro no código-fonte. Utilize sempre o painel de Secrets and Variables de cada repositório no GitHub para manter as chaves de assinatura do Google Play e da Apple totalmente protegidas.