Tutorial: Assinatura de código da Apple com Fastlane em CodeBuild uso GitHub para armazenamento de certificados - AWS CodeBuild

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Tutorial: Assinatura de código da Apple com Fastlane em CodeBuild uso GitHub para armazenamento de certificados

fastlane é uma ferramenta popular de automação de código aberto para automatizar implantações e lançamentos beta de aplicações iOS e Android. Ela gerencia todas as tarefas tediosas, como gerar capturas de tela, gerenciar assinaturas de código e lançar a aplicação.

Este exemplo demonstra como configurar a assinatura de código da Apple usando o Fastlane em um CodeBuild projeto executado no Mac Fleet, com GitHub armazenamento para certificados e perfis de provisionamento.

Pré-requisitos

Para concluir este tutorial, primeiro você precisa configurar o seguinte:

Etapa 1: Configure o Fastlane Match GitHub em sua máquina local

O Fastlane Match é uma das ferramentas da Fastlane e permite uma configuração perfeita para assinatura de código em seu ambiente de desenvolvimento local e não. CodeBuild O Fastlane Match armazena todos os seus certificados de assinatura de código e perfis de provisionamento em um Git repository/S3 Bucket/Google Cloud Storage e baixa e instala os certificados e perfis necessários quando necessário.

Neste exemplo de configuração, vamos configurar e usar um repositório Git para armazenamento.

  1. Inicialize o match em seu projeto:

    fastlane match init
  2. Quando solicitado, escolha GitHub como modo de armazenamento.

  3. Atualize seu `Matchfile` para usar GitHub:

    git_url("https://github.com/your-username/your-certificate-repo.git") storage_mode("git") type("development") # The default type, can be: appstore, adhoc, enterprise or development
nota

Insira o URL HTTPS do repositório Git para fastlane para autenticar e clonar com sucesso. Caso contrário, você poderá receber um erro de autenticação ao tentar usar o match.

Etapa 2: configurar o Fastfile

Crie ou atualize seu `Fastfile` com a seguinte lane.

Ativado CodeBuild, o Fastlane Match precisará ser executado toda vez que você criar e assinar seu aplicativo. A maneira mais fácil de fazer isso é adicionar a ação match à lane que cria a aplicação.

default_platform(:ios) platform :ios do before_all do setup_ci end desc "Build and sign the app" lane :build do match(type: "appstore", readonly: true) gym( scheme: "YourScheme", export_method: "app-store" ) end end
nota

Adicione setup_ci à seção before_all no Fastfile para que a ação de match funcione corretamente. Isso garante que um chaveiro temporário do Fastlane com as permissões apropriadas seja usado. Sem usar isso, podem ocorrer falhas na compilação ou resultados inconsistentes.

Etapa 3: executar o comando fastlane match para gerar os respectivos certificados e perfis

O comando match do fastlane para o tipo especificado (ou seja, development, appstore, adhoc, enterprise) gerará o certificado e o perfil se não estiver disponível na loja remota. Os certificados e perfis serão armazenados GitHub pela fastlane.

bundle exec fastlane match appstore

A execução do comando será interativa e o fastlane solicitará a definição da senha para descriptografar os certificados.

Etapa 4: criar o arquivo da aplicação para o projeto

Crie ou adicione o arquivo da aplicação conforme apropriado para o projeto.

  1. Crie ou adicione o Gymfile, Appfile, Snapfile, Deliverfile com base nos requisitos de compilação do projeto.

  2. Confirme as alterações para o repositório remoto.

Etapa 5: criar variáveis de ambiente no Secrets Manager

Crie três segredos para armazenar o cookie da sessão do fastlane e a frase secreta correspondente. Consulte mais informações sobre como criar segredos no Secrets Manager em Criar um segredo do AWS Secrets Manager.

  1. Acesse seu cookie de sessão do fastlane da seguinte forma.

    1. Chave secreta: FASTLANE_SESSION

    2. Valor do segredo: cookie de sessão gerado ao executar o comando a seguir na máquina local.

      nota

      Esse valor fica disponível após a autenticação em um arquivo local: ~/.fastlane/spaceship/my_appleid_username/cookie.

      fastlane spaceauth -u <Apple_account>
  2. Frase secreta do Fastlane Match - Para permitir que o Fastlane Match decifre os certificados e perfis armazenados no repositório Git, é necessário adicionar a senha de criptografia que você configurou na etapa de configuração do Match às variáveis de ambiente do projeto. CodeBuild

    1. Chave secreta: MATCH_PASSWORD

    2. Valor do segredo: <match passphrase to decrypt certificates>. A frase secreta é definida ao gerar os certificados na Etapa 3.

  3. MATCH_GIT_BASIC_AUTHORIZATION do Fastlane: defina uma autorização básica para match:

    1. Chave secreta:

      MATCH_GIT_BASIC_AUTHORIZATION

    2. Valor do segredo: o valor deve ser uma string codificada em base64 do seu nome de usuário e token de acesso pessoal (PAT) no formato username:password. Você pode gerá-lo usando o seguinte comando:

      echo -n your_github_username:your_personal_access_token | base64

      Você pode gerar seu PAT no GitHub console em Seu perfil > Configurações > Configurações de desenvolvedores > Token de acesso pessoal. Para obter mais informações, consulte o guia a seguir: https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing- your-personal-access-tokens.

nota

Ao criar os segredos acima no Secrets Manager, forneça o nome de um segredo com o seguinte prefixo: /CodeBuild/

Etapa 6: criar uma frota de computação

Crie a frota de computação para o projeto.

  1. No console, acesse CodeBuild e crie uma nova frota de computação.

  2. Escolha macOS como sistema operacional e selecione um tipo de computação e uma imagem apropriados.

Etapa 7: criar um projeto no CodeBuild

Crie seu projeto em CodeBuild.

  1. Abra o AWS CodeBuild console em https://console.aws.amazon.com/codesuite/codebuild/home.

  2. Crie um projeto de compilação. Para obter informações, consulte Criar um projeto de compilação (console) e Executar uma compilação (console).

  3. Configure seu provedor de origem (como GitHub, CodeCommit). Esse é o repositório de origem do projeto do iOS e não o repositório de certificados.

  4. Em Ambiente:

    • Escolha Capacidade reservada.

    • Em Frota, selecione a frota criada acima.

    • Forneça o nome da função de serviço que CodeBuild será criada para você.

    • Forneça as variáveis de ambiente abaixo.

      • Nome:MATCH_PASSWORD, Valor:<secrets arn>, Tipo: Secrets Manager (Secrets ARN criado na etapa 5 para MATCH_PASSWORD)

      • Nome:FASTLANE_SESSION, Valor:<secrets arn>, Tipo: Secrets Manager (Secrets ARN criado na etapa 5 para FASTLANE_SESSION)

      • Nome:MATCH_GIT_BASIC_AUTHORIZATION, Valor:<secrets ARN>, Tipo: Secrets Manager Secrets ARN (criado na etapa 5 para) MATCH_GIT_BASIC_AUTHORIZATION

  5. Em Buildspec, adicione:

    version: 0.2 phases: install: commands: - gem install bundler - bundle install build: commands: - echo "Building and signing the app..." - bundle exec fastlane build post_build: commands: - echo "Build completed on date" artifacts: files: - '*/.ipa' name: app-$(date +%Y-%m-%d)

Etapa 8: executar a compilação

Execute o build. Você pode revisar o status da compilação e fazer login CodeBuild.

Depois que o trabalho for concluído, você poderá visualizar o log do trabalho.

Solução de problemas

  • Se você tiver problemas para acessar o GitHub repositório, verifique novamente seu token de acesso pessoal e a variável de ambiente MATCH_GIT_BASIC_AUTHORIZATION.

  • Se você encontrar problemas com a decodificação do certificado, defina a senha correta na variável de ambiente MATCH_PASSWORD.

  • Para problemas de assinatura de código, verifique se sua conta de desenvolvedor da Apple tem os certificados e perfis necessários e se o identificador do pacote no projeto do Xcode corresponde ao do perfil de aprovisionamento.

Considerações sobre segurança

Veja as configurações sobre segurança deste tutorial.

  • Mantenha seu GitHub repositório de certificados privado e audite regularmente o acesso.

  • Considere usar AWS Secrets Manager para armazenar informações confidenciais, como MATCH_PASSWORD e FASTLANE_SESSION.

Este exemplo fornece uma configuração para a assinatura de código do iOS com o Fastlane e CodeBuild o uso GitHub para armazenamento de certificados. Talvez seja necessário ajustar algumas etapas com base nos requisitos e no CodeBuild ambiente específicos do projeto. Essa abordagem aproveita os AWS serviços para aumentar a segurança e a integração no AWS ecossistema.