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:

  1. 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).

    1. A partir do painel cd-pipeline, clique em Run Pipeline.
    2. Selecione Acionador de promoção manual.
    3. 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

Acionador de promoção manual
' Acionador de promoção manual

  1. Aprove e mescle a solicitação pull.

    1. Clique na execução do pipeline e verifique o log de execução do pipeline de promoção.

registro de execução de MR

Registro de execução de MR
' Registro de execução de MR

  1. Localize a URL da solicitação de mesclagem e abra-a.
  2. Preencha os campos obrigatórios (Priority, Change Request assignee, Descrição Adicional e outros campos).
  3. 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.

propriedades do pipeline de implantação contínua
Propriedades 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 _latest , 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.

Git Repos and Issue Tracking tags de repositório tags de repositório
Git Repos and Issue Tracking

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:

  1. Promova a imagem do registro de origem para o registro de destino.
  2. Obter o hash da imagem promovida no registro de destino.
  3. Execute o comando cocoa inventory update-locations com 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.