Arquivar os artefatos em Jenkins

Alguém poderia me explicar a ideia de artefatos no processo de criação?

Eu tenho o diretório do espaço de trabalho onde eu check-out o código para compilar e executar meus scripts de ant etc. No final, no meu caso, recebo um arquivo jar que está pronto para instalar. Isso é considerado o artefato?

Onde devo dizer meu script de compilation para colocar o arquivo jar? No diretório da área de trabalho? Meu arquivo jar recebe um nome de arquivo exclusivo dependendo de variables ​​como BUILD_ID e tal, como posso dizer ao Jenkins qual arquivo jar escolher?

EDIT: Ok, então eu tentei fazer algo assim:

insira a descrição da imagem aqui

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 causa um erro? Parece que estou perdendo alguma coisa.

Além disso, o Jenkins exclui os artefatos após cada construção (não os artefatos arquivados, eu sei que posso dizer para excluí-los)? Caso contrário, irá entupir o disco rígido rapidamente.

Sua compreensão está correta, 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 construção em um diretório de build , target ou bin .

O arquivador Jenkins pode usar globs ( target/*.jar ) para obter facilmente o arquivo correto, mesmo se você tiver um nome exclusivo por compilation.

Um artefato pode ser qualquer resultado do seu processo de criação. O importante é que não importa em qual cliente ele foi construído, ele será transferido da área de trabalho de volta para o mestre (servidor) e armazenado lá com um link para a construção. A vantagem é que ele é versionado desta forma, você só precisa configurar o backup no seu mestre e que todos os artefatos são acessíveis através da interface da web, mesmo que todos os clientes estejam offline.

É possível definir uma expressão regular como o nome do artefato. No meu caso eu fechei todos os arquivos que eu queria armazenar em um arquivo com um nome constante durante a construção.

Além disso, o Jenkins exclui os artefatos após cada compilation? (não os artefatos arquivados, eu sei que posso dizer para deletar esses)

Não, o Hudson / Jenkins não limpa sozinho o espaço de trabalho após uma compilation. Você pode ter ações em seu processo de criação que apagam, sobrescrevem ou movem artefatos de construção de onde você os deixou. Há uma opção na configuração do trabalho, em Opções Avançadas do Projeto (que deve ser expandida), chamada “Limpar área de trabalho antes da compilation”, que limpará a área de trabalho no início de uma nova compilation.

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 compilation. Na seção Geral, marque “Descartar construções antigas” com a estratégia “Log Rotation” e depois vá para as opções avançadas. Mais duas opções aparecerão relacionadas à manutenção de artefatos de compilation para o trabalho com base no número de dias ou compilações.

As configurações que funcionam para mim são inserir 1 para “Nº máx. De construções a serem mantidas com artefatos” e depois ter uma ação de pós-compilation 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 somente a última construção manterá seus próprios artefatos.

Descartar opções antigas de construções