variáveis ambientais
- NOME DE USUÁRIO: nome de usuário da conta SSL.com. (Requeridos)
- SENHA: Senha da conta SSL.com (obrigatório)
- CREDENTIAL_ID: ID da credencial para assinatura do certificado. Se credential_id for omitido e o usuário tiver apenas um certificado de assinatura de código eSigner, o CodeSignTool usará como padrão. Se o usuário tiver mais de um certificado de assinatura de código, esse parâmetro é obrigatório. (Requeridos)
- TOTP_SECRET: OAuth TOTP Secret. Você pode acessar informações detalhadas sobre https://www.ssl.com/how-to/automate-esigner-ev-code-signing (Obrigatório)
- AMBIENTE_NAME : Ambiente 'TEST' ou 'PROD'. (Requeridos)
entradas
- caminho_do_arquivo_de_entrada: Caminho do objeto de código a ser assinado. (Requeridos)
- saída_dir_caminho: Diretório onde o(s) objeto(s) de código assinado(s) será(ão) escrito(s). Se output_path for omitido, o arquivo especificado em -file_path será substituído pelo arquivo assinado.
Fluxo de trabalho de exemplo de assinatura de DLL de código .NET
Criar um arquivo yml
Agrupe os trabalhos em etapas. Todos os trabalhos em um estágio devem ser concluídos antes que o próximo estágio seja executado.
etapas: - construir - assinar
Defina variáveis de ambiente globalmente. A propriedade de nível de trabalho substitui as variáveis globais.
- As variáveis de ambiente são usadas para tornar as amostras mais legíveis. Na captura de tela acima do fluxo de trabalho de exemplo, PROJECT_NAME, PROJECT_VERSION e DOTNET_VERSION foram opcionalmente omitidos. A assinatura ainda pode prosseguir com essas omissões.
- Em ENVIRONMENT_NAME, coloque "TEST" para assinatura de teste e "PROD" para assinatura ao vivo.
variáveis: PROJECT_NAME: "HelloWorld" PROJECT_VERSION: "0.0.1" DOTNET_VERSION: "3.1" ENVIRONMENT_NAME: "PROD"
Definir o Estágio de construção
Abaixo está a definição do seu trabalho para construir o artefato dll
construir-dotnet:
- Defina em qual estágio o trabalho será executado.
fase: construir
- Coloque o nome completo da imagem que deve ser utilizada. Ele deve conter a parte do Registro, se necessário.
imagem: mcr.microsoft.com/dotnet/sdk:3.1-bullseye
- Defina os scripts que devem ser executados *antes* do trabalho. Pode ser definido globalmente ou por trabalho.
before_script: - mkdir -p ${CI_PROJECT_DIR}/artifacts - mkdir -p ${CI_PROJECT_DIR}/packages
- Defina os scripts do Shell executados pelo Executor. Construir artefato de DLL
script: - dotnet build dotnet/${PROJECT_NAME}.csproj -c Release - cp dotnet/bin/Release/netcoreapp${DOTNET_VERSION}/${PROJECT_NAME}-${PROJECT_VERSION}.dll ${CI_PROJECT_DIR}/packages/${ PROJECT_NAME}.dll
- Especifique uma lista de arquivos e diretórios que devem ser anexados ao trabalho se for bem-sucedido.
- A 'expirar_in' permite que o arquivo seja excluído após um determinado período de tempo. Seu uso é opcional. É por isso que a captura de tela do fluxo de trabalho de exemplo acima não mostra essa propriedade.
artefatos: caminhos: - ${CI_PROJECT_DIR}/packages/HelloWorld.dll expire_in: 5 minutos
Defina o estágio de sinalização
Abaixo está a definição do seu trabalho para assinar o artefato dll
Sign-dotnet-artefacts:
- Defina em qual estágio o trabalho será executado.
estágio: sinal
- Coloque o nome completo da imagem que deve ser utilizada. Ele deve conter a parte do Registro, se necessário.
imagem: janela de encaixe:19.03.0
- Defina serviços. Isso é semelhante à propriedade `image`, mas vinculará os serviços especificados ao contêiner `image`.
serviços: - janela de encaixe:19.03.0-dind
- Defina variáveis de ambiente para trabalhos específicos.
- Na captura de tela acima, o comando sign foi definido diretamente no script sign e não nas variáveis de ambiente. Boutros métodos podem assinar corretamente com o TravisCI.
variáveis: COMANDO: "sinal"
- Defina os scripts que devem ser executados *antes* do trabalho. Pode ser definido globalmente ou por trabalho.
before_script: - mkdir -p ${CI_PROJECT_DIR}/artifacts - mkdir -p ${CI_PROJECT_DIR}/packages
- Coloque scripts Shell executados pelo Runner. Assine o artefato .NET dll com CodeSignTool Docker Image
script: - docker pull ghcr.io/sslcom/codesigner:latest - docker run -i --rm --dns 8.8.8.8 --network host --volume ${CI_PROJECT_DIR}/packages:/codesign/examples --volume $ {CI_PROJECT_DIR}/artifacts:/codesign/output -e USERNAME=${USERNAME} -e PASSWORD=${PASSWORD} -e CREDENTIAL_ID=${CREDENTIAL_ID} -e TOTP_SECRET=${TOTP_SECRET} -e ENVIRONMENT_NAME=${ENVIRONMENT_NAME} ghcr.io/sslcom/codesigner:latest ${COMMAND} -input_file_path=/codesign/examples/${PROJECT_NAME}.dll -output_dir_path=/codesign/output
- Escreva o script que pode ser usado para especificar uma lista de arquivos e diretórios que devem ser anexados ao trabalho se for bem-sucedido.
artefatos: caminhos: - ${CI_PROJECT_DIR}/artifacts/${PROJECT_NAME}.dll expire_in: 1 dias
- Especifique uma lista de nomes de tarefas de estágios anteriores dos quais os artefatos devem ser carregados.
dependências: - build-dotnet
Iniciar o estágio de construção
Crie um repositório
Consulte as instruções da linha de comando no Gitlab, conforme mostrado na captura de tela abaixo
Empurre sua pasta
Faça isso clicando terminal no menu, seguido de Novo Terminal.
Digite o script push no seu Terminal para enviar o projeto
Clique no botão Construir
Depois de acionar o pipeline, prossiga para construir
Verifique se a compilação foi bem-sucedida
Inicie o Estágio de Sinalização
Prossiga para assinar o artefato
Confirme se a assinatura do código foi bem-sucedida
Agora você pode baixar o arquivo assinado
Exemplo de pipeline de CI do Gitlab
Confira o exemplo de pipeline Gitlab CI que criamos em github.com/SSLcom/codesigner-gitlabci-sampleOutros guias de integração de assinatura remota de CI/CD
- Integração de assinatura de código em nuvem com CircleCI
- Integração do Cloud Code Signing com ações do GitHub
- Integração do Cloud Code Signing com Jenkins CI
- Integração do Cloud Code Signing com o Travis CI
- Integração de assinatura de código em nuvem com Azure DevOps
- Integração de assinatura de código de nuvem com BitBucket
- Automação de assinatura de código em nuvem com serviços de CI/CD
Precisa de soluções personalizadas?
Com nosso conhecimento especializado e equipe de suporte cinco estrelas, estamos prontos e dispostos a trabalhar com você em soluções personalizadas ou descontos em assinaturas de alto volume de nível empresarial. Preencha o formulário abaixo e entraremos em contato.