Promoção e implementação de alterações no estoque
A implementação de referência do DevSecOps ajuda a aplicar a revisão de mudanças de código antes que elas sejam mescladas, promovidas e implementadas na produção. Consulte Melhores práticas para a conformidade de revisão de peer para saber mais sobre a revisão de peer para entregar software seguro e compatível
Promovendo entradas de inventário das ramificações de origem para as ramificações de destino
Para enviar alterações de código do branch de origem para o branch de destino (staging, prod) do seu repositório de inventário, siga estas etapas:
-
Os pipelines de integração contínua preenchem a ramificação de origem (principal) com entradas de inventário. Use o pipeline de promoção de implantação contínua para promover esse conteúdo do seu ramo de origem (master) para o ramo de destino (staging ou prod).
- A partir do painel cd-pipeline, clique em Run Pipeline.
- Selecione Acionador de promoção manual.
- Clique em ** Executar **. A execução do pipeline cria uma solicitação de mesclagem para promover as mudanças de código da ramificação de origem para a ramificação de destino.
acionador de promoção manual
-
Aprove e mescle a solicitação pull.
- Clique na execução do pipeline e verifique o log de execução do pipeline de promoção.
registro de execução de MR
- Localize a URL da solicitação de mesclagem e abra-a.
- Preencha os campos obrigatórios (Priority, Change Request assignee, Descrição Adicional e outros campos).
- Faça a fusão da solicitação de fusão (MR) para transferir suas alterações do ramo de origem para o ramo de destino.
Agora que suas alterações foram promovidas para o branch de destino, você pode implantá-las usando o pipeline de implantação contínua.
Usando o pipeline de validação de promoção
Depois que um PR de promoção é aberto, você pode, opcionalmente, executar a agregação de evidências e a geração de resumo no pipeline de validação de promoção e definir os status das evidências na solicitação de pull/merge (PR) da promoção. O PR pode ser criado pelo pipeline de promoção ou manualmente no repositório de inventário. Saiba mais sobre o pipeline de validação da promoção.
Implementando mudanças do ambiente de origem para o ambiente de destino
Os ambientes de origem e de destino são definidos no nível do pipeline de implantação contínua.
Dependendo das configurações de acionamento do seu pipeline de implantação contínua, o pipeline é acionado automaticamente após a incorporação de uma solicitação de mesclagem ou é acionado manualmente. Para mesclar o pipeline manualmente, clique em Executar pipeline e escolha o acionador a ser executado.
O pipeline é iniciado e identifica no repositório de inventário o commit atual com o ID de execução do pipeline. O pipeline utiliza essa tag para obter o conteúdo da ramificação de destino (produção) e calcula o delta de implementação entre
o commit atual e o conteúdo da última implementação bem-sucedida. O delta é marcado pela tag
, em que target-environment é o valor definido nas propriedades do seu pipeline de implantação contínua, como em prod_latest.
O pipeline tenta implementar o conteúdo. Durante a implementação, o ID da solicitação de mudança é anexado como uma tag ao commit com o qual o pipeline trabalha. Quando a etapa ou tarefa de implantação for concluída com sucesso, o pipeline é
finalizado com a atribuição da tag <target-environment>_latest ao commit que você promoveu.
Para obter mais informações sobre o fluxo de trabalho do inventário, consulte Entendendo os pipelines do DevSecOps.
Atualização do local da imagem no inventário
Depois que uma imagem for promovida para o registro de contêineres de destino, atualize a localização da imagem no inventário para que ela aponte para a imagem promovida.
Use o comando cocoa inventory update-locations para atualizar a localização do artefato no repositório de inventário.
cocoa inventory update-locations \
--name="${inventory_image_type}/inventory.json" \
--org="<org>" \
--repo="<repo-name>" \
--location="prod#${inventory_target_name}@${DIGEST}" \
--environment="master"
Por exemplo:
cocoa inventory update-locations \
--name="<inventory-entry-name>/inventory.json" \
--org="<org-name>" \
--repo="<repo-name>" \
--location="prod#icr.io/.../baseimage:4.x.y@sha256:..." \
--environment="master"
O parâmetro --location especifica o local da imagem de destino e seu resumo SHA-256. A localização tem o seguinte formato:
<environment>#<image>:<tag>@sha256:<digest>
Por exemplo:
prod#icr.io/<namespace>/<repository>/baseimage:4.x.y@sha256:<digest>
Promoção de imagem e sessão de autógrafos
A imagem deve ser copiada para o registro de destino e possuir uma assinatura válida para a referência da imagem de destino antes que o inventário seja atualizado.
Depois que a imagem for promovida e assinada, obtenha o resumo da imagem no registro de destino e utilize esse resumo com cocoa inventory update-locations. {: important} Execute o comando cocoa inventory update-locations após a imagem ter sido promovida e assinada. O inventário deve fazer referência à imagem no registro de destino e ao resumo da imagem correspondente.
Fluxo de trabalho de promoção
O fluxo de trabalho de lançamento é o seguinte:
- Promova a imagem do registro de origem para o registro de destino.
- Obter o hash da imagem promovida no registro de destino.
- Execute o comando
cocoa inventory update-locationscom o caminho da imagem de destino e o digest.
O comando cocoa inventory update-locations atualiza os metadados do inventário. Ele não copia nem assina a imagem do contêiner.