en English
X

Select Language

Powered by Google TranslateTranslate

We hope you will find the Google translation service helpful, but we don’t promise that Google’s translation will be accurate or complete. You should not rely on Google’s translation. English is the official language of our site.

en English
X

Select Language

Powered by Google TranslateTranslate

We hope you will find the Google translation service helpful, but we don’t promise that Google’s translation will be accurate or complete. You should not rely on Google’s translation. English is the official language of our site.

Integração do Cloud Code Signing com Jenkins CI

Este é um guia sobre como fazer assinatura de código automatizada no Jenkins com o uso do eSigner CodeSignTool.

CodeSignTool é um utilitário de linha de comando adequado para assinaturas de alto volume e integra-se perfeitamente a várias plataformas de CI/CD. Ele faz parte do eSigner: nosso serviço de assinatura remota que oferece uma abordagem eficiente, segura e fácil de usar para assinatura de código empresarial.

SSL.com's EV Assinatura de código certificados ajudam a proteger seu código contra adulteração e comprometimento não autorizados com o mais alto nível de validação e estão disponíveis por apenas $ 249 por ano. Você também pode use seu certificado de assinatura de código EV em escala na nuvem usando eSigner.

PEÇA AGORA

Crie um arquivo Jenkins e defina o pipeline em seu editor de código

pipeline { agent any options { buildDiscarder(logRotator(numToKeepStr: "5")) disableConcurrentBuilds() }

Defina a ferramenta .NET em seu editor de código configurando Jenkins

Clique na Gerenciar Jenkins guia no painel do Jenkins.

Role a página e clique em Global Tool Configuration.

Role para baixo e clique Instalações do SDK do .NET.

Copie o valor para .NET SDK e cole-o em seu editor de código.

ferramentas { dotnetsdk "DOTNET_CORE_3.1.24" }

Acesse plugins.jenkins.io e instale o plugin .NET SDK

Debaixo Gerenciar Jenkins no seu Painel, verifique Gerenciar Plugins para confirmar se o plugin .NET SDK foi instalado.

Depois de confirmar que o plug-in foi instalado, volte para INSTALAÇÕES DO .NET SDK e certifique-se de que a versão correta e os detalhes de lançamento do plug-in do .NET SDK estejam definidos. Prossiga para clicar no Salvar botão.

Defina as variáveis ​​de ambiente em seu editor de código

ambiente { USERNAME = credenciais('es-username') // nome de usuário da conta SSL.com. PASSWORD = credenciais('es-password') // Senha da conta SSL.com. CREDENTIAL_ID = credenciais('es-credential-id') // ID da credencial para assinatura do certificado. TOTP_SECRET = credenciais('es-totp-secret') // OAuth TOTP Secret (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com Nome do Ambiente. Para Conta Demo pode ser 'TEST' caso contrário será 'PROD' }

Você encontrará os valores para cada variável em seu painel Jenkins em Segurança> Gerir Credenciais.

Defina os estágios para criar o diretório de artefatos, extrair a imagem do docker, construir o .NET e assinar o código do artefato

 

        1) Crie o diretório de artefatos para armazenar arquivos de artefatos assinados e não assinados.
 stage('Criar diretório de artefatos') { steps { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } }
        2) Puxe a imagem do Docker do Codesigner do Github Registry.
stage('Docker Pull Image') { steps { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } }
        3) Construa um projeto ou solução dotnet e todas as suas dependências. Após a criação do arquivo dll ou exe, copie para a pasta 'packages' para assinatura.
stage('Build Dotnet') { steps { sh 'dotnet build dotnet/HelloWorld.csproj -c Release' sh 'cp dotnet/bin/Release/netcoreapp3.1/HelloWorld-0.0.1.dll ${WORKSPACE}/packages/ HelloWorld.dll' } }
        4) Esta é a etapa onde os arquivos DLL (artefato) criados serão assinados com o CodeSignTool.
stage('Assine e salve Dotnet Core DLL Artifact') { steps { sh 'docker run -i --rm --dns 8.8.8.8 --network host --volume ${WORKSPACE}/packages:/codesign/examples -- volume ${WORKSPACE}/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 sign -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } post { always { archiveArtifacts artefatos: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }
 

Criar um repositório do Github

Copie cada um dos componentes do comando push no Github.

Escreva os comandos em um novo terminal em seu editor de código para enviar o código.

Depois de enviar o código, acesse sua conta do Github e copie o link da URL do seu projeto.

Vá para sua conta Jenkins e clique no botão Crie um emprego link.

Escolha Pipeline Multiramal, defina o nome do seu projeto e clique no botão OK botão.

Debaixo Fontes de filiais, Selecione Git e cole o link da URL do seu projeto Github.

Role para baixo até Analisar gatilhos de pipeline de várias ramificações. Marque a caixa para Periodicamente, se não for executado de outra forma. Você pode selecionar 2 minutos.

Clique na Salvar botão.

Volte para sua conta Jenkins, clique no seu projeto e confirme se o pipeline foi iniciado

Clique no seu projeto Jenkins e selecione Digitalizar pipeline multiramal agora no painel.

Clique Saída do console

Role para baixo e verifique se a assinatura do código foi bem-sucedida

Script completo

Observação: certifique-se de corrigir erros tipográficos ou quebras de linha incorretas no script para que o processo de assinatura seja executado sem problemas.

Defina o pipeline

pipeline { agent any options { buildDiscarder(logRotator(numToKeepStr: "5")) disableConcurrentBuilds() }

Instalar ferramentas de compilação

ferramentas { dotnetsdk "DOTNET_CORE_3.1.24" //https://plugins.jenkins.io/dotnet-sdk }

Crie uma variável de ambiente

ambiente { USERNAME = credenciais('es-username') // nome de usuário da conta SSL.com. PASSWORD = credenciais('es-password') // Senha da conta SSL.com. CREDENTIAL_ID = credenciais('es-credential-id') // ID da credencial para assinatura do certificado. TOTP_SECRET = credenciais('es-totp-secret') // OAuth TOTP Secret (https://www.ssl.com/how-to/automate-esigner-ev-code-signing) ENVIRONMENT_NAME = 'PROD' // SSL .com Nome do Ambiente. Para Conta Demo pode ser 'TEST' caso contrário será 'PROD' }

Script para as etapas de construção e assinatura

stage { // 1) Criar diretório de artefatos para armazenar arquivos de artefatos assinados e não assinados stage('Criar diretório de artefatos') { steps { sh 'mkdir ${WORKSPACE}/artifacts' sh 'mkdir ${WORKSPACE}/packages' } } / / 2) Puxe a imagem do Docker do Codesigner do Github Registry stage('Docker Pull Image') { steps { sh 'docker pull ghcr.io/sslcom/codesigner:latest' } } // 3) Crie um projeto ou solução dotnet e todos suas dependências. // Depois de criado o arquivo dll ou exe, copie para a pasta 'packages' para assinatura stage('Build Dotnet') { steps { sh 'dotnet build dotnet/HelloWorld.csproj -c Release' sh 'cp dotnet/bin/ Release/netcoreapp3.1/HelloWorld-0.0.1.dll ${WORKSPACE}/packages/HelloWorld.dll' } } // 4) Esta é a etapa onde os arquivos DLL (artefato) criados serão assinados com CodeSignTool. stage('Assine e salve Dotnet Core DLL Artifact') { steps { sh 'docker run -i --rm --dns 8.8.8.8 --network host --volume ${WORKSPACE}/packages:/codesign/examples -- volume ${WORKSPACE}/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 sign -input_file_path=/codesign/examples/HelloWorld.dll -output_dir_path=/codesign/output' } post { always { archiveArtifacts artefatos: "artifacts/HelloWorld.dll", onlyIfSuccessful: true } } } } }

Amostra de Pipeline Jenkins

Confira o exemplo de pipeline do Jenkins que criamos em github.com/SSLcom/codesigner-jenkins-sample

Outros guias de integração de assinatura remota

Para obter informações sobre uma assinatura eSigner e certificados de assinatura de código, incluindo soluções personalizadas e de alto volume, entre em contato com  Ou preencha o formulário abaixo.  

Inscreva-se no boletim informativo de SSL.com

Não perca novos artigos e atualizações de SSL.com