176 строки
5.9 KiB
YAML
176 строки
5.9 KiB
YAML
# Use the latest 2.1 version of CircleCI pipeline process engine.
|
|
# See: https://circleci.com/docs/2.0/configuration-reference
|
|
version: 2.1
|
|
|
|
orbs:
|
|
win: circleci/windows@5.0
|
|
|
|
commands:
|
|
setup_digicert:
|
|
description: Set up Digicert Keylocker certificate for code-signing
|
|
steps:
|
|
- run:
|
|
name: "Digicert Signing Manager Setup"
|
|
command: |
|
|
cd C:\
|
|
curl.exe -X GET https://one.digicert.com/signingmanager/api-ui/v1/releases/smtools-windows-x64.msi/download -H "x-api-key:$env:SM_API_KEY" -o smtools-windows-x64.msi
|
|
msiexec.exe /i smtools-windows-x64.msi /quiet /qn | Wait-Process
|
|
- run:
|
|
name: Setup Digicert ONE Client Cert
|
|
command: |
|
|
cd C:\
|
|
echo $env:SM_CLIENT_CERT_FILE_B64 > certificate.txt
|
|
certutil -decode certificate.txt certificate.p12
|
|
- run:
|
|
name: Sync Certs
|
|
command: |
|
|
& $env:SSM\smksp_cert_sync.exe
|
|
|
|
jobs:
|
|
build-visual:
|
|
docker:
|
|
- image: cimg/node:18.20.3
|
|
steps:
|
|
- checkout
|
|
- run: node --version
|
|
- run:
|
|
name: "npm install"
|
|
command: "npm i"
|
|
working_directory: src/powerbi-visual
|
|
- run:
|
|
name: Set version
|
|
command: |
|
|
npm version ${CIRCLE_TAG:-2.0.0} --allow-same-version
|
|
working_directory: src/powerbi-visual
|
|
- run:
|
|
name: "npm run build"
|
|
command: "npm run build"
|
|
working_directory: src/powerbi-visual
|
|
- run:
|
|
name: "npm run pack"
|
|
command: "npm run pack"
|
|
working_directory: src/powerbi-visual
|
|
- store_artifacts:
|
|
path: dist/*.pbiviz
|
|
- persist_to_workspace:
|
|
root: ./
|
|
paths:
|
|
- src/powerbi-visual/dist/*.pbiviz
|
|
|
|
build-connector:
|
|
executor:
|
|
name: win/default
|
|
shell: powershell.exe
|
|
environment:
|
|
SSM: 'C:\Program Files\DigiCert\DigiCert One Signing Manager Tools'
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: "Set connector internal version"
|
|
command: |
|
|
$env:VERSION = if([string]::IsNullOrEmpty($env:CIRCLE_TAG)) { "2.0.0" } else { $env:CIRCLE_TAG }
|
|
(Get-Content ./Speckle.pq).replace('[Version = "2.0.0"]', '[Version = "'+$($env:VERSION)+'"]') | Set-Content ./Speckle.pq
|
|
working_directory: src/powerbi-data-connector
|
|
- run:
|
|
name: "Build Data Connector"
|
|
command: "msbuild Speckle.proj /restore /consoleloggerparameters:NoSummary /property:GenerateFullPaths=true"
|
|
working_directory: src/powerbi-data-connector
|
|
- run:
|
|
name: Create PQX file
|
|
command: .\tools\MakePQX\MakePQX.exe pack -mz src/powerbi-data-connector/bin/Speckle.mez -t src/powerbi-data-connector/bin/Speckle.pqx
|
|
- persist_to_workspace:
|
|
root: ./
|
|
paths:
|
|
- src/powerbi-data-connector/bin/Speckle.pqx
|
|
|
|
build-installer:
|
|
executor:
|
|
name: win/default
|
|
shell: powershell.exe
|
|
environment:
|
|
SSM: 'C:\Program Files\DigiCert\DigiCert One Signing Manager Tools'
|
|
steps:
|
|
- checkout
|
|
- attach_workspace:
|
|
at: ./
|
|
- unless: # Build installers unsigned on non-tagged builds
|
|
condition: << pipeline.git.tag >>
|
|
steps:
|
|
- run:
|
|
name: Build Installer
|
|
shell: cmd.exe #does not work in powershell
|
|
environment:
|
|
WORKFLOW_NUM: << pipeline.number >>
|
|
CIRCLE_TAG: 2.0.0
|
|
command: .circleci\build-installer.bat
|
|
- when: # Setup certificates and build installers signed for tagged builds
|
|
condition: << pipeline.git.tag >>
|
|
steps:
|
|
- setup_digicert
|
|
- run:
|
|
name: Build Installer
|
|
shell: cmd.exe #does not work in powershell
|
|
environment:
|
|
WORKFLOW_NUM: << pipeline.number >>
|
|
command: .circleci\build-installer.bat /DSIGN_INSTALLER /DCODE_SIGNING_CERT_FINGERPRINT=%SM_CODE_SIGNING_CERT_SHA1_HASH%
|
|
- store_artifacts:
|
|
path: ./installer
|
|
- persist_to_workspace:
|
|
root: ./
|
|
paths:
|
|
- installer/*.exe
|
|
|
|
deploy-connector-to-feed:
|
|
docker:
|
|
- image: mcr.microsoft.com/dotnet/sdk:6.0
|
|
steps:
|
|
- attach_workspace:
|
|
at: ./
|
|
- run:
|
|
name: Install Manager Feed CLI
|
|
command: dotnet tool install --global Speckle.Manager.Feed
|
|
- run:
|
|
name: Upload new version
|
|
command: |
|
|
TAG=$(if [ "${CIRCLE_TAG}" ]; then echo $CIRCLE_TAG; else echo "2.0.0"; fi;)
|
|
SEMVER=$(echo "$TAG" | sed -e 's/\/[a-zA-Z-]*//')
|
|
VER=$(echo "$SEMVER" | sed -e 's/-.*//')
|
|
VERSION=$(echo $VER.$WORKFLOW_NUM)
|
|
/root/.dotnet/tools/Speckle.Manager.Feed deploy -s powerbi -v ${SEMVER} -u https://releases.speckle.dev/installers/powerbi/powerbi-${SEMVER}.exe -o Win -a Any -f ./installer/powerbi-${SEMVER}.exe
|
|
environment:
|
|
WORKFLOW_NUM: << pipeline.number >>
|
|
|
|
workflows:
|
|
build:
|
|
jobs:
|
|
- build-connector:
|
|
context: digicert-keylocker
|
|
- build-visual
|
|
- build-installer:
|
|
context: digicert-keylocker
|
|
requires:
|
|
- build-connector
|
|
- build-visual
|
|
deploy:
|
|
jobs:
|
|
- build-connector:
|
|
filters: &deploy_filter
|
|
branches:
|
|
ignore: /.*/
|
|
tags:
|
|
only: /^([0-9]+)\.([0-9]+)\.([0-9]+)(?:-\w{1,10})?$/
|
|
context: digicert-keylocker
|
|
- build-visual:
|
|
filters: *deploy_filter
|
|
- build-installer:
|
|
filters: *deploy_filter
|
|
context: digicert-keylocker
|
|
requires:
|
|
- build-connector
|
|
- build-visual
|
|
- deploy-connector-to-feed:
|
|
filters: *deploy_filter
|
|
requires:
|
|
- build-installer
|
|
context: do-spaces-speckle-releases
|