Implantando artefatos maven do Travis

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.