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.
Preparar os componentes do fluxo de trabalho (Assinatura de DLL de código .NET)
- Crie uma pasta .circleci
Em seu espaço de trabalho de assinatura de código, crie um pasta .circleci. Abaixo dele, crie um arquivo config.yml.
- Definir a versão do CI
version: 2.1
- Invoque jobs por meio de fluxos de trabalho. Os fluxos de trabalho orquestram um conjunto de trabalhos a serem executados. Os trabalhos para este pipeline estão configurados abaixo
Vejo: https://circleci.com/docs/2.0/configuration-reference/#workflows
fluxos de trabalho:
- Escreva o nome do fluxo de trabalho.
ponto Net:
- Dentro do fluxo de trabalho, você define os trabalhos que deseja executar.
jobs: - construir - assinar: requer: - construir
Defina o estágio de construção
- Defina um trabalho a ser invocado posteriormente em um fluxo de trabalho.
(Consulte: https://circleci.com/docs/2.0/configuration-reference/#jobs)
empregos: construir:
- Crie uma variável de ambiente
- As variáveis de ambiente são usadas para tornar as amostras mais legíveis. Na captura de tela acima de um exemplo de fluxo de trabalho de assinatura, PROJECT_NAME, PROJECT_VERSION e DOTNET_VERSION foram opcionalmente omitidos. A assinatura ainda pode prosseguir mesmo com essas omissões.
ambiente: PROJECT_NAME: HelloWorld PROJECT_VERSION: 0.0.1 DOTNET_VERSION: 3.1 WORKSPACE: /home/circleci/project
- Defina um executor do Docker: (https://circleci.com/docs/2.0/executor-types/)
# Você pode especificar uma imagem do Dockerhub ou usar uma de nossas Imagens de Conveniência do Hub do Desenvolvedor do CircleCI.
janela de encaixe: - imagem: mcr.microsoft.com/dotnet/sdk:3.1-bullseye
- Coloque o diretório de trabalho para o trabalho
diretório_trabalho: /home/circleci/project
- Adicionar etapas ao trabalho
Consulte: https://circleci.com/docs/2.0/configuration-reference/#steps
passos:
- Confira o código-fonte para que o fluxo de trabalho possa acessá-lo.
- Confira
- Criar diretório de artefatos para armazenar arquivos de artefatos assinados e não assinados
- run: name: Comando Criar diretório de artefatos: | mkdir -p ${WORKSPACE}/artifacts mkdir -p ${WORKSPACE}/packages
- Crie um projeto ou solução dotnet e todas as suas dependências.
- run: name: Build Dotnet Project Comando: dotnet build dotnet/${PROJECT_NAME}.csproj -c Release
- Copiar artefato para o diretório de artefatos
- Neste fluxo de trabalho de exemplo de assinatura por escrito, vários tipos de projeto foram criados. É por isso que arquivos de diferentes tipos de projeto foram mantidos criando subpastas. Uma subpasta chamada 'dotnet' foi criada para projetos Dotnet. Na captura de tela de demonstração acima, não havia necessidade de criar uma subpasta chamada 'dotnet', então isso não foi incluído no script.
- run: name: Comando Copiar Artefatos: | cp dotnet/bin/Release/netcoreapp${DOTNET_VERSION}/${PROJECT_NAME}-${PROJECT_VERSION}.dll ${WORKSPACE}/packages/HelloWorld.dll
- Persista o artefato no diretório de artefatos para assinatura
- persist_to_workspace: root: . caminhos: - pacotes/*
Defina o estágio de assinatura
- Definir o trabalho de assinatura
placa:
- Crie uma variável de ambiente
- 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 CircleCI.
- 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, algumas variáveis opcionalmente não foram incluídas. A assinatura ainda pode prosseguir mesmo com essas omissões.
ambiente: ENVIRONMENT_NAME: PROD COMMAND: assinar WORKSPACE: /home/circleci/project
- Coloque o diretório de trabalho para o trabalho no Circle-CI
diretório_trabalho: /home/circleci/project
- Nome do artefato para assinatura
- O valor 'artifact-name' é uma opção para vários projetos O parâmetro 'artifact-name' foi adicionado para que a mesma parte de assinatura possa ser usada para todos os tipos de projeto. Como o exemplo na captura de tela é baseado em um único projeto, não foi necessário incluí-lo.
parâmetros: nome do artefato: tipo: string padrão: ''
- Defina um executor do docker:
Para referência adicional, consulte: https://circleci.com/docs/2.0/executor-types/
Você pode especificar uma imagem do Dockerhub ou usar uma de nossas imagens de conveniência do Developer Hub do CircleCI.
Certifique-se de atualizar a tag de imagem do Docker abaixo para a versão openjdk do seu aplicativo.
Uma lista de imagens de conveniência do CircleCI Docker disponíveis está disponível aqui: https://circleci.com/developer/images/image/cimg/openjdk
janela de encaixe: - imagem: cimg/openjdk:17.0.3
- Adicionar etapas ao trabalho
Para referência adicional, consulte: https://circleci.com/docs/2.0/configuration-reference/#steps
passos:
- Criar diretório de artefatos para armazenar arquivos de artefatos assinados e não assinados
- run: name: Comando Criar diretório de artefatos: | mkdir -p ${WORKSPACE}/artifacts mkdir -p ${WORKSPACE}/packages
- Anexe ao Workspace para acessar o arquivo de artefato
- attach_workspace: em: /home/circleci/project
- Habilitar o Docker para CodeSigner no Circle-CI
- setup_remote_docker: name: Setup Remote Docker version: 19.03.13 docker_layer_caching: true
- Extrair a imagem do Docker do Codesigner do Github Registry
- execute: nome: comando Docker Pull Image: | docker pull ghcr.io/sslcom/codesigner:mais recente docker pull alpine:3.4
- Escreva a etapa em que o artefato será assinado com o CodeSignTool.
- executar: nome: Assinar Arquivo de Artefato comando: | docker create -v /codesign/packages --name codesign-in alpine:3.4 /bin/true docker create -v /codesign/artifacts --name codesign-out alpine:3.4 /bin/true docker cp ${WORKSPACE}/packages /<< parameters.artifact-name >> codesign-in:/codesign/packages docker run -i --rm --dns 8.8.8.8 --network host --volumes-from codesign-in --volumes-from codesign- out -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/packages/<< parameters.artifact-name >> -output_dir_path=/codesign/artifacts docker cp codesign-out:/codesign/artifacts/<< parameters.artifact-name >> ${ WORKSPACE}/artifacts/<< parameters.artifact-name >>
- Escreva a etapa para que seu artefato seja carregado de seu fluxo de trabalho, permitindo que você compartilhe dados entre trabalhos e armazene dados assim que um fluxo de trabalho for concluído
- store_artifacts: name: Caminho de upload de arquivos assinados: /home/circleci/project/artifacts/<< parameters.artifact-name >> destino: << parameters.artifact-name >>
Crie um novo repositório na linha de comando
Copie os componentes do comando push do local do seu projeto em sua conta do GitHub
Inclua todos os componentes de comando push em seu editor
Configure um projeto no CircleCI usando o repositório integrado ao GitHub
Defina todas as variáveis de ambiente
Enquanto o projeto estiver em execução, clique no botão Configurações do projeto seguido por Variáveis de ambiente para definir as variáveis
Coloque os valores para cada variável
Clique na Adicionar variável de ambiente botão para adicionar os nomes e valores de todas as variáveis necessárias para o projeto.
Aguarde a construção do projeto
Clique em Persistindo na área de trabalho
Aguarde brevemente até que o arquivo do espaço de trabalho seja carregado com sucesso.
Clique no botão assinar
Aguarde a configuração do Remote Docker
Pode levar mais de um minuto, dependendo do tamanho do arquivo
Aguarde até que os artefatos sejam assinados
Clique Artefatos aba
Se você clicar Artefatos, você poderá ver o arquivo cujo código foi assinado com sucesso. Você também será notificado pelo CircleCI sobre a assinatura do código bem-sucedida.
Amostra de Pipeline CI do Circle
Confira o exemplo de pipeline CircleCI que criamos em github.com/SSLcom/codesigner-circleci-sampleOutros guias de integração de assinatura remota de CI/CD
- Integração do Cloud Code Signing com ações do GitHub
- Integração do Cloud Code Signing com GitLab CI
- 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.