Após conseguir o endereço de e-mail da conta de serviço de computação do projeto que executa o builder de imagens do Jenkins, acesse a seção Permissões de cada projeto com um Cloud Repository em que você quer criar imagens, selecione Adicionar membro e conceda a permissão Visualizar, como na imagem a seguir.
Agora, o líder do Jenkins executado no projeto do builder de imagens consegue verificar e receber as alterações do Cloud Repository desses projetos, além de criar novas imagens quando o commit das alterações é feito.
As imagens do Compute Engine e do Docker geradas no criador de imagens são armazenadas no mesmo projeto dele. Elas serão usadas por aplicativos de outros projetos para iniciar as instâncias do Compute Engine e os contêineres do Docker. Cada projeto de aplicativo precisa ter a permissão Pode visualizar para acessar o projeto do criador de imagens. Siga o processo definido na seção anterior, mas, desta vez, localize a conta de serviço de computação de cada projeto de aplicativo e adicione-a como um membro com a permissão Visualizar no projeto do builder, como mostrado no diagrama a seguir.
O líder do Jenkins inclui um job predefinido para o backup periódico da configuração e do histórico de jobs no Google Cloud Storage. Por padrão, ele é executado periodicamente, a cada duas horas, todos os dias da semana, como mostrado na imagem a seguir.
Na etapa de criação do job, um script de shell é executado. Ele armazena secrets, usuários, jobs e histórico em um tarball. Há duas cópias do arquivo criado: uma é nomeada com um carimbo de data e a outra recebe o nome de LATEST, o que torna simples e automática a restauração do backup mais recente. Nessa etapa, adicione ou remova itens do backup, como mostrado na imagem a seguir.
Uma ação de pós-construção usa o plug-in do Cloud Storage e a credencial de metadados do Google que foi criada para interagir com as APIs do Google e enviar o arquivo de backup para o Cloud Storage. Ela faz o upload do registro de data e dos arquivos MAIS RECENTES. Na imagem a seguir, veja a definição da etapa.
Da mesma forma que as variáveis de ambiente são usadas para ativar o SSL ou autenticação básica no proxy reverso Nginx em uma seção anterior, é possível usar uma variável de ambiente para configurar o controlador de replicação Jenkins para que restaure um backup quando o serviço for iniciado. O seguinte código é um snippet dessa definição:
Na imagem Docker do líder do Jenkins, a existência da variável de ambiente GCS_RESTORE_URL é verificada na inicialização. Se ela é encontrada, o valor é pressuposto como URL do backup, incluindo o esquema gs://, e a ferramenta de linha de comando gsutil instalada na imagem do líder é usada no script para fazer o download e restaurar o backup com segurança.
O processo de restauração só acontece quando um contêiner é iniciado. Para restaurar um backup depois de iniciar um líder do Jenkins, redimensione o controlador de replicação para 0, atualize a definição do controlador, de modo que ele aponte para o URL do backup, e defina o tamanho de volta para 1. Isso é descrito no tutorial.