DEV Community

Cover image for CI/CD com Github Actions, Fastlane e React Native
Jairo Júnior
Jairo Júnior

Posted on

CI/CD com Github Actions, Fastlane e React Native

Por que utilizar ?

  • Com os benefícios que a utilização que o CI/CD nos trazem nos permite automatizar processos que consumiriam tempo de um profissional para realizá-los, assim tendo maior foco nos requisitos do projeto, qualidade e segurança do código.

Introdução as tecnologias

Fastlane

  • Fastlane é uma ferramenta para automatizar processo de desenvolvimento e lançamento dos apps.

Github Actions

  • Github Actions é uma ferramenta para executar seus processos de desenvolvimento, sendo totalmente personalizável.

React Native

  • É um framework baseado no React, é utilizado para construções de aplicativos híbridos (iOS/Android).

Pré-requisitos

  1. Fastlane CLI
  2. XCODE (apenas se quiser fazer para iOS)
  3. Seus aplicativos PRECISAM estar assinados para darmos o deploy.

Entendendo a estrutura.

  • Crie a pasta fastlane na raiz do seu projeto.

Fastfile folder

  • O arquivo Fastfile é o responsável pelas execuções do CI/CD.

  • O arquivo Appfile contém as informações do seu aplicativo iOS.

    Appfile

  • O arquivo Matchfile contém as informações para executar a função match.

    Matchfile

  • O arquivo Pluginfile é o arquivo que contém os plugins que você deseja utilizar.

Pluginfile


Construção do Fastfile

Entendendo os funções

  • Usaremos uma lista de funções fornecidas pelo próprio Fastlane, vamos explicar cada uma delas.

before_all

  • Essa função executará antes de todas as lanes que teremos.
before_all do
  # Insira seu código.
end
Enter fullscreen mode Exit fullscreen mode

is_ci

  • Essa função verifica se quem está rodando é um usuário ou uma máquina (Github Actions, Travis, Jenkins)
if is_ci
  puts "I'm a computer"
else
  say "Hi Human!"
end
Enter fullscreen mode Exit fullscreen mode

create_keychain

  • Essa função é necessária para criar uma keychain, para guardarmos as informações dos certificados temporariamente.
create_keychain(
        name: ENV["CI_KEYCHAIN_NAME"],
        password: ENV["CI_KEYCHAIN_PASSWORD"],
        default_keychain: is_ci,
        unlock: true,
        timeout: 3600,
        lock_when_sleeps: false
      )
Enter fullscreen mode Exit fullscreen mode

match

  • Permite você sincronizar seus certificados e perfil com seu time. Nesse exemplo criei um repositório privado para guardar os certificados.
match(
        git_basic_authorization: Base64.strict_encode64(GIT_ACCESS),
        git_url: GIT_URL,
        app_identifier: APP_IDENTIFIER",
        type: "development",
        keychain_name: keychain_name,
        keychain_password: keychain_password,
        readonly: true
      )
Enter fullscreen mode Exit fullscreen mode

Obs: se vc tiver vários perfis de aplicação DEBUG, STAGING, PROD..., é necessário fazer o match para cada uma de acordo com seu type:adhoc, development, appstore.

testflight

  • Função para lançar seu app para o Apple Testflight.
testflight(
      skip_submission: true,
      skip_waiting_for_build_processing: true
    )
Enter fullscreen mode Exit fullscreen mode

gym

  • Realiza o Build do seu applicativo assinado ipa ou app file.
gym(
      scheme: PROJECT_NAME,
      export_method: "app-store",
      workspace: XCODE_WORKSPACE,
      silent: true,
      include_bitcode: true
    )
Enter fullscreen mode Exit fullscreen mode

gradle

  • Realiza as ações do gradle.
gradle(
      project_dir: "android/",
      task: "assemble",
      flavor: "Production",
      build_type: "Release"
    )
Enter fullscreen mode Exit fullscreen mode

upload_to_play_store

  • Esse aqui é meio díficil de explicar. Realiza o upload da sua aplicação para a Play Store.
upload_to_play_store(track: 'production', json_key: 'path...')
Enter fullscreen mode Exit fullscreen mode

GitHub Access Token

  • Será preciso gerar um Personal Token da sua conta do github com o intuito de conseguirmos acessar o projeto dos certificados no GitHub Actions, para isso acesse o seu GitHub > Developer settings > Personal access tokens > Generate new token > Dê um nome > Marque a opção REPO > Salve o token > Copie-o.

Personal Token


Personal Token

  • Agora iremos adicionar o seu Personal Token nos SECRETS do seu projeto do GitHub.

Secrets

Secrets


Secrets


Finalmente o Fastfile...

  • Seu Fastfile ficará parecido com esse abaixo, porém com suas varíaveis e podendo haver mudanças de acordo com a sua necessidade.

Workflows do Github Actions

  • Cria uma pasta na raiz do seu projeto com o nome .github e dentro dela crie uma pasta workflows é lá que iremos colocar nossos workflows (jura ??????)

Workflows

  • Agora iremos fazer nossos workflows do Github Actions, no total tenho 5 workflows.
  • Lembrando que MATCH_PASSWORD é a senha dos repositório do certificado e FASTLANE_PASSWORD é a senha de acesso para a Apple.

Executa testes e Linter no projeto

Android QA

Android Produção

iOS QA

iOS Produção

Espero que essa publicação consiga te ajudar!

Top comments (0)