Alguém poderia me explicar a ideia de artefatos no processo de construção?
Eu tenho o diretório da área de trabalho onde verifico o código para compilar e executar meus scripts ant etc. No final, no meu caso, recebo um arquivo jar que está pronto para instalar. Isso é considerado o artefato?
Onde devo dizer ao meu script de construção para colocar o arquivo jar? No diretório da área de trabalho? Meu arquivo jar obtém um nome de arquivo exclusivo, dependendo de variáveis como BUILD_ID
essas, como posso dizer ao Jenkins qual arquivo jar escolher?
Edição: Ok, então eu tentei fazer algo parecido com isto:
O caminho ainda não existe no meu espaço de trabalho, porque o script de construção deve criá-lo e, é claro, os arquivos .jar
e .properties
não estão lá porque ainda não foram gerados. Por que isso me dá um erro então? Parece que estou perdendo alguma coisa.
Além disso, o Jenkins exclui os artefatos após cada compilação (não os artefatos arquivados, sei que posso dizer para excluir esses artefatos)? Caso contrário, ele irá entupir o disco rígido rapidamente.
Respostas:
Seu entendimento está correto, um artefato no sentido de Jenkins é o resultado de uma construção - a saída pretendida do processo de construção.
Uma convenção comum é colocar o resultado de uma compilação em um
build
,target
oubin
diretório.O arquivador Jenkins pode usar globs (
target/*.jar
) para selecionar facilmente o arquivo certo, mesmo que você tenha um nome único por compilação.fonte
sh 'mvn clean package'
Um artefato pode ser qualquer resultado do seu processo de construção. O importante é que não importa em qual cliente foi construído, ele será transferido da área de trabalho de volta para o mestre (servidor) e armazenado lá com um link para a compilação. A vantagem é que ele é versionado dessa maneira, você só precisa configurar o backup em seu mestre e que todos os artefatos são acessíveis através da interface da web, mesmo que todos os clientes de construção estejam offline.
É possível definir uma expressão regular como o nome do artefato. No meu caso, zipei todos os arquivos que desejava armazenar em um arquivo com um nome constante durante a compilação.
fonte
Não, o Hudson / Jenkins, por si só, não limpa o espaço de trabalho após uma compilação. Você pode ter ações em seu processo de construção que apagam, substituem ou movem artefatos de construção de onde os deixou. Há uma opção na configuração da tarefa, em Opções Avançadas do Projeto (que deve ser expandida), chamada "Limpar área de trabalho antes da compilação" que limpará a área de trabalho no início de uma nova compilação.
fonte
No Jenkins 2.60.3, há uma maneira de excluir artefatos de construção (não os artefatos arquivados) para economizar espaço no disco rígido na máquina de construção. Na seção Geral, marque "Descartar construções antigas" com a estratégia "Rotação de log" e entre nas opções avançadas. Aparecerão mais duas opções relacionadas à manutenção de artefatos de construção para a tarefa com base no número de dias ou construções.
As configurações que funcionam para mim são inserir 1 para "Nº máximo de compilações para manter com artefatos" e depois executar uma ação pós-compilação para arquivar os artefatos. Dessa forma, todos os artefatos de todas as construções serão arquivados, todas as informações das construções serão salvas, mas apenas a última construção manterá seus próprios artefatos.
Descartar opções de compilações antigas
fonte