Amarengo

Articles and news

Configuração de Jenkins Para Android: Como eu tenho com os desafios que enfrentei

neste artigo, vou documentar minha viagem para conseguir uma totalmente de trabalho sistema de integração contínua utilizando Jenkins. Essa configuração se adapta ao meu ambiente de trabalho, que possui vários projetos usando os mesmos 4 módulos para lógica de negócios.

Em Primeiro Lugar, baixei Jenkins do site oficial. Então abri o terminal e executei o seguinte comando:

java -jar jenkins.war --httpPort=9091

especificei uma porta diferente da usual 8080 para torná-la única e evitar erros, caso outro serviço esteja usando Jenkins.

Depois de concluir todos os passos de configuração, é importante para garantir que os seguintes plugins estão instalados:

  1. Git Plugin
  2. Gradle Plugin
  3. Android Fiapos Plugin
  4. Android do Google Play Editor Plugin

Estes plugins irá garantir que o Jenkins tem ferramentas suficientes para construir um projeto Android.

O próximo passo é configurar as seguintes definições de Jenkins:

  1. configurando o JDK para Jenkins

eu descobri o JDK seção para olhar como se segue depois clicando em Gerir Jenkins -> Global Ferramenta de Configuração:

Básicas de configuração do JDK

eu, em seguida, clicou em Adicionar JDK, em seguida, preencher o seguinte formulário:

Adicionar JDK Instalação view

eu digitado um nome que representa a versão selecionada e escolheu a versão de Instalar a partir de java.sun.com (Nota: Jenkins irá perguntar sobre seus Oracle informações da conta para instalar o JDK).

na mesma página de configuração da ferramenta Global, encontrei as configurações do plugin Gradle nas quais adicionei uma instalação Gradle que tem a mesma versão do Gradle usada em meus projetos. Para evitar mais confusão, executo projetos com Gradle wrapper que discutirei com mais profundidade na próxima seção.

Gradle instalação view

eu também a certeza de que o nome representa a versão selecionada para evitar confusão.

Normalmente, o Gradle pesquisará o local.arquivo de Propriedades no projeto para recuperar o local do Android SDK. Mas ao usar Jenkins, descobri que nem sempre é esse o caso, especialmente ao usar o wrapper Gradle.

para evitar erros de compilação, adicionei ANDROID_HOME nas variáveis de ambiente Jenkins. Isto é conseguido através de Gerir Jenkins -> Configurar o Sistema, em seguida, verificar as variáveis de ambiente do caixa aqui:

Propriedades Globais Seção

e a adição de uma variável com o nome ANDROID_HOME e enchendo o valor com o caminho para o SDK.

Adicionar a Variável de Ambiente

Após o cumprimento de todas essas etapas, comecei a criar um novo item na Jenkins. A maioria dos meus projetos depende de 4 módulos principais do android que estão incluídos no repositório Git como submódulos Git.

a criação de um novo item é muito fácil se você não tem qualquer submódulos:

Página de Novo Item

Simplesmente introduza o nome e selecione Freestyle projeto e clique em OK.

em seguida, vá para gerenciamento de código-fonte. Eu normalmente uso o Git e o programa de configuração do repositório:

Fonte seção de gerenciamento

Insira o repo URL e adicionar credenciais se você não tiver já. Agora, o truque aqui é garantir que, se você estiver usando um link HTTPS para o repo, precisará adicionar credenciais de nome de usuário e tipo de senha, caso contrário, se estiver usando SSH, adicione as credenciais de tipo SSH.

Se você tem submódulos no repositório git, então a maneira mais fácil de lidar com isso é através de um Adicional de comportamento -> Adicionar>Avançado sub-módulos de comportamentos e fazendo o seguinte:

  1. Verifique recursivamente atualização submódulos
  2. No Caminho da referência de recompra, para usar durante o submódulo de atualização, adicione o submódulo nome da pasta que é usada no pai de recompra.
  3. no meu caso, ambos os pais e submódulos podem usar as mesmas credenciais, então verifiquei usar credenciais do controle remoto padrão do repositório pai.

Avançado sub-módulos de comportamentos

Adicionar como muitos daqueles como o número de submódulos incluído e também garantir que, se o pai de recompra, o url é HTTPS e, em seguida, o submódulos link dentro .gitmodules também deve usar HTTPS. O mesmo se aplica ao SSH.

para construir o projeto com sucesso, Jenkins precisa invocar o script Gradle. A maneira mais eficiente é dizer ao Jenkins para executar o wrapper Gradle do projeto e definir as tarefas (clean, assembleDebug, etc…)

Adicionar etapa de Compilação menu

Invocar Gradle Seção de Script

para evitar permissão negada erro, Faça Gradlew executável é verificada e as tarefas são especificados.

Jenkins inclui uma grande variedade de ações a serem tomadas quando a construção é concluída.

mais para a frente para publicar automaticamente o projeto na play store usando o Android play store publicação de plugins podem ser encontrados aqui.

algumas observações sobre a publicação na loja

ao enviar um novo APK para a loja, o código da versão precisa ser incrementado. Para automatizar isso, fiz este trecho para referência.

além disso, ao adicionar theRecent Alterações na parte Jenkins, certifique-se de que você selecione o mesmo idioma como o idioma encontrado na descrição para o arquivo listagem:

A seção final é como disparar cria automaticamente. Para o meu projeto, o controle de versão da minha escolha é bitbucket. A fim de configurá-lo, eu segui este wiki. No entanto, há um problema, para que os webhooks funcionem, você precisa ter Jenkins em uma configuração de servidor da web. Inicialmente, eu não fiz isso, então o webhook não funcionou. Superei isso acionando outras compilações depois que um determinado projeto é construído com sucesso. Isso resolveu meu problema, pois desenvolvo principalmente os 4 submódulos principais em um projeto fictício e os coloco em todos os outros projetos.

isso pode ser feito na seção Build Triggers logo acima da compilação:

Construir Gatilhos Seção

Meus próximos passos serão para aproveitar Jenkins, automação de testes, através de testes jUnit e Android instrumentação de testes.

Deixe uma resposta

O seu endereço de email não será publicado.