Apresentando o Houston CI
Teste de validação contínua para aplicativos do AppCenter
Em nosso post anterior sobre as metas da plataforma Juno, falamos um pouco sobre o teste de integração contínua e um projeto em que estamos trabalhando para levar o conjunto de testes automatizados que executamos para o AppCenter Dashboard a um formato contínuo que qualquer um pode usar. Hoje, tenho orgulho de anunciar que a Houston CI está pronta para testes mais amplos!
O que exatamente é “Houston CI”?
Houston é o nome de código do AppCenter Dashboard, o componente de serviço online do AppCenter. Quando você envia seu aplicativo para publicação no AppCenter, um conjunto de testes automatizados é executado para verificar itens como validade de metadados, nomeação de arquivos RDNN, instalação adequada de arquivos e compilações de pacotes bem-sucedidos. Esses testes automatizados nos permitem garantir uma quantidade mínima de controle de qualidade para todos os pacotes publicados no AppCenter e garantir que não gastemos mais tempo humano analisando os aplicativos que nem sequer criam ou atendem às diretrizes básicas.
Como parte do nosso trabalho na versão Juno, o AppCenter Dashboard precisou ser atualizado com um novo truque: a capacidade de criar pacotes para o Loki e o Juno. Isso tem algumas implicações que entraremos em breve, mas, por enquanto, você deve saber que a base do Houston CI é o AppCenter Dashboard 2.0. Em outras palavras, o mesmo código potencializa o processo de publicação do CI de Houston e do Dashboard do AppCenter.
Por que eu quero isso?
Se você já publicou um aplicativo no AppCenter, talvez tenha passado por algo assim:
Você : Animadamente, libere a versão 1.0 do seu aplicativo no GitHub e aperte o grande botão de publicação no AppCenter Dashboard
AppCenter Dashboard : arquiva alguns problemas no seu rastreador, incluindo alguns erros de empacotamento
Você : Corrigir todos os erros! Lançamento 1.0.1!
AppCenter Dashboard : Mais relatórios de problemas sobre empacotamento
Você, frustrado : 1.0.2!
Painel do AppCenter, zombeteiramente : emitir relatórios
As falhas de empacotamento e construção podem ser irritantes e ter que passar por todo o processo de publicação para tentar reproduzi-las é tedioso. Usar o Houston CI significa que você pode descobrir se o master passa no teste automatizado antes de ser liberado. Você pode até descobrir se as ramificações ou os PRs submetidos pelos contribuidores são aprovados antes de serem mesclados. E como a Houston CI também testa suas compilações de pacotes, você pode saber se um determinado recurso interrompe sua embalagem e agir de acordo, antes do tempo. Coisas muito úteis.
Como eu uso isso?
Adicionar o Houston CI ao seu projeto do GitHub é muito simples. Se você nunca usou o Travis CI antes, confira o Guia de primeiros passos e volte mais tarde. Se você estiver familiarizado com o Travis, poderá copiar o conteúdo da seguinte essência para um .travis.yml
arquivo na raiz do seu projeto para começar a testar:
Você pode notar a variável ambiental DIST
e o fato de que esta configuração testa tanto o Loki quanto o Juno (veja linhas 26 e 27). Isso significa que você pode se antecipar à curva hoje e certificar-se de que seu projeto construa e passe nos testes do Juno antes de abrirmos a publicação ou lançar o beta do Juno. Isso é bem legal.
Mais alguma coisa que eu deveria saber?
O Houston CI e a próxima versão do AppCenter Dashboard vêm com um novo recurso importante que você deve conhecer: suporte para empacotamento fora da árvore. Em breve estaremos recomendando que os desenvolvedores enviem suas embalagens para um “ramo órfão” chamado deb-packaging
. Isso é bastante conveniente se você estiver publicando para outros sistemas operacionais baseados em Linux e não quiser um pacote específico para o filho em sua ramificação principal, mas também permite que o painel do AppCenter suporte ramificações de pacotes separadas para cada versão do sistema operacional elementary.
Se você enviar uma filial chamada deb-packaging-loki
, o AppCenter Dashboard usará essa ramificação de empacotamento para as compilações do Loki. Isso significa que você pode definir sinalizadores de compilação ou ajustar dependências conforme necessário para garantir que seu aplicativo seja compilado e liberado em várias versões suportadas do sistema operacional elementary, se você optar por fazê-lo.
Da mesma forma, você pode enviar ramos de empacotamento que correspondam à nomenclatura de outros ramos para o Houston CI. Portanto, se você tiver um branch de recursos chamado big-new-thing
, poderá criar um branch de embalagem correspondente chamado deb-packaging-big-new-thing
e o Houston CI testará esses branches juntos. Isso é especialmente útil se um ramo de recursos introduzir uma nova dependência. Você pode testar uma nova ramificação de embalagem correspondente e nunca introduzir quebras em um fluxo de trabalho baseado em CI.
Tivemos muito sucesso com o Houston V2 Worker e o Houston CI até agora, mas alguns desses recursos são novos, por isso esperamos encontrar alguns problemas com o seu teste de ajuda! Se você acha que fez tudo certo, mas a Houston CI simplesmente não criará seu aplicativo, lembre-se de abrir um relatório de problemas no GitHub .
Para mais detalhes, verifique o wiki de Houston .
Se você precisar de ajuda ou ficar preso, não entre em pânico! Você sempre pode entrar em nosso Gitter para perguntas sobre o AppCenter Dashboard ou entrar no Slack da comunidade . A Houston CI ainda é bastante nova, por isso esperamos receber seu feedback e aprender como podemos melhorar. Se você estiver familiarizado com o Javascript e quiser nos ajudar a melhorar o AppCenter Dashboard ou o Houston CI, é o Open Source no GitHub . Adoraríamos ver seus pedidos!
Gostariamos de agradecer a todos que compraram algum aplicativo no AppCenter, nos ajudaram via Bountysource ou Patreon, ou também aqueles que compraram uma copia do elementary OS ou produtos da nossa loja. Toda contribuição nos ajuda a tornar tudo isso possível, e não estaríamos aqui sem vocês! Se você gostaria de nos ajudar a melhorar o elementary OS, não hesite emSe Envolver!
¯\_(ツ)_/¯
Tradução do medium do elementary OS