Eu tenho usado o Travis CI por um tempo em alguns projetos, gerenciado usando Maven, e estava me perguntando hoje se eu poderia realmente implantar artefatos criados pelo Travis. A primeira coisa que encontrei foi uma pequena joia de rubi que poderia implantar artefatos no S3, encontrada aqui . Infelizmente, não uso o S3, nem tenho planos de fazê-lo em um futuro próximo.
A próxima coisa que descobri foi esta postagem no blog . Isso era exatamente o que eu queria fazer.
Para os projetos em questão, configurei um repositório maven improvisado usando um branch no GitHub, é claro, a maioria dos projetos usará um repositório Sonatype Nexus adequado ou semelhante, mas isso deve funcionar para qualquer método de implantação que você definiu acima.
A primeira coisa a fazer é configurar o settings.xml para maven para o Travis. Fiz um galho chamado “travis” para guardar isso e isentei de construir:
(em .travis.yml em seu branch master 🙂
branches:
except:
- travis
(confirme e empurre isso)
git add .travis.yml
git commit -m 'Exempt travis branch from Travis'
git push
(no terminal, criando o novo branch sem commits e limpando todos os arquivos 🙂
git checkout --orphan travis
git rm -r .
rm -r .
A próxima coisa a fazer é realmente criar o settings.xml. Visto que isso geralmente armazena seu nome de usuário e senha, você precisa encontrar uma maneira de esconder isso do público. Felizmente, o maven vem com suporte para variáveis de ambiente e o Travis permite variáveis de ambiente criptografadas “seguras”, então em settings.xml usamos as variáveis de ambiente para seu nome de usuário e senha de repositório:
<settings >="http://maven.apache.org/SETTINGS/1.0.0" >="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<servers>
<server>
<id>sonatype-nexus-snapshots</id>
<username>${env.CI_DEPLOY_USERNAME}</username>
<password>${env.CI_DEPLOY_PASSWORD}</password>
</server>
</servers>
</settings>
Vamos nos comprometer e empurrar isso:
git add --all
git commit -m 'Add settings.xml'
git push origin travis
Para criar as variáveis criptografadas, precisamos usar a gema travis.
Se você ainda não tem a gema travis, pode instalá-la usando:
sudo gem install travis
Então, depois de instalá-lo, você pode criptografar seu usuário e senha:
travis encrypt -r you/yourrepo "CI_DEPLOY_USERNAME=username"
travis encrypt -r you/yourrepo "CI_DEPLOY_PASSWORD=password"
Adicione as variáveis ”seguras” geradas ao seu .travis.yml no mestre, primeiro volte para o seu branch mestre:
git checkout master
Em seguida, abra seu .travis.yml e adicione suas variáveis de ambiente na parte inferior:
env:
global:
- [paste your encrypted user variable, including the "secure: "]
- [paste your encrypted password variable, including the "secure: "]
E os seguintes scripts no topo:
before_install: "git clone -b travis `git config --get remote.origin.url` target/travis"
script: "mvn deploy --settings target/travis/settings.xml"
Tudo bem, finalmente, vamos fazer um commit e empurrar para o master.
git checkout master
git add .travis.yml
git commit -m 'Deploy maven artifacts from Travis builds'
git push origin master
O Travis irá então continuar a construir a versão mais recente de seu branch master e implantar artefatos em seu repo maven, e em cada push subsequente ele deverá implantar os novos instantâneos.