Escolha o agente de fotos

JenkinsBeginner
Pratique Agora

Introdução

Fieldlight Studio tem três fotografias de jardim para compartilhar. Os originais estão prontos, mas arquivos originais grandes são inconvenientes para uma revisão rápida. Você usará uma ferramenta de imagens preparada para criar pequenas prévias e uma folha de contato: uma imagem que mostra toda a coleção de uma só vez.

A ferramenta está instalada em um agente conectado do Jenkins. Sua primeira tarefa é escolher o agente que realmente consegue fazer o trabalho. Depois, você atenderá a um requisito de entrega menor, reterá ambas as versões bem-sucedidas e manterá as fotografias originais seguras.

Os pré-requisitos são navegação nas páginas do Jenkins e capacidade de reconhecer um Declarative Pipeline curto. Não é necessário programar em Java, conhecer comandos de edição de fotos, administrar Docker nem instalar agentes. Os programas fornecidos e as conexões dos agentes estão preparados. Os dois agentes são contêineres separados em uma VM de treinamento: seus sistemas de arquivos são independentes, mas compartilham o kernel dela. Isso não é uma frota na nuvem. Fieldlight é fictício, e as fotografias são materiais de estudo gerados por IA. A duração é uma estimativa do autor, e não um tempo medido com iniciantes.

Associe o trabalho ao agente adequado

Nesta etapa, você examinará os originais, observará uma falha esperada de ferramenta ausente e agendará o trabalho no agente capaz de processar imagens. Comece em Photo Desk.

A coleção Garden Stories mostra lavanda, um caminho de jardim e um regador. Abra cada fotografia, examine seu original completo e use a ação Back do navegador para voltar ao painel. Selecione Download original para a fotografia de lavanda e guarde-a para comparação. Os originais têm 1536 pixels de largura e devem permanecer inalterados. O painel inicialmente diz No completed collection yet.

Mude para Jenkins. O controlador do Jenkins mantém a configuração dos jobs e coordena os builds. Um agente é um processo conectado que executa o trabalho dos builds. Um nó é sua entrada configurada no Jenkins. Um executor é uma vaga de trabalho disponível nesse nó. Aqui, cada agente tem um executor, portanto pode executar um bloco de trabalho alocado por vez.

No painel inicial, selecione Manage Jenkins e depois Nodes. Examine image-studio e pack-studio, um de cada vez. Ambos estão conectados. Seus rótulos de capacidade são photo-imaging e photo-packing; ambos também têm linux. Um rótulo é uma condição de agendamento, e não um instalador de software. A ferramenta de imagens existe apenas em image-studio; a ferramenta de empacotamento existe apenas em pack-studio. Esses são processos de agentes e contêineres realmente separados.

Volte ao painel inicial usando o logotipo Jenkins no canto superior esquerdo e abra preview-photos. Selecione Configure e depois a seção Pipeline. O editor Script contém o job preparado. Leia sua estrutura antes de alterar qualquer coisa:

  • agent none no topo significa que o Pipeline inteiro não reserva um agente. O estágio escolhe seu próprio agente.
  • stage('Prepare photos') dá nome ao trabalho. Seu agent { label 'photo-packing' } atualmente solicita a capacidade de empacotamento.
  • steps contém operações. sh executa o comando entre aspas no shell do agente selecionado. O programa /opt/fieldlight/prepare-photos fornecido cria prévias; --width 480 solicita uma largura de 480 pixels e preserva a proporção original. As aspas simples mantêm esse comando como uma única string do Groovy.
  • deleteDir() limpa o workspace alocado deste job, o diretório temporário onde ficam seus arquivos de build. A primeira chamada começa com o local limpo. Na seção post, a chamada always limpa o workspace após o estágio, inclusive após uma falha. Ela não remove os originais em /opt/fieldlight/originals.
  • archiveArtifacts retém os arquivos correspondentes no Jenkins antes da limpeza. Em prepared/**, ** inclui arquivos em diretórios aninhados. fingerprint: true registra suas identidades de arquivo para rastreabilidade; isso não é uma aprovação do cliente nem uma assinatura.

Volte à página do job sem editar o script. Selecione Build Now uma vez. Abra o novo build numerado em Build History e selecione Console Output. Aguarde o término. Essa primeira falha é esperada: o console identifica pack-studio, depois informa que /opt/fieldlight/prepare-photos foi not found e termina com FAILURE. O agente solicitado está conectado, mas não tem a ferramenta dessa função. Isso é diferente de esperar indefinidamente por um agente desconectado ou que não corresponda ao rótulo.

Volte a preview-photos, selecione Configure e abra Pipeline novamente. Altere apenas o rótulo do estágio de photo-packing para photo-imaging. Para usar uma versão completa que você possa copiar, clique dentro de Script, selecione tudo com Ctrl+A no Windows/Linux ou Command+A no macOS e substitua o conteúdo por:

pipeline {
    agent none
    stages {
        stage('Prepare photos') {
            agent { label 'photo-imaging' }
            steps {
                deleteDir()
                sh '/opt/fieldlight/prepare-photos --width 480'
                archiveArtifacts artifacts: 'prepared/**', fingerprint: true
            }
            post {
                always { deleteDir() }
            }
        }
    }
}

Mantenha o comando da ferramenta, os originais, o arquivamento e ambas as chamadas de limpeza. Selecione Save e depois Build Now. Abra Console Output do novo build e aguarde Finished: SUCCESS. Ele deve mencionar image-studio, informar 3 previews at 480 pixels wide e depois mostrar Archiving artifacts, Recording fingerprints e o deleteDir final. Isso é evidência de trabalho real no agente capaz, e não apenas uma mensagem renomeada.

Se você vir um erro de sintaxe do Groovy, volte a Configure, restaure o script completo acima, salve e execute um novo build. Se um rótulo digitado incorretamente deixar um build na fila, cancele esse item com seu ícone de cancelamento, selecione Yes na caixa de confirmação do Jenkins, corrija o rótulo e execute o build novamente. Um erro de digitação no comando aparece no console como um comando ausente; restaure o caminho fornecido em vez de instalar outra ferramenta. Mantenha o build original com falha e todo o histórico posterior. Erros comuns podem ser corrigidos com outro script salvo e outro build; não reinicialize a VM.

Mude para Photo Desk e atualize a página. Selecione Open prepared collection. As três pequenas prévias devem mostrar os mesmos temas de jardim dos originais. Selecione Open contact sheet para ver as três juntas; use Back do navegador para voltar. Abra Caption table e Image details, voltando com Back após cada um. captions.csv é uma tabela de valores separados por vírgulas em texto simples: a primeira linha contém os nomes das colunas, e cada linha seguinte descreve uma imagem. Ela relaciona cada legenda ao seu arquivo em images/ e registra a largura 480 e a altura 320; preparation.json identifica garden e a largura 480.

Volte a Jenkins e abra a página do build bem-sucedido. Em Build Artifacts, os links de nomes de arquivos PNG individuais abrem as imagens no navegador. Para um download completo, selecione o título Build Artifacts e depois (all files in zip) na página de navegação de arquivos. Salve archive.zip em uma pasta para sua versão de 480 pixels e extraia todo o ZIP ali. Seus seis arquivos ficam em archive/prepared/, incluindo o subdiretório images/. Abra archive/prepared/images/garden-01.png e archive/prepared/contact-sheet.png no navegador ou visualizador de imagens e leia archive/prepared/captions.csv em um editor de texto. Seu conteúdo visível deve corresponder à coleção. A prévia de lavanda tem 480 × 320 pixels, enquanto o original baixado continua com 1536 × 1024. Guarde o número desse build bem-sucedido e a pasta extraída completa para a próxima etapa. Esses arquivos retidos continuam disponíveis após a limpeza do workspace.

As prévias preparadas do jardim em Photo Desk

A coleção preparada mostra os mesmos temas de lavanda, caminho de jardim e regador dos originais. Use a folha de contato e os links de arquivos para examinar a saída real retida.

Entregue um conjunto menor de prévias

Nesta etapa, você atenderá a uma solicitação de entrega de 320 pixels e reterá o conjunto anterior de 480 pixels para comparação. Comece em Photo Desk e volte aos originais com Back to originals. Confirme que os três originais completos continuam disponíveis.

O cliente agora precisa de prévias com exatamente 320 pixels de largura. O programa fornecido aceita esse requisito por meio de sua opção --width existente; você não edita nem substitui o programa de imagens. Mude para Jenkins, volte a preview-photos e selecione Configure → Pipeline. Altere --width 480 para --width 320 no comando sh. O script completo agora deve ser:

pipeline {
    agent none
    stages {
        stage('Prepare photos') {
            agent { label 'photo-imaging' }
            steps {
                deleteDir()
                sh '/opt/fieldlight/prepare-photos --width 320'
                archiveArtifacts artifacts: 'prepared/**', fingerprint: true
            }
            post {
                always { deleteDir() }
            }
        }
    }
}

Selecione Save e depois Build Now. Aguarde o novo build terminar com SUCCESS. Em Console Output, confirme que image-studio executou o trabalho, que o programa informou 320 pixels wide e que o arquivamento e a limpeza foram executados. Se o console ainda disser 480, confira se você salvou o script alterado e abriu o novo build em vez do anterior.

Na página desse build, selecione Build Artifacts e depois (all files in zip). Salve e extraia completamente esse novo archive.zip para uma pasta diferente da sua versão de 480 pixels. Abra os arquivos em seu diretório archive/prepared/. Agora, as três imagens de prévia devem ter 320 × 213 pixels. A altura de 213 pixels é o resultado arredondado da preservação da proporção do original de 1536 × 1024. A folha de contato ainda contém os três temas na mesma ordem; ela é uma visão geral separada, e não um quarto original redimensionado. Em captions.csv, o nome do arquivo, a legenda e as dimensões de cada imagem devem corresponder. preparation.json deve identificar garden e a largura 320.

Mude para Photo Desk, atualize a página e selecione Open prepared collection. Examine as três novas prévias, a folha de contato e ambos os arquivos de metadados. Volte aos originais e confirme que seu conteúdo em tamanho completo está inalterado. Depois mude para Jenkins, abra o número do build bem-sucedido anterior que você anotou e baixe seu ZIP completo novamente por Build Artifacts → (all files in zip). Extraia-o para outra pasta nova: sua prévia de lavanda ainda deve ter 480 × 320 pixels. Criar uma nova versão não deve reescrever um arquivo compactado antigo.

Se um download tiver um tamanho ou tema inesperado, confira o número do build e a opção de largura salva, depois corrija o script e execute um novo build. Preserve as fotografias originais, as ferramentas fornecidas, os agentes conectados, os rótulos de capacidade e o histórico completo de builds. Não copie arquivos entre os sistemas de arquivos dos agentes, não remova a limpeza nem substitua o arquivo compactado por um de outra execução. Termine com o script salvo realmente executado com sucesso em um build. Você tem um conjunto menor utilizável, uma versão anterior intacta e originais inalterados.

Resumo

Você associou uma capacidade real de processamento de imagens ao rótulo de agente correspondente no Jenkins, interpretou uma falha esperada de ferramenta ausente e produziu prévias utilizáveis. A alteração da opção de largura criou uma entrega menor sem mudar os originais nem o arquivo compactado anterior. Os artefatos nativos continuaram disponíveis após a limpeza do workspace; o próximo laboratório independente usa dois workspaces separados e uma transferência temporária dentro da mesma execução.