Skip to main content

Carregando dados de armazenamento e implantação no linked artifacts page

Associar pacotes e compilações em sua organização com dados de armazenamento e implantação.

Quem pode usar esse recurso?

Anyone with write access to an organization-owned repository

Organization accounts on any plan

O linked artifacts page inclui registros de armazenamento e de implantação para artefatos que você cria em sua organização. Os metadados para cada artefato são fornecidos pela sua organização usando um dos seguintes métodos:

  • Um fluxo de trabalho que contém uma das ações de GitHub para atestados de artefato
  • Uma integração com dynatrace, JFrog Artifactory ou Microsoft Defender for Cloud
  • Um script personalizado usando a API REST de metadados do artefato

Os métodos disponíveis dependem se você está carregando um registro de armazenamento ou um registro de implantação. Para obter mais informações sobre tipos de registro, consulte Sobre artefatos vinculados.

Carregando um registro de armazenamento

Você pode carregar um registro de armazenamento criando um atestado de artefato ou habilitando uma integração com o JFrog Artifactory. Se você não quiser usar essas opções, deverá configurar uma integração personalizada com a API REST.

Ateste com GitHub Actions

Você pode carregar um registro de armazenamento para um artefato usando ações de primeiro nível de GitHub para atestados de artefato. Você pode fazer isso no mesmo fluxo de trabalho usado para criar o artefato. Essas ações criam garantias de integridade e procedência assinadas para o software que você cria, bem como o carregamento automático de um registro de armazenamento no linked artifacts page.

A ação attest automaticamente cria registros de armazenamento no linked artifacts page se ambos os requisitos forem satisfeitos.

  • A push-to-registry opção está definida como true
  • O fluxo de trabalho que inclui a ação tem a artifact-metadata: write permissão

Para obter mais informações sobre como usar essas ações, consulte Usar atestados de artefatos para estabelecer a procedência de compilações.

Se o artefato não exigir atestado ou se você quiser carregar registros de implantação ou metadados de armazenamento adicionais, consulte as seções a seguir.

Usando a integração JFrog

Essa integração bidirecional mantém automaticamente seus registros GitHub de armazenamento atualizados com o artefato no JFrog. Por exemplo, os atestados que você cria em GitHub são carregados automaticamente para o JFrog, e promover um artefato para produção no JFrog adiciona automaticamente o contexto de produção ao registro em GitHub.

Para obter instruções de instalação, consulte Get Started with JFrog Artifactory and GitHub Integration in the JFrog documentation.

Usando a API REST

Para artefatos que não precisam ser atestados e não são armazenados no JFrog, você pode criar uma integração personalizada usando o endpoint da API Create artifact metadata storage record. Você deve configurar seu sistema para acionar o endpoint sempre que um artefato for publicado no seu repositório de pacotes escolhido.

Observação

Se o artefato não estiver associado a um atestado de procedência em GitHub, o parâmetro github_repository será obrigatório.

Carregando um registro de implantação

Se você monitorar as cargas de trabalho implantadas com Dynatrace ou Microsoft Defender for Cloud (MDC), você pode usar uma integração para sincronizar automaticamente os dados de implantação para o linked artifacts page. Caso contrário, você deve configurar uma integração personalizada com a API REST.

Usando a integração do Dynatrace

Você pode configurar o Dynatrace para enviar registros de implantação para GitHub de imagens de contêiner em execução em seus ambientes do Kubernetes, monitorados pelo Dynatrace. O Dynatrace mapeia imagens implantadas em seus repositórios e, em seguida, relata o contexto de runtime.

Além disso, os registros de implantação do Dynatrace podem incluir o contexto de risco em tempo de execução, como:

  • Exposição pública à Internet
  • Acesso a dados confidenciais

Você pode usar esse contexto na filtragem de alertas no nível da organização e em campanhas de segurança para priorizar a correção de alertas que afetam cargas de trabalho de dados confidenciais ou expostas à Internet.

Para obter instruções de instalação, consulte GitHub Advanced Security a integração de segurança – Introdução à documentação do Dynatrace.

Usando a integração Microsoft Defender para Nuvem

Você pode conectar sua MDC instância à sua GitHub organização. MDC enviará automaticamente dados de implantação e runtime para GitHub.

Para obter instruções de configuração, consulte Início Rápido: Conectar seu GitHub Ambiente Microsoft Defender for Cloud na documentação para MDC.

Observação

A integração com Microsoft Defender for Cloud está em versão prévia pública e sujeita a alterações.

Usando a API REST

O ponto de extremidade da API Criar um registro de implantação de artefato permite que os sistemas enviem dados de implantação de um artefato específico para GitHub, como seu nome, digest, ambientes, cluster e implantação. Você deverá chamar esse ponto de extremidade sempre que um artefato for implantado em um novo ambiente de homologação ou produção.

Observação

Se o artefato não estiver associado a um atestado de procedência em GitHub, o parâmetro github_repository será obrigatório.

Verificando um upload

Para verificar se um registro foi carregado com êxito, você pode exibir o artefato atualizado nas configurações da sua organização. Confira Auditoria dos builds da sua organização no linked artifacts page.

Removendo registros indesejados

Não é possível excluir um artefato do linked artifacts page. No entanto, você pode atualizar um registro de armazenamento ou registro de implantação para refletir o status de um artefato. Confira Removendo artefatos do linked artifacts page.

          GitHub Actions Exemplos

Você pode carregar dados no linked artifacts page no mesmo fluxo de trabalho que você usa para criar e publicar um artefato.

Gerando um atestado

No exemplo a seguir, compilamos e publicamos uma imagem do Docker e, em seguida, usamos a ${{ steps.push.outputs.digest }} saída na próxima etapa para gerar um atestado de procedência.

A ação attest carrega automaticamente um registro de armazenamento no linked artifacts page quando push-to-registry: true está definido e o fluxo de trabalho inclui a permissão artifact-metadata: write.


env:
  IMAGE_NAME: my-container-image
  ACR_ENDPOINT: my-registry.azurecr.io

jobs:
  generate-build:
    name: Build and publish Docker image
    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: read
      attestations: write
      packages: write
      artifact-metadata: write

    steps:
      - name: Build and push Docker image
        id: push
        uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83
        with:
          context: .
          push: true
          tags: |
            ${{ env.ACR_ENDPOINT }}/${{ env.IMAGE_NAME }}:latest
            ${{ env.ACR_ENDPOINT }}/${{ env.IMAGE_NAME }}:${{ github.sha }}

      - name: Generate artifact attestation
        uses: actions/attest@v4
        with:
          subject-name: ${{ env.ACR_ENDPOINT }}/${{ env.IMAGE_NAME }}
          subject-digest: ${{ steps.push.outputs.digest }}
          push-to-registry: true

Usando a API REST

Como alternativa, se você não estiver gerando um atestado, poderá chamar diretamente a API de metadados do artefato.


env:
  IMAGE_NAME: my-container-image
  IMAGE_VERSION: 1.1.2
  ACR_ENDPOINT: my-registry.azurecr.io

jobs:
  generate-build:
    name: Build and publish Docker image
    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: read
      packages: write
      artifact-metadata: write

    steps:
      - name: Build and push Docker image
        id: push
        uses: docker/build-push-action@263435318d21b8e681c14492fe198d362a7d2c83
        with:
          context: .
          push: true
          tags: |
              ${{ env.ACR_ENDPOINT }}/${{ env.IMAGE_NAME }}:latest
              ${{ env.ACR_ENDPOINT }}/${{ env.IMAGE_NAME }}:${{ github.sha }}

      - name: Create artifact metadata storage record
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          jq -n --arg artifactName "${{ env.IMAGE_NAME }}" --arg artifactVersion "${{ env.IMAGE_VERSION }}" --arg artifactDigest "${{ steps.push.outputs.digest }}" '{"name": $artifactName, "digest": $artifactDigest, "version": $artifactVersion, "registry_url": "https://azurecr.io", "repository": "my-repository"}' > create-record.json

          gh api -X POST orgs/${{ github.repository_owner }}/artifacts/metadata/storage-record --input create-record.json
        shell: bash

Próximas etapas

Depois de carregar dados, as equipes em sua organização podem usar o contexto dos dados de armazenamento e implantação para priorizar alertas de segurança. Confira Priorizando alertas do Dependabot e de verificação de código no contexto de produção.