Integração contínua (com projetos iOS e Android) [fechado]

10

Estou tentando fazer algumas mudanças positivas na minha empresa e uma delas é implementar a integração contínua. Como desenvolvemos dispositivos móveis (iOS / Android), preciso de um IC que ofereça suporte aos dois tipos de projetos. Como você pode dizer, eu não sei muito sobre CI, mas pesquisei um pouco no Google e acho que Jenkins e Hudson são os dois mais populares.

Eu tenho perguntas em duas partes.

  1. Sua opinião sobre Jenkins?
  2. Existe uma maneira de a CI verificar se o projeto está sendo compilado com os
    padrões de codificação (como acoplamentos soltos etc.)?
paxx
fonte
3
"Jenkins e Hudson são os dois" ... hmm, você sabe que Jenkins é o novo nome para o Hudson ?
Gnat #
11
Eu realmente não sabia disso! Como eu disse, sou muito novo na CI e tenho 0 experiência. Soooo .. J & H mesma coisa .. Guess que estreita minhas opções :)
paxx
Há também Team City, Cruise Control e outros.
Kyle Hodgson
@gnat: bem, eu acho que Jenkins é um garfo do Hudson. Acho que o Hudson ainda está por aí: hudson-ci.org gerenciado pela Oracle. Jenkins é um garfo muito bom que para a maioria das pessoas migrou. Desculpe se eu estiver errado ...
dbalakirev

Respostas:

9

Primeiramente, você pode querer olhar para o TeamCity como outra opção para o seu servidor.

Na minha opinião (embora eu tenha um pouco menos de experiência com Jenkins do que com TeamCity), ambas são ferramentas excelentes e muito capazes - eu ficaria feliz em um ambiente usando qualquer uma delas.

Ok, para chegar à carne do problema ou seja

Existe uma maneira de a CI verificar se o projeto está sendo compilado com os padrões de codificação (como acoplamentos soltos etc.)?

No nível mais fundamental, tudo o que um servidor de IC faz é executar um script e, em seguida, interpretar e apresentar os resultados da execução desse script - portanto, se você puder criá-lo, seu servidor de CI provavelmente poderá executá-lo e, se conseguir formatar a saída adequadamente, o servidor do IC provavelmente pode interpretar e relatar o resultado.

É claro que os principais servidores de compilação já são capazes de conversar / integrar-se a muitas ferramentas populares - então, na verdade, a questão se torna qual ferramenta você está usando para verificar seus padrões de codificação e isso se integra à sua escolha do servidor de CI.

Sim, o servidor de IC traz muito mais ao jogo em termos de automação do que apenas executar um script sem pensar - mas no final do dia é isso que está fazendo.


Só para esclarecer - eu sei que um servidor de compilação faz mais do que apenas executar scripts, é a automação do processo (e em particular a integração com o (D) VCS) que agrega valor - mas respondendo ao "o que eu preciso? um servidor de construção "pergunta a resposta é" um servidor e um script "tudo o resto flui a partir daí.

Murph
fonte
Usei o TeamCity com bastante êxito como meu servidor de CI para iOS. Eu imagino que é um acéfalo para usá-lo para Android
Sylvanaar
5

Eu apóio a recomendação do TeamCity - é um ótimo produto. Não consigo falar com o Android, pois não tenho tempo para sentar lá, mas consegui projetos iOS em execução no CI graças a dois artigos ( 1 2 ).

As partes mais complicadas realmente tinham a ver com o mac para executar a compilação automatizada com o chaveiro adequado e tal, para que você pudesse criar um aplicativo assinado que pudesse implantar em um iDevice em vez de apenas uma opção de emulador.

Wyatt Barnett
fonte
É possível instalar o TeamCity no servidor linux e depois lidar com projetos iOS?
paxx
11
O TeamCity não importa, é o agente de construção. E para iOS, você precisará implantar em um mac. Somente ele possui a cadeia de ferramentas. Provavelmente você pode fazer algumas coisas usando o GNUStep, mas minha suspeita é que você terá um tempo bastante frustrante com algo não trivial.
Wyatt Barnett
2

Configurei o servidor de compilação e os scripts de nossa empresa antes de usar o Jenkins, onde desenvolvemos aplicativos para iOS. Como muitos disseram, o servidor de CI é bem simples e eu gosto do Jenkins porque é de código aberto / gratuito e possui muitos plugins como publicar relatórios de cobertura ou integração ao github.

Timothy Chen
fonte