Variables de entorno
- NOMBRE DE USUARIO: nombre de usuario de la cuenta SSL.com. (Requerido)
- CONTRASEÑA: Contraseña de la cuenta SSL.com (Obligatorio)
- CREDENCIAL_ID: ID de credencial para el certificado de firma. Si se omite credential_id y el usuario tiene solo un certificado de firma de código de eSigner, CodeSignTool lo usará de forma predeterminada. Si el usuario tiene más de un certificado de firma de código, este parámetro es obligatorio. (Requerido)
- TOTP_SECRETO: OAuth TOTP Secreto. Puede acceder a información detallada sobre https://www.ssl.com/how-to/automate-esigner-ev-code-signing (Obligatorio)
- ENTORNO_NOMBRE : Entorno 'TEST' o 'PROD'. (Requerido)
Ingresos
- ruta_archivo_entrada: ruta del objeto de código que se firmará. (Requerido)
- salida_dir_ruta: Directorio donde se escribirán los objetos de código firmados. Si se omite output_path, el archivo especificado en -file_path se sobrescribirá con el archivo firmado.
Preparar los componentes del flujo de trabajo (Firma de DLL de código .NET)
- Crear una carpeta .circleci
En su espacio de trabajo de firma de código, cree un carpeta .circleci. Debajo, crea un archivo config.yml.
- Establecer la versión de CI
Versión: 2.1
- Invocar trabajos a través de flujos de trabajo. Los flujos de trabajo organizan un conjunto de trabajos que se ejecutarán. Los trabajos para esta canalización se configuran a continuación
Ver: https://circleci.com/docs/2.0/configuration-reference/#workflows
flujos de trabajo:
- Escriba el nombre del flujo de trabajo.
punto net:
- Dentro del flujo de trabajo, define los trabajos que desea ejecutar.
trabajos: - compilar - firmar: requiere: - compilar
Definir la etapa de construcción
- Defina un trabajo para invocarlo más adelante en un flujo de trabajo.
(Consulte: https://circleci.com/docs/2.0/configuration-reference/#jobs)
trabajos: construir:
- Crea una variable de entorno
- Las variables de entorno se utilizan para hacer que las muestras sean más legibles. En la captura de pantalla anterior de un flujo de trabajo de firma de ejemplo, PROJECT_NAME, PROJECT_VERSION y DOTNET_VERSION se omitieron opcionalmente. La firma aún puede proceder incluso con estas omisiones.
entorno: PROJECT_NAME: HelloWorld PROJECT_VERSION: 0.0.1 DOTNET_VERSION: 3.1 WORKSPACE: /home/circleci/project
- Defina un ejecutor de Docker: (https://circleci.com/docs/2.0/executor-types/)
# Puede especificar una imagen de Dockerhub o usar una de nuestras Imágenes de conveniencia del Centro de desarrolladores de CircleCI.
ventana acoplable: - imagen: mcr.microsoft.com/dotnet/sdk:3.1-bullseye
- Coloque el directorio de trabajo para el trabajo.
directorio_de_trabajo: /home/circleci/proyecto
- Agregar pasos al trabajo
Consulte: https://circleci.com/docs/2.0/configuration-reference/#steps
pasos:
- Consulte el código fuente para que el flujo de trabajo pueda acceder a él.
- verificar
- Cree un directorio de artefactos para almacenar archivos de artefactos firmados y sin firmar
- ejecutar: nombre: comando Crear directorio de artefactos: | mkdir -p ${ESPACIO DE TRABAJO}/artefactos mkdir -p ${ESPACIO DE TRABAJO}/paquetes
- Cree un proyecto o una solución dotnet y todas sus dependencias.
- ejecutar: nombre: Build Dotnet Project Command: dotnet build dotnet/${PROJECT_NAME}.csproj -c Release
- Copie el artefacto al directorio de artefactos
- En este flujo de trabajo de ejemplo de firma escrita, se crearon varios tipos de proyectos. Es por eso que los archivos de diferentes tipos de proyectos se mantuvieron creando subcarpetas. Se creó una subcarpeta denominada 'dotnet' para los proyectos de Dotnet. En la captura de pantalla de demostración anterior, no era necesario crear una subcarpeta llamada 'dotnet', por lo que no se incluyó en el script.
- ejecutar: nombre: comando Copiar artefactos: | cp dotnet/bin/Release/netcoreapp${DOTNET_VERSION}/${PROJECT_NAME}-${PROJECT_VERSION}.dll ${WORKSPACE}/packages/HelloWorld.dll
- Conservar el artefacto en el directorio de artefactos para firmar
- persist_to_workspace: raíz: . rutas: - paquetes/*
Definir la etapa de firma
- Definir el trabajo de firma
firmar:
- Crea una variable de entorno
- En la captura de pantalla anterior, el comando de firma se definió directamente en el script de firma y no en las variables de entorno. BAmbos métodos pueden firmar correctamente con CircleCI.
- Las variables de entorno se utilizan para hacer que las muestras sean más legibles. En la captura de pantalla anterior del flujo de trabajo de ejemplo, algunas variables no se incluyeron opcionalmente. La firma aún puede proceder incluso con estas omisiones.
entorno: ENVIRONMENT_NAME: PROD COMMAND: sign WORKSPACE: /home/circleci/project
- Coloque el directorio de trabajo para el trabajo en Circle-CI
directorio_de_trabajo: /home/circleci/proyecto
- Nombre del artefacto para firmar
- El valor 'nombre-artefacto' es una opción para múltiples proyectos. El parámetro 'nombre-artefacto' se agregó para que la misma parte de firma se pueda usar para todos los tipos de proyectos. Dado que el ejemplo de la captura de pantalla se basa en un solo proyecto, no fue necesario incluirlo.
parámetros: nombre-artefacto: tipo: cadena por defecto: ''
- Defina un ejecutor docker:
Para referencia adicional, consulte: https://circleci.com/docs/2.0/executor-types/
Puede especificar una imagen de Dockerhub o usar una de nuestras Imágenes de conveniencia del Centro de desarrolladores de CircleCI.
Asegúrese de actualizar la etiqueta de imagen de Docker a continuación a la versión openjdk de su aplicación.
Una lista de imágenes de conveniencia de CircleCI Docker disponibles está disponible aquí: https://circleci.com/developer/images/image/cimg/openjdk
ventana acoplable: - imagen: cimg/openjdk:17.0.3
- Agregar pasos al trabajo
Para referencia adicional, consulte: https://circleci.com/docs/2.0/configuration-reference/#steps
pasos:
- Cree un directorio de artefactos para almacenar archivos de artefactos firmados y sin firmar
- ejecutar: nombre: comando Crear directorio de artefactos: | mkdir -p ${ESPACIO DE TRABAJO}/artefactos mkdir -p ${ESPACIO DE TRABAJO}/paquetes
- Adjuntar a Workspace para acceder al archivo del artefacto
-attach_workspace: en: /home/circleci/project
- Habilite Docker para CodeSigner en Circle-CI
- setup_remote_docker: nombre: Configuración de la versión remota de Docker: 19.03.13 docker_layer_caching: verdadero
- Extraiga la imagen de Docker del codiseñador del registro de Github
- ejecutar: nombre: Comando Docker Pull Image: | docker pull ghcr.io/sslcom/codesigner: último docker pull alpine: 3.4
- Escriba el paso donde se firmará el artefacto con CodeSignTool.
- ejecutar: nombre: Firmar comando de archivo de artefacto: | 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 /<< parámetros.nombre-artefacto >> codesign-in:/codesign/packages docker run -i --rm --dns 8.8.8.8 --network host --volumes-from codesign-in --volumes-from codesign- out -e NOMBRE DE USUARIO=${NOMBRE DE USUARIO} -e CONTRASEÑA=${CONTRASEÑA} -e CREDENCIAL_ID=${CREDENCIAL_ID} -e TOTP_SECRET=${TOTP_SECRET} -e ENVIRONMENT_NAME=${ENVIRONMENT_NAME} ghcr.io/sslcom/codesigner:latest ${COMMAND} -input_file_path=/codesign/packages/<< parámetros.nombre-artefacto >> -output_dir_path=/codesign/artifacts docker cp codesign-out:/codesign/artifacts/<< parámetros.nombre-artefacto >> ${ ESPACIO DE TRABAJO}/artifacts/<< parámetros.nombre-artefacto >>
- Escriba el paso para que su artefacto se cargue desde su flujo de trabajo, lo que le permite compartir datos entre trabajos y almacenar datos una vez que se completa un flujo de trabajo
- store_artifacts: nombre: Subir archivos firmados ruta: /home/circleci/project/artifacts/<< parámetros.nombre-artefacto >> destino: << parámetros.nombre-artefacto >>
Crear un nuevo repositorio en la línea de comando
Copie los componentes del comando push desde la ubicación de su proyecto en su cuenta de GitHub
Incluya todos los componentes de comando push en su editor
Configure un proyecto en CircleCI usando el repositorio que está integrado a GitHub
Definir todas las variables de entorno
Mientras se ejecuta el proyecto, haga clic en el botón Configuración del proyecto seguido de Variables de entorno para definir las variables.
Coloque los valores para cada variable
Haga clic en el Agregar variable de entorno para agregar los nombres y valores de todas las variables requeridas para el proyecto.
Espere a que se construya el proyecto.
Haga clic en Persistir en el espacio de trabajo
Espere brevemente a que el archivo del espacio de trabajo se cargue correctamente.
Haga clic en el botón de firmar
Espere a que se configure Remote Docker
Puede tardar más de un minuto, dependiendo del tamaño del archivo.
Espere a que se firmen los artefactos
Haz Clic Los artefactos de la pestaña.
Si haces clic Los artefactos, podrá ver el archivo que ha firmado con código correctamente. CircleCI también le notificará sobre la firma exitosa del código.
Ejemplo de canalización de CircleCI
Echa un vistazo a la canalización CircleCI de muestra que hemos creado en github.com/SSLcom/codesigner-circleci-sampleOtras guías de integración de firma remota de CI/CD
- Integración de firma de código en la nube con acciones de GitHub
- Integración de firma de código en la nube con GitLab CI
- Integración de firma de código en la nube con Jenkins CI
- Integración de firma de código en la nube con Travis CI
- Integración de firma de código en la nube con Azure DevOps
- Integración de firma de código en la nube con BitBucket
- Automatización de la firma de código en la nube con servicios de CI/CD
¿Necesita soluciones personalizadas?
Con nuestro conocimiento experto y personal de soporte de cinco estrellas, estamos listos y dispuestos a trabajar con usted en soluciones personalizadas o descuentos en firmas de alto volumen a nivel empresarial. Complete el siguiente formulario y nos pondremos en contacto.