Skip to content

cielo pdv deploy versioning

technical-documenter edited this page Aug 26, 2026 · 2 revisions

Cielo PDV deploy — version/versionCode e publicação FTP (Lave-Go)

Objetivo

Documentar a regra de versionamento e o fluxo de publicação do APK do PDV Lave-Go (Cielo Store / staging) no app-community.

O job atualiza simultaneamente:

  1. expo.version — versão legível exibida na Cielo Store (ex.: 1.7.5);
  2. expo.android.versionCode — inteiro posicional derivado da mesma versão semântica (ex.: 10705).

Isso evita divergência entre o que o lojista vê na loja e o que o Android/Cielo valida internamente.

A partir do commit 560a488 (updts para subir também no site da lavego), o mesmo APK passa a ser publicado em dois destinos FTP:

  1. site administrativo padrão (ADMIN_*);
  2. FTP extra do site Lave-Go (FTPHOST_EXTRASLAVEGO / FTPUSER_EXTRASLAVEGO / FTPPASS_EXTRASLAVEGO), para disponibilização pública no site da Lave-Go.

Arquivo afetado

Arquivo Papel
.github/workflows/cielo-deploy-pdv-lavego-STAGING.yml Deploy do APK PDV Lave-Go Staging (package com.lavego.staging) para Cielo + sites

Nome do workflow: DEPLOY CIELO PDV LAVEGO MASTER.

Gatilho do workflow

  • workflow_run do workflow "Deploy Android Apps" (completed, branch master);
  • ou workflow_dispatch manual.

O job define APP_TYPE=POS, PACKAGE_NAME=com.lavego.staging, assets pos_lavego, endpoints apinew.lave-go.com / app.lave-go.com.

Fórmula do versionCode posicional

Fonte da versão: package.json → campo version (semver MAJOR.MINOR.PATCH).

versionCode = (MAJOR * 10000) + (MINOR * 100) + PATCH

Exemplos:

package.json version expo.version expo.android.versionCode
1.7.4 1.7.4 10704
1.7.5 1.7.5 10705
1.8.0 1.8.0 10800
2.0.1 2.0.1 20001

Passos relevantes no job (ordem atual)

  1. Update version and versionCode in app.json (Positional)
    package.json.version, calcula o versionCode e grava os dois campos em app.json.

  2. Extract App Version and VersionCode
    Re-lê app.json e exporta para o ambiente do runner:

    • APP_VERSION — versão de exibição (Cielo Store e paths FTP);
    • APP_VERSION_CODE — versionCode numérico (validação Android/Cielo).
  3. Prebuild (npx expo prebuild --clean) + validação do hook de fontes vector-icons + criação dos arquivos de assinatura Android (keystore via secrets).

  4. Build Android APK (./gradlew assembleRelease) e localização do artefato (APK_PATH / APK_DIR / APK_FILENAME).

  5. Upload APK to Website (FTP) — destino administrativo

    • Action: locaweb/ftp-deploy@1.0.0
    • Host/user/pass: secrets.ADMIN_HOST / ADMIN_USER / ADMIN_PASS
    • remoteDir: public_html/${{ env.APP_VERSION }}/${{ env.PACKAGE_NAME }}/apk
    • Variável de path corrigida para APP_VERSION (antes usava VERSION, que podia ficar indefinida).
  6. Verify uploaded APK on FTP — listagem via lftp no mesmo REMOTE_DIR e assert da presença de APK_FILENAME.

  7. Deploy APK to Extra FTP (Explicit FTPS) — site Lave-Go

    • Action: SamKirkland/FTP-Deploy-Action@v4.4.0
    • Server/user/pass: secrets.FTPHOST_EXTRASLAVEGO / FTPUSER_EXTRASLAVEGO / FTPPASS_EXTRASLAVEGO
    • Protocolo: FTPS (port 21, security loose)
    • local-dir: ${{ env.APK_DIR }}/
    • server-dir: /${{ env.APP_VERSION }}/
    • Objetivo: disponibilizar o APK também no site da Lave-Go (além do host admin).

Por que os dois campos de versão

Campo Consumidor Motivo
expo.version Cielo Store / lojista + paths FTP Texto legível da versão do app
expo.android.versionCode Android Package Manager / Cielo Inteiro monotônico exigido para atualização e validação interna

Por que dois destinos FTP

Destino Secrets Path remoto Uso
Admin (Locaweb) ADMIN_HOST / ADMIN_USER / ADMIN_PASS public_html/{APP_VERSION}/{PACKAGE_NAME}/apk Publicação operacional / download controlado
Extra Lave-Go FTPHOST_EXTRASLAVEGO / FTPUSER_EXTRASLAVEGO / FTPPASS_EXTRASLAVEGO /{APP_VERSION}/ Site público da Lave-Go

Não versionar valores de secrets; apenas nomes de variáveis e o contrato de path.

Escopo e fora de escopo

  • Escopo: workflow cielo-deploy-pdv-lavego-STAGING.yml, convenção posicional de versionCode, paths FTP baseados em APP_VERSION, e o segundo destino (Extra FTP Lave-Go).
  • Fora de escopo: pipelines genéricos (deploy.yml, deploy-lave-go.yml, android-deploy-lavego-shop-v2.yml), versionamento de outros white-labels, e lógica de Play Store track.

Visão de produto (APP_TYPE)

  • Este pipeline entrega o binário POS (APP_TYPE=POS) white-label Lave-Go (com.lavego.staging).
  • Não altera regras de negócio de pedidos, caixa ou PCP; apenas o artefato Android e sua publicação.

Referências

Clone this wiki locally