Fastlane - Escrevendo seu Fastfile em Swift

Bruno Ramos
5 min readJan 23, 2019

--

Nesse artigo gostaria de compartilhar minhas primeiras impressões em utilizar Swift e Xcode para escrever nossas lanes de automatização do nosso aplicativo iOS utilizando Fastlane.

A partir da versão 2.69.0 dessa maravilhosa ferramenta começou a oferecer suporte para a linguagem Swift, sendo assim desenvolvedores iOS não precisam mais escrever código Ruby para configurar o Fastlane em aplicações iOS ou MacOS.

Contextualizando um pouco… Fastlane é uma ferramenta que visa automatizar processos cotidianos de um desenvolvedor iOS, sendo algumas das principais: automatizar todo processo de code signing de um projeto, automatização de snapshots para AppStore, distribuição (Beta e AppStore) do aplicativo, rodar build e testes de sua aplicação, entre diversas outras possíveis facilitações que a ferramenta oferece. Se você já utilizou alguma ferramenta para auxiliar no desenvolvimento do seu app (danger, swift lint, crashlytics, jazzy, hockey app, testflight, sonarqube, etc), provavelmente o Fastlane oferece integração para ela, pois são mais de 400 integrações que a ferramenta oferece. Além de também oferecer integrações com grandes sistemas de CI para iOS, como Travis CI, Jenkins, Bitrise CI e Circle CI. Brincadeiras a parte, atualmente sou um grande evangelizador da ferramenta, então se você não conhece, recomendo fortemente que você acesse a página do Fastlane e implemente no seu projeto.

Primeiros passos

É possível encontrar toda a configuração do Fastlane em sua máquina na documentação da ferramenta nessa página… Nesse artigo, irei seguir passo a passo, e vocês verão como a configuração é feita de maneira simples.

Mesmo o Fastlane atualmente oferece suporte a linguagem Swift, ainda é um Rubygem, então é necessário instalar o Fastlane usando o Rubygem executando o seguinte comando:

$ gem install fastlane

Após a instalação é necessário somente verificarmos a versão instalada e garantir que a mesma é a partir da versão 2.69.0, que oferece suporte a linguagem swift, então execute o seguinte comando:

$ fastlane -v

Após verificado a versão, tudo pronto vamos começar o setup da ferramenta no nosso projeto.

Configurando no projeto

Se você já configurou Fastlane você deve saber como é simples a configuração no seu projeto iOS. Não é só porque vamos utilizar Swift que deve existir uma dificuldade maior para essa configuração, pelo contrário, a ideia é minimizar ao máximo o trabalho de um desenvolvedor iOS para começar a utilizar a ferramenta… Não é atoa que agora é possível fazermos todas as automatizações com a linguagem que temos familiaridade e poder utilizar o Xcode que é a mesma plataforma de desenvolvimento de nossas aplicações.

Tudo o que devemos fazer é rodar o seguinte comando na pasta raiz da sua aplicação iOS:

$ fastlane init swift

Pronto, você já realizou o setup do Fastlane em Swift na sua aplicação. A primeira mudança que podemos notar comparado a uma configuração padrão, é o swift na frente do comando.

Outra diferença nesse momento também é que ao invés de termos um Fastfile.rb localizado dentro da pasta fastlane, agora temos o seguinte arquivo:

$ ./fastlane/swift/FastlaneRunner/FastlaneRunner.xcodeproj

SIM! É um projeto do Xcode, e ele vai criar toda essa estrutura de forma automática pra você! Onde você vai poder fazer toda a configuração do Fastlane dentro desse projeto. Nesse momento você pode notar que o Fastlane criou 8 diretórios e 34 arquivos Swift dentro do diretório /fastlane, o que pode nos assustar um pouco, mas ainda há muita aventura, então não desanimem!

Também nesse momento temos os arquivos

$ ./fastlane/Fastfile.swift
$ ./fastlane/Appfile.swift

São nesses dois arquivos .swift que vou-lhes apresentar toda essa nova experiência!

Abrindo o arquivo do projeto nos deparamos com a seguinte estrutura de pastas e arquivos:

Podemos ver que agora todas as configurações como Fastfile agora estão escritas na linguagem Swift. Agora podemos criar lanes usando os métodos da linguagem, todas as actions do Fastlane já estão disponíveis também.

Após realizadas algumas configurações nos dois arquivos. Nesse momento temos o seguinte código no nosso AppFile:

E no nosso Fastfile:

Nos dois arquivos podemos fazer nossas observações sobre a implementação.

  1. Podemos perceber que nossa classe Fastfile faz herança com a class LaneFile, onde nos permite ter acesso a todos os métodos e propriedades que nos oferecem as integrações do Fastlane.
  2. As suas lanes são declaradas através de métodos, é importante notar que é necessário ter a nomenclatura Lane no final da declaração do método.
  3. Caso seja necessário receber algum valor na Lane, você deve declarar um dicionário como parâmetro do método e dentro dele você tratar conforme sua necessidade.
  4. É possível você fazer o reaproveitamento entre as lanes, sendo assim, podemos quebrar as automatizações em pequenas lanes e reutiliza-las entre elas.
  5. Todas as integrações e ferramentas do Fastlane estão disponíveis como métodos dentro da nossa classe e os parâmetros de cada método também estão disponíveis, não se tem a obrigação de informar todos, você pode fazer isso somente com os que você precisa.
  6. CARACA JOVEM! ALÉM DE TUDO VOCÊ CONSEGUE DAR UM BUILD NO XCODE E VER SE O CÓDIGO ESTÁ TUDO BONITINHO E PRONTO PARA SER EXECUTADO!

Com essas configurações realizadas, para executarmos nossas lanes, basta irmos no terminal e executarmos os seguintes comandos:

$ fastlane test
$ fastlane beta
$ fastlane publishAppStore build_number:1 version_number:1.0

Note que os parâmetros que você passar devem conter o mesmo nome que você definiu dentro do seu código como chave do dicionário.

Simples assim, já temos nossas primeiras lanes escritas em Swift dentro do Xcode! Mas lembre-se que esses são somente exemplos básicos, e que para que todas as actions de configuração de certificados e distribuição funcione de fato, deve ser feito todas as configurações no portal de desenvolvedor, acesso em máquina, configuração no repositório, projeto criado em uma ferramenta de distribuição beta, etc.

Como isso funciona?

Fastlane Swift é o wrapper Swift para executar comandos Ruby por baixo dos panos. Todas as opções de Scan, Match, Gym, Deliver são criadas usando os respectivos protocolos e extensões, onde todas as ações do Fastlane são colocadas em um gigante arquivo chamado Fastlane.swift que executa comandos do Ruby.

É importante lembrar que essa funcionalidade do Fastlane em Swift ainda é uma versão beta, sendo assim, não oferece suporte para inúmeros plugins que o Fastlane em sua configuração normal oferece, além de alguns outros problemas que você pode encontrar nessa nova jornada e que pode não existir alguma solução até o momento.

Enjoy it!

Vale notar alguns pontos positivos sobre tudo isso que foi apresentado nesse artigo!

  1. Todos os desenvolvedores de iOS podem agora entender facilmente o Fastlane, sendo assim os devs iOS da sua equipe não precisam mais estudar Ruby para configurar o Fastlane do seu projeto iOS.
  2. O projeto Xcode oferece inúmeras facilidades na hora de configurar nossas lanes, como por exemplo, autocomplete, destaque de sintaxe para todas as ações Fastlane disponíveis.
  3. O código é puramente em Swift, portanto, pode ser compilado e implementado facilmente.

Os códigos apresentados nesse artigo estão disponíveis nesse repositório.

Vou parando por aqui, espero que agora que você tem pelo menos uma idéia do que é Fastlane, para que serve e como funciona, que você consiga usufruir muito dessas automatizações e integrações!

Se você quiser dar um feedback desse artigo, tirar dúvidas ou discutir mais sobre o tema, me procure no slack iOS Dev Br, Bruno Ramos ou ‘bruno-hcr’.

--

--

Bruno Ramos

iOS @iFood, Co-Host @BuildFailedCast, Part of @CocoaHeadsBr team