Acabei de ingressar em um projeto e sou novo no travis-ci. Prefiro não precisar enviar todas as pequenas alterações para .travis.yml e todas as pequenas alterações que faço na fonte para executar a compilação. Com o jenkins, você pode fazer o download do jenkins e executar localmente. O travis oferece algo parecido com isto?
Nota: Eu vi o travis-ci cli e o baixei, mas tudo o que parece fazer é chamar sua API, que se conecta ao meu repositório do github; portanto, se eu não pressionar, não importará que eu reinicie a última compilação.
install:
seção, e é provavelmente sobre estas as questões que mais preocupam.Respostas:
Esse processo permite reproduzir completamente qualquer trabalho de criação do Travis no seu computador. Além disso, você pode interromper o processo a qualquer momento e depurar. Abaixo está um exemplo em que reproduzo perfeitamente os resultados do trabalho nº 191.1 no php-school / cli-menu .
Pré-requisitos
Configurar o ambiente de construção
Referência: https://docs.travis-ci.com/user/common-build-problems/
Crie seu próprio ID de construção temporário
Visualize o log de compilação , abra o botão mostrar mais para INFORMAÇÕES DO TRABALHADOR e encontre a linha INSTANCE, cole-a aqui e execute (substitua a marca após os dois pontos pela mais nova disponível) :
Execute o servidor sem cabeça
Execute o cliente conectado
Execute o trabalho
Agora você está dentro do seu ambiente Travis. Corra
su - travis
para começar.Este passo é bem definido, mas é mais tedioso e manual. Você encontrará todos os comandos que o Travis executa no ambiente. Para fazer isso, procure por tudo na coluna da direita que tenha uma tag como 0.03s.
No lado esquerdo, você verá os comandos reais. Execute esses comandos, em ordem.
Resultado
Agora é uma boa hora para executar o
history
comando. Você pode reiniciar o processo e reproduzir esses comandos para executar o mesmo teste em uma base de código atualizada.ssh-keygen -t rsa -b 4096 -C "YOUR EMAIL REGISTERED IN GITHUB"
em seguida,cat ~/.ssh/id_rsa.pub
e clique aqui para adicionar uma chavegit pull
de dentro do docker, carregar confirmações da sua caixa de desenvolvimento antes de enviá-las ao GitHub.travis.yml
.fonte
instance:
Não consigo ver um caminho de imagem do docker válido, apenas algo parecidotravis-ci-garnet-trusty-1512502259-986baf0
. Tenteitravisci/ci-garnet:$INSTANCE
etravisci/$INSTANCE
- não funciona, não consigo encontrar a imagem. Também apenas pegar o postfix (ietravisci/ci-garnet:packer-1512502259-986baf0
) não funcionou.travisci/ci-garnet:packer-1512502276-986baf0
imagem sugerida nos documentos do Travis . Este está disponível, mas desatualizado. Por exemplo, o CMake é muito mais antigo que o disponível no Travis. Nenhuma nova versão doci-garnet
foi carregada no Docker Hub nos últimos seis meses, enquanto anteriormente havia muitas atualizações por mês.sudo: required
definido? Em uma compilação atual do meu Eu vejotravis-ci-sardonyx-xenial-1547455603-2c98a19
que eu pode mapear para travisci / ci-sardônica: packer-1547455648-2c98a19O Travis-ci oferece uma nova infraestrutura baseada em contêiner que usa docker. Isso pode ser muito útil se você estiver tentando solucionar um problema do travis-ci, reproduzindo-o localmente. Isso é retirado da documentação do Travis CI .
Solução de problemas localmente em uma imagem do Docker
Se você está tendo problemas para rastrear o problema exato em uma compilação, geralmente ajuda a executá-la localmente. Para fazer isso, você precisa usar nossa infraestrutura baseada em contêiner (ou seja, possui
sudo: false
na sua.travis.yml
) e saber qual imagem do Docker você está usando no Travis CI.Executando uma imagem do Docker com base em contêiner localmente
Selecione uma imagem no Docker Hub . Se você não estiver usando uma seleção de imagem específica do idioma
ci-ruby
. Abra um terminal e inicie uma sessão interativa do Docker usando o URL da imagem:Mude para o
travis
usuário:/
pasta da imagem.fonte
make test
.> Manually install any dependencies
Parece uma boa maneira de obter resultados que não correspondem às compilações regulares do Travis.Manually tun your Travis CI build command
... Como, o que? Quão? O que é isso? Eu tenho um.travis.yml
arquivo Eu tentei travis-build, mas é um beco sem saída.ATUALIZAÇÃO: Agora tenho uma resposta completa, tudo em um, chave na mão, consulte https://stackoverflow.com/a/49019950/300224 . Levou apenas 3 anos para descobrir!
De acordo com a documentação do Travis: https://github.com/travis-ci/travis-ci, há uma mistura de projetos que conspiram para fornecer o serviço da web do Travis CI que conhecemos e amamos. O seguinte subconjunto de projetos parece permitir a
make test
funcionalidade local usando o.travis.yml
em seu projeto:travis-build
O travis-build cria o script de construção para cada trabalho. Ele pega a configuração do
.travis.yml
arquivo e cria umbash
script que é executado no ambiente de construção pelo travis-worker.travis-cookbooks
O travis-cookbooks contém os livros de receitas do Chef que são usados para provisionar os ambientes de construção.
travis-worker
O travis-worker é responsável por executar os scripts de construção em um ambiente limpo. Ele transmite a saída do log para travis-logs e envia atualizações de estado (início / término da construção) para o travis-hub.
(Os outros subprojetos são responsáveis pela comunicação com o GitHub, a interface da web, o email e a API.)
fonte
make test
função seria ótimo. Comente se você gostaria de trabalhar nisso comigo.travis-build
? Não há instruções no repositório.Semelhante ao de Scott McLeod, mas isso também gera um script bash para executar as etapas do .travis.yml.
Solução de problemas localmente no Docker com um script Bash gerado
fonte
travis # to create ~/.travis
. Travis precisa de um comando para executar.sudo - travis
deveria sersu - travis
./home/travis/.rvm/rubies/ruby-2.4.1/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- travis/support (LoadError)
cd ~/.travis/travis-build/ bundle install bundler add travis bundler binstubs travis cd <REPO_YOU_WANT_TO_RUN_COMPILE_IN> ~/.travis/travis-build/bin/travis compile
Use wwtd (o que o travis faria) ruby gem para executar testes em sua máquina local aproximadamente como eles executariam no travis.
Ele recriará a matriz de compilação e executará cada configuração, excelente para verificar a configuração antes de enviar.
fonte
ruby
suportetl; dr Use a imagem especificada em https://docs.travis-ci.com/user/common-build-problems/#trou Troubleshooting-locally-in-a-docker- image em combinação com https://github.com/ travis-ci / travis-build # use-como-addon-para-travis-cli .
EDIT 2019-12-06
#troubleshooting-locally-in-a-docker-image
A seção foi substituída pela#running-builds-in-debug-mode
que também descreve como fazer o SSH para o trabalho em execução no modo de depuração .EDIT 2019-07-26
#troubleshooting-locally-in-a-docker-image
A seção não faz mais parte dos documentos. aqui está o porquêNo entanto, ainda está na história do git: https://github.com/travis-ci/docs-travis-ci-com/pull/2193 .
Procure por versões da imagem (bastante antigas, que não puderam encontrar mais recentes) em: https://travis-ci.org/travis-ci/docs-travis-ci-com/builds/230889063#L661 .
Eu queria inspecionar por que um dos testes do meu build falhou com um erro que não recebi localmente.
Trabalhou.
O que realmente funcionou foi usar a imagem especificada em Solucionando problemas localmente em uma página de documentos da Imagem do Docker . No meu caso, foi
travisci/ci-garnet:packer-1512502276-986baf0
.Consegui adicionar as
travise compile
seguintes etapas descritas em https://github.com/travis-ci/travis-build#use-as-addon-for-travis-cli .Tudo
.travis.yml
foi executado conforme o esperado (dependências instaladas, testes executados, ...).Observe que antes de executar
bash ci.sh
, tive que mudar--branch\=\'\'\
para--branch\=master\
(consulte o penúltimosed -i ...
comando) emci.sh
.Se isso não funcionar, o comando abaixo ajudará a identificar o número da linha de destino e você poderá editar a linha manualmente.
Não funcionou.
Seguiu a resposta aceita para esta pergunta, mas não encontrou a imagem (
travis-ci-garnet-trusty-1512502259-986baf0
) mencionadainstance
em https://hub.docker.com/u/travisci/ .Construção trabalhadores versão aponta para Travis-ci / trabalhador cometer e sua Travis-trabalhador de instalar referências
quay.io/travisci/
como registro de imagem. Então eu tentei.Definitivamente não é confiável (Ubuntu 14.04) e também não é pequeno.
fonte
http_proxy
ambiente por causa dissogit clone
. No padrãogit clone
lançagnutls_handshake
exceção. Então, eu devo aplicar a instalação de umabundler
versão específicagem install bundler -v 1.16.6
porquebundler binstubs travis
falhou anteriormente. Melhore abundler
versão exigida executando `bundle info travis`travis.yml
em um script de shell executável. Bem feito! A única melhoria para isso seria um mecanismo pelo qual evitar a substituição manual de cadeias ao especificar a ramificação a partir da qual construir.sed
comando que aborda o ponto que você fez. Veja o comando antes de executarbash ci.sh
.Você pode experimentar o Trevor , que usa o Docker para executar sua compilação do Travis.
De sua descrição:
fonte
Não tenho certeza de qual era o motivo original para executar o Travis localmente, se você apenas queria brincar com ele, pare de ler aqui, pois isso é irrelevante para você.
Se você já possui experiência com o Travis hospedado e deseja obter a mesma experiência em seu próprio datacenter, continue lendo.
Desde dezembro de 2014, o Travis CI oferece uma versão Enterprise no local.
http://blog.travis-ci.com/2014-12-19-introducing-travis-ci-enterprise/
O preço também faz parte do artigo:
fonte
whackamole
é uma cópia do projeto no qual realmente quero trabalhar, e posso configurar um trabalho temporário de criação do Travis para esse projeto enquanto resolvo os problemas da automação de criação. Depois que eu tiver acertado, refaça as dezenas de "oops" confirmados e avance para o verdadeiro repositório do GitHub. (E provavelmente remova owhackamole
repositório do GitHub e o trabalho correspondente do Travis.) #É possível fazer o SSH no ambiente Travis CI por meio de um host de rejeição. O recurso não foi criado no Travis CI, mas pode ser alcançado com as seguintes etapas.
travis
usuário e garanta que você possa fazer o SSH para ele.Coloque estas linhas na
script:
seção do seu.travis.yml
(por exemplo, no final).Onde
$bouncehostip
está o IP / host do seu host de rejeição e$sshpassword
sua senha SSH definida. Essas variáveis podem ser adicionadas como variáveis criptografadas .Empurre as alterações. Você deve conseguir fazer uma conexão SSH com seu host de rejeição.
Fonte: Shell no Travis CI Build Environment .
Aqui está o exemplo completo:
Veja:
c-mart/travis-shell
no GitHub .Consulte também: Como reproduzir um ambiente de construção travis-ci para depuração
fonte