Introdução
Walk Weekender está preparando materiais para visitantes de um evento fictício à beira de um rio. O pacote contém um pequeno site, uma ilustração do percurso, um CSV de paradas e notas para visitantes. O Jenkins já tem um gerador de pacotes funcional, mas seu workspace temporário é limpo após cada execução. Sua tarefa é manter um resultado completo e disponível para download associado ao seu build.
Este laboratório pressupõe conhecimentos básicos de navegação no Jenkins, a capacidade de reconhecer um Declarative Pipeline curto e conhecimentos básicos de manipulação de arquivos, incluindo a extração de um ZIP. Ele explica o arquivamento, as fingerprints e o ciclo de vida do workspace antes de você usá-los. Você não precisa escrever o site, instalar software nem conhecer Java.
Use Pack Desk para a experiência de referência do visitante e Jenkins para builds e configuração. São dois serviços em uma única VM preparada. Os downloads do navegador são salvos no seu computador, separadamente dos arquivos do Jenkins na VM de treinamento. Cada unidade começa de forma independente. A duração é uma estimativa do autor que inclui leitura e erros comuns; ela não foi medida com iniciantes.
Veja para onde vão os arquivos gerados
Nesta etapa, você examinará os materiais esperados para visitantes, executará o job original e verá por que um build bem-sucedido não deixa automaticamente um pacote disponível para download. Comece em Pack Desk.
A solicitação é para Riverwalk Saturday, edição para visitantes RW-02. Na seção Reference visitor pack, selecione Open the reference pack. A referência mostra a experiência esperada para o visitante; sua entrega será o ZIP retido pelo seu próprio build do Jenkins.
Selecione Explore the route. O percurso tem três paradas numeradas: Garden gate, Willow bridge e Orchard yard. Selecione Download all route stops e abra o CSV salvo no visualizador de texto ou de planilhas que você costuma usar. CSV é um formato de texto cujos campos são separados por vírgulas; sua primeira linha contém os nomes das colunas. O início é:
order,stop_id,name,map_x,map_y,visitor_note
1,gate,Garden gate,150,340,Meet beside the blue gate.
Selecione Read the visitor notes e leia o arquivo de texto baixado. O horário de encontro confirmado é 10:00. Esses arquivos, as páginas funcionais e a imagem do percurso formam um conjunto. Baixar um arquivo não muda a página. Use a ação Back do navegador duas vezes para voltar da página do percurso ao painel, passando pela visão geral do pacote.
Mude para a aba Jenkins. Abra create-riverwalk-pack e selecione Build with Parameters. Aguarde o formulário de parâmetros terminar de carregar. Mantenha EDITION como river-v2 e selecione Build. Esse parâmetro seleciona a edição preparada para visitantes; o programa fornecido cria seu ZIP real.
Aguarde até que o build numerado termine. Abra esse build em Builds e selecione Console Output. Encontre estas linhas:
Prepared visitor edition: Riverwalk Saturday / RW-02
Complete event-pack.zip created.
...
Finished: SUCCESS
O programa realmente criou o pacote. Leia mais adiante no log do Pipeline, nas ações finais de pós-execução, e procure [Pipeline] deleteDir. A limpeza fornecida remove os arquivos do workspace dessa execução depois que seus estágios terminam.
Um workspace é o diretório de trabalho que o Jenkins aloca para a execução de um job. Um build pode criar arquivos nele e removê-los depois. SUCCESS descreve o resultado da execução; isso não significa que o Jenkins manteve automaticamente todos os arquivos gerados.
Volte à página de status desse build numerado usando seu link na trilha de navegação. Não há download do artefato event-pack.zip para essa execução original. O job gerou os arquivos e depois os removeu sem primeiro reter um arquivo compactado. Mantenha esse build no histórico para poder compará-lo com a próxima execução.
Retenha o arquivo compactado antes da limpeza
Nesta etapa, você reterá o ZIP completo para visitantes, preservará a limpeza do workspace e usará os arquivos baixados. Comece na página do job create-riverwalk-pack em Jenkins.
Selecione Configure e, em seguida, a seção Pipeline. Seu editor Script contém os estágios de build fornecidos e um bloco post. A seção always desse bloco é executada após os estágios, inclusive quando uma execução falha. Sua operação deleteDir() limpa o workspace alocado; mantenha essa limpeza.
archiveArtifacts copia arquivos selecionados do workspace para os artefatos retidos do build antes da limpeza. Sua configuração artifacts é um nome de arquivo ou padrão relativo a esse workspace. As aspas simples ao redor de 'event-pack.zip' fazem dele uma string. fingerprint: true também registra o identificador de uso de arquivo do Jenkins, que ajudará a rastrear esse ZIP entre jobs no próximo laboratório guiado. Uma fingerprint registra a identidade e o uso do arquivo; ela não é uma assinatura do publicador.
Os dois-pontos separam cada configuração do seu valor, e a vírgula separa as configurações. Adicione um estágio Archive pack após Build pack, dentro de stages. Mantenha o parâmetro, o comando de build e a limpeza. Para usar uma versão completa que você possa copiar, clique dentro de Script, selecione todo o conteúdo com Ctrl+A no Windows/Linux ou Command+A no macOS e substitua-o por:
pipeline {
agent any
parameters {
choice(name: 'EDITION', choices: ['river-v2'], description: 'Visitor edition to prepare')
}
stages {
stage('Prepare workspace') {
steps { deleteDir() }
}
stage('Build pack') {
steps { sh 'sh /var/jenkins_home/walk-pack-fixtures/build-pack.sh' }
}
stage('Archive pack') {
steps {
archiveArtifacts artifacts: 'event-pack.zip', fingerprint: true
}
}
}
post {
always { deleteDir() }
}
}
Selecione Save. Execute Build with Parameters novamente. Aguarde o formulário de parâmetros terminar de carregar e mantenha EDITION definido como river-v2. Selecione Build. Aguarde esse novo build numerado terminar com sucesso. Seu console deve mostrar Archiving artifacts, Recording fingerprints e a limpeza final.
Abra a página de status do novo build e encontre Build Artifacts. Baixe event-pack.zip. O Jenkins reteve esse ZIP como parte desse build, mesmo com a limpeza do workspace.
Extraia todo o ZIP para uma nova pasta usando a ferramenta de arquivos compactados do seu computador. Abra index.html dessa pasta extraída em um navegador. Mantenha os oito arquivos juntos:
index.html
route.html
styles.css
route-map.png
stops.csv
visitor-notes.txt
event.json
build.json
Confirme Riverwalk Saturday, a edição RW-02 e o horário de encontro 10:00. Siga Explore the route, examine as três paradas, baixe o CSV do percurso e selecione Read the visitor notes para ler o arquivo de texto local. Dependendo do navegador, esse arquivo de texto pode abrir diretamente em uma página em vez de iniciar outro download; ele já está incluído na pasta extraída. A imagem e os links usam arquivos locais, portanto esse pacote para visitantes pode ser usado de forma independente da VM de treinamento.

Se a página extraída estiver sem estilos ou sem uma imagem, confira se você extraiu o ZIP inteiro e abriu index.html ao lado de styles.css e route-map.png. Abrir apenas um arquivo HTML dentro de um visualizador de ZIP pode separá-lo de seus recursos. Extraia o download original para uma pasta nova em vez de reconstruir os arquivos.
Se o Jenkins informar um erro de sintaxe do Groovy, volte a Configure, restaure o script completo acima, selecione Save e execute river-v2 novamente. Preserve as chaves e as aspas simples. Se você editou antes de fazer a primeira execução original, remova temporariamente apenas Archive pack, salve e execute uma vez; depois restaure o script completo e execute novamente.
O resultado final deve vir do Pipeline salvo atualmente. Após qualquer outra edição, execute-o novamente. Mantenha os builds anteriores e os arquivos do pacote fornecidos. Esta VM de treinamento é temporária; mantenha sua cópia baixada ao terminar o laboratório.
Resumo
Você observou um pacote real desaparecer de um workspace temporário e depois reteve o ZIP completo com o arquivamento e o registro de fingerprints do Jenkins. Você manteve a limpeza, baixou o artefato original do build e usou suas páginas, imagem, dados do percurso e notas para visitantes como um único pacote autossuficiente para visitantes.



