1
0
mirror of https://gitlab.com/psono/psono-client synced 2025-04-19 03:22:16 +03:00
psono-client/.gitlab-ci.yml
Sascha Pfeiffer 6e1baa9451 Added SBOM
Signed-off-by: Sascha Pfeiffer <sascha.pfeiffer@esaqa.com>
2025-04-02 11:33:08 +02:00

642 lines
26 KiB
YAML

variables:
CONTAINER_TEST_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
CONTAINER_TEST_IMAGE_JFROG: psono-docker.jfrog.io/psono/psono-client:$CI_COMMIT_REF_NAME
CONTAINER_LATEST_IMAGE_JFROG: psono-docker.jfrog.io/psono/psono-client:latest
stages:
- translate
- test
- build
- release
- deploy
create-translations:
except:
- schedules
stage: translate
image: psono-docker.jfrog.io/ubuntu:22.04
script:
- apt-get update && apt-get install -y python3 python3-pip
- pip3 install requests openai==1.55.3
- python3 var/translate.py
only:
- master@psono/psono-client
test-unittests:
except:
- schedules
stage: test
image: psono-docker.jfrog.io/ubuntu:22.04
script:
- sh ./var/prep-build.sh
- npm run test
# - DEBIAN_FRONTEND="noninteractive" apt-get install -y --no-install-recommends xvfb x11vnc fluxbox xterm chromium-browser
# - curl -fsSL https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
# - echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list
# - apt-get update
# - apt-get install -y google-chrome-stable
# - karma start ./unittests/karma-chromium-headless.conf.js
test-linter:
except:
- schedules
stage: test
image: psono-docker.jfrog.io/ubuntu:22.04
script:
- sh ./var/prep-build.sh
- node var/update_public_suffix_list.js
- npm run buildfirefox
- npm install -g addons-linter@6.1.0
- cat ./build/firefox/manifest.json
- addons-linter --help
- addons-linter ./build/firefox
test-vulnerability-scan:
except:
- schedules
stage: test
image: psono-docker.jfrog.io/ubuntu:22.04
script:
- apt-get update
- apt-get install -y ca-certificates curl gnupg
- mkdir -p /etc/apt/keyrings
- curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
- echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_16.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list
- apt-get update
- apt-get install -y nodejs
- node --version
- npm --version
- npm audit --audit-level high --json --only=prod
allow_failure: true
test-upload-translations:
stage: test
image: psono-docker.jfrog.io/python:3
script:
- pip install requests
- python3 var/upload_translations.py
- python3 var/sync_translations_to_artifactory.py
only:
- develop@psono/psono-client
build-docker-image:
except:
- schedules
stage: build
image: psono-docker.jfrog.io/ubuntu:22.04
services:
- name: docker:25-dind
alias: docker
command: ["--tls=false"]
variables:
DOCKER_DRIVER: overlay2
DOCKER_HOST: tcp://docker:2375/
DOCKER_TLS_CERTDIR: ""
script:
- apt-get update && apt-get install -y curl iptables libdevmapper1.02.1
- sh ./var/download_translations_from_artifactory.sh
- sh ./var/prep-build.sh
- npm run buildwebclient
- curl -fSL "https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/containerd.io_1.6.28-1_amd64.deb" -o containerd.deb && echo "3fcc3e44e6d507c346ae05bbaef8f4bb04dfa8da9f04af658537f7e373c91340 containerd.deb" | sha256sum -c -
- curl -fSL "https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/docker-buildx-plugin_0.12.1-1~ubuntu.22.04~jammy_amd64.deb" -o docker-buildx-plugin.deb && echo "3fb7cd11fd9bf7c31d81c1afa96c023519d9e6e17422192aa4d0aa2767ed0776 docker-buildx-plugin.deb" | sha256sum -c -
- curl -fSL "https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/docker-ce-cli_25.0.3-1~ubuntu.22.04~jammy_amd64.deb" -o docker-ce-cli.deb && echo "624abe860a3d9dd190c278263b3ae115d54ce1135774a79f84026a6ec6ebafd1 docker-ce-cli.deb" | sha256sum -c -
- curl -fSL "https://download.docker.com/linux/ubuntu/dists/jammy/pool/stable/amd64/docker-ce_25.0.3-1~ubuntu.22.04~jammy_amd64.deb" -o docker-ce.deb && echo "63c7703814558a829ab3cc37c8018c050c9dad56f99c261090500f6c87821fd1 docker-ce.deb" | sha256sum -c -
- dpkg -i ./containerd.deb ./docker-ce.deb ./docker-ce-cli.deb ./docker-buildx-plugin.deb
- docker info
- echo $CI_JOB_TOKEN | docker login --username=gitlab-ci-token --password-stdin registry.gitlab.com
- docker context create builder
- docker buildx create builder --use
- docker buildx build --platform linux/amd64,linux/arm64 -t $CONTAINER_TEST_IMAGE --push --pull .
# - docker build -t $CONTAINER_TEST_IMAGE --pull .
# - docker push $CONTAINER_TEST_IMAGE
only:
- branches@psono/psono-client
- /^v[0-9]*\.[0-9]*\.[0-9]*$/
build-sbom:
except:
- schedules
stage: build
image: psono-docker.jfrog.io/ubuntu:22.04
script:
- apt-get update && apt-get install -y curl
- sh ./var/prep-build.sh
- npx @cyclonedx/cyclonedx-npm > sbom.json
- >
if [ ! -z "$artifactory_credentials" ]; then
curl -fL https://getcli.jfrog.io | sh &&
./jfrog config add rt-server-1 --artifactory-url=https://psono.jfrog.io/psono --user=gitlab --password=$artifactory_credentials --interactive=false &&
./jfrog rt u --target-props="CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME;CI_COMMIT_SHA=$CI_COMMIT_SHA;CI_COMMIT_URL=$CI_PROJECT_URL/commit/$CI_COMMIT_SHA;CI_PROJECT_ID=$CI_PROJECT_ID;CI_PROJECT_NAME=$CI_PROJECT_NAME;CI_PROJECT_NAMESPACE=$CI_PROJECT_NAMESPACE;CI_PROJECT_URL=$CI_PROJECT_URL;CI_PIPELINE_ID=$CI_PIPELINE_ID;CI_PIPELINE_URL=$CI_PROJECT_URL/pipelines/$CI_PIPELINE_ID;CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME;CI_JOB_ID=$CI_JOB_ID;CI_JOB_URL=$CI_PROJECT_URL/-/jobs/$CI_JOB_ID;CI_JOB_NAME=$CI_JOB_NAME;CI_JOB_STAGE=$CI_JOB_STAGE;CI_RUNNER_ID=$CI_RUNNER_ID;GITLAB_USER_ID=$GITLAB_USER_ID;CI_SERVER_VERSION=$CI_SERVER_VERSION" /builds/psono/psono-client/sbom.json psono/client/$CI_COMMIT_REF_NAME/client-sbom.json &&
./jfrog rt sp "psono/client/$CI_COMMIT_REF_NAME/client-sbom.json" "CI_COMMIT_TAG=$CI_COMMIT_TAG" || true
fi
- mv /builds/psono/psono-client/sbom.json ../
- rm -Rf *
- rm -Rf .* 2> /dev/null || true
- mv ../sbom.json ./
artifacts:
name: "sbom_$CI_COMMIT_REF_NAME"
paths:
- ./*
only:
- branches@psono/psono-client
- /^v[0-9]*\.[0-9]*\.[0-9]*$/
build-firefox-extension:
except:
- schedules
stage: build
image: psono-docker.jfrog.io/ubuntu:22.04
script:
- apt-get update && apt-get install -y curl
- sh ./var/download_translations_from_artifactory.sh
- sh ./var/prep-build.sh
- node var/update_public_suffix_list.js
- npm run buildfirefox
- sh ./var/package-firefox-extension.sh
- >
if [ ! -z "$artifactory_credentials" ]; then
curl -fL https://getcli.jfrog.io | sh &&
./jfrog config add rt-server-1 --artifactory-url=https://psono.jfrog.io/psono --user=gitlab --password=$artifactory_credentials --interactive=false &&
./jfrog rt u --target-props="CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME;CI_COMMIT_SHA=$CI_COMMIT_SHA;CI_COMMIT_URL=$CI_PROJECT_URL/commit/$CI_COMMIT_SHA;CI_PROJECT_ID=$CI_PROJECT_ID;CI_PROJECT_NAME=$CI_PROJECT_NAME;CI_PROJECT_NAMESPACE=$CI_PROJECT_NAMESPACE;CI_PROJECT_URL=$CI_PROJECT_URL;CI_PIPELINE_ID=$CI_PIPELINE_ID;CI_PIPELINE_URL=$CI_PROJECT_URL/pipelines/$CI_PIPELINE_ID;CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME;CI_JOB_ID=$CI_JOB_ID;CI_JOB_URL=$CI_PROJECT_URL/-/jobs/$CI_JOB_ID;CI_JOB_NAME=$CI_JOB_NAME;CI_JOB_STAGE=$CI_JOB_STAGE;CI_RUNNER_ID=$CI_RUNNER_ID;GITLAB_USER_ID=$GITLAB_USER_ID;CI_SERVER_VERSION=$CI_SERVER_VERSION" /builds/psono/psono-client/dist/firefox/psono.firefox.PW.zip psono/client/$CI_COMMIT_REF_NAME/firefox-extension.zip &&
./jfrog rt sp "psono/client/$CI_COMMIT_REF_NAME/firefox-extension.zip" "CI_COMMIT_TAG=$CI_COMMIT_TAG" || true
fi
- mv /builds/psono/psono-client/build/firefox ../
- rm -Rf *
- rm -Rf .* 2> /dev/null || true
- mv ../firefox/* ./
artifacts:
name: "firefox_$CI_COMMIT_REF_NAME"
paths:
- ./*
only:
- branches@psono/psono-client
- /^v[0-9]*\.[0-9]*\.[0-9]*$/
build-chrome-extension:
except:
- schedules
stage: build
image: psono-docker.jfrog.io/ubuntu:22.04
script:
- apt-get update && apt-get install -y curl
- sh ./var/download_translations_from_artifactory.sh
- sh ./var/prep-build.sh
- node var/update_public_suffix_list.js
- npm run buildchrome
- sh ./var/package-chrome-extension.sh
- >
if [ ! -z "$artifactory_credentials" ]; then
curl -fL https://getcli.jfrog.io | sh &&
./jfrog config add rt-server-1 --artifactory-url=https://psono.jfrog.io/psono --user=gitlab --password=$artifactory_credentials --interactive=false &&
./jfrog rt u --target-props="CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME;CI_COMMIT_SHA=$CI_COMMIT_SHA;CI_COMMIT_URL=$CI_PROJECT_URL/commit/$CI_COMMIT_SHA;CI_PROJECT_ID=$CI_PROJECT_ID;CI_PROJECT_NAME=$CI_PROJECT_NAME;CI_PROJECT_NAMESPACE=$CI_PROJECT_NAMESPACE;CI_PROJECT_URL=$CI_PROJECT_URL;CI_PIPELINE_ID=$CI_PIPELINE_ID;CI_PIPELINE_URL=$CI_PROJECT_URL/pipelines/$CI_PIPELINE_ID;CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME;CI_JOB_ID=$CI_JOB_ID;CI_JOB_URL=$CI_PROJECT_URL/-/jobs/$CI_JOB_ID;CI_JOB_NAME=$CI_JOB_NAME;CI_JOB_STAGE=$CI_JOB_STAGE;CI_RUNNER_ID=$CI_RUNNER_ID;GITLAB_USER_ID=$GITLAB_USER_ID;CI_SERVER_VERSION=$CI_SERVER_VERSION" /builds/psono/psono-client/dist/chrome/psono.chrome.PW.zip psono/client/$CI_COMMIT_REF_NAME/chrome-extension.zip &&
./jfrog rt sp "psono/client/$CI_COMMIT_REF_NAME/chrome-extension.zip" "CI_COMMIT_TAG=$CI_COMMIT_TAG" || true
fi
- mv /builds/psono/psono-client/build/chrome ../
- rm -Rf *
- rm -Rf .* 2> /dev/null || true
- mv ../chrome/* ./
artifacts:
name: "chrome_$CI_COMMIT_REF_NAME"
paths:
- ./*
only:
- branches@psono/psono-client
- /^v[0-9]*\.[0-9]*\.[0-9]*$/
build-electron-linux:
except:
- schedules
stage: build
image: psono-docker.jfrog.io/ubuntu:22.04
script:
- apt-get update && apt-get install -y curl
- sh ./var/download_translations_from_artifactory.sh
- sh ./var/prep-build.sh
- apt-get install -y rpm
- npm run buildelectron
- mkdir -p src/electron/src
- cp -R build/electron/* src/electron/src
- cd src/electron/
- npm ci
- npm run make
- cd ../..
- mv ./src/electron/out/make ../
- rm -Rf *
- rm -Rf .* 2> /dev/null || true
- mv ../make/* ./
artifacts:
name: "electron_linux_$CI_COMMIT_REF_NAME"
paths:
- ./*
expire_in: 1 week
only:
- branches@psono/psono-client
- /^v[0-9]*\.[0-9]*\.[0-9]*$/
build-electron-macos:
except:
- schedules
stage: build
script:
- sh ./var/download_translations_from_artifactory.sh
- npm ci
- npm run buildelectron
- mkdir -p src/electron/src
- cp -R build/electron/* src/electron/src
- cd src/electron/
- npm ci
- npm run make
- cd ../..
- mv ./src/electron/out/make ../
- rm -Rf *
- rm -Rf .* 2> /dev/null || true
- mv ../make/* ./
artifacts:
name: "electron_macos_$CI_COMMIT_REF_NAME"
paths:
- ./*
expire_in: 1 week
tags:
- macos
only:
- develop@psono/psono-client
- master@psono/psono-client
- /^v[0-9]*\.[0-9]*\.[0-9]*$/
build-electron-windows:
except:
- schedules
stage: build
script:
- .\var\download_translations_from_artifactory.ps1
- npm ci
- npm run buildelectron
- mkdir -p src/electron/src
- cp -R build/electron/* src/electron/src
- cd src/electron/
- npm ci
- npm i exe-icon-extractor@1.0.8
- node ./var/get_windows_signing_certificate.js
- npm run make
- cd ../..
- mv ./src/electron/out/make ../
- rm -r -force ./*
- mv ../make/* ./
- rm -r -force ../make
artifacts:
name: "electron_windows_$CI_COMMIT_REF_NAME"
paths:
- ./*
expire_in: 1 week
tags:
- windows
only:
- develop@psono/psono-client
- master@psono/psono-client
- /^v[0-9]*\.[0-9]*\.[0-9]*$/
release-electron-jfrog:
except:
- schedules
stage: release
image: psono-docker.jfrog.io/ubuntu:22.04
dependencies:
- build-electron-linux
- build-electron-macos
- build-electron-windows
script:
- apt-get update && apt-get install -y curl
- mkdir upload
- ls
- mv rpm/x64/*.x86_64.rpm ./upload/psono.x86_64.rpm
- mv deb/x64/*amd64.deb ./upload/psono.amd64.deb
- mv squirrel.windows/x64/*.exe ./upload/psono.x86_64.exe
- mv wix/x64/*.msi ./upload/psono.x86_64.msi
- mv Psono.dmg ./upload/psono.dmg
- ls ./upload/
- curl -fL https://getcli.jfrog.io | sh
- ./jfrog config add rt-server-1 --artifactory-url=https://psono.jfrog.io/psono --user=gitlab --password=$artifactory_credentials --interactive=false
- ./jfrog rt u --target-props="CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME;CI_COMMIT_SHA=$CI_COMMIT_SHA;CI_COMMIT_URL=$CI_PROJECT_URL/commit/$CI_COMMIT_SHA;CI_PROJECT_ID=$CI_PROJECT_ID;CI_PROJECT_NAME=$CI_PROJECT_NAME;CI_PROJECT_NAMESPACE=$CI_PROJECT_NAMESPACE;CI_PROJECT_URL=$CI_PROJECT_URL;CI_PIPELINE_ID=$CI_PIPELINE_ID;CI_PIPELINE_URL=$CI_PROJECT_URL/pipelines/$CI_PIPELINE_ID;CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME;CI_JOB_ID=$CI_JOB_ID;CI_JOB_URL=$CI_PROJECT_URL/-/jobs/$CI_JOB_ID;CI_JOB_NAME=$CI_JOB_NAME;CI_JOB_STAGE=$CI_JOB_STAGE;CI_RUNNER_ID=$CI_RUNNER_ID;GITLAB_USER_ID=$GITLAB_USER_ID;CI_SERVER_VERSION=$CI_SERVER_VERSION" ./upload/psono.x86_64.rpm psono/client/$CI_COMMIT_REF_NAME/psono.x86_64.rpm
- ./jfrog rt sp "psono/client/$CI_COMMIT_REF_NAME/psono.x86_64.rpm" "CI_COMMIT_TAG=$CI_COMMIT_TAG" || true
- ./jfrog rt u --target-props="CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME;CI_COMMIT_SHA=$CI_COMMIT_SHA;CI_COMMIT_URL=$CI_PROJECT_URL/commit/$CI_COMMIT_SHA;CI_PROJECT_ID=$CI_PROJECT_ID;CI_PROJECT_NAME=$CI_PROJECT_NAME;CI_PROJECT_NAMESPACE=$CI_PROJECT_NAMESPACE;CI_PROJECT_URL=$CI_PROJECT_URL;CI_PIPELINE_ID=$CI_PIPELINE_ID;CI_PIPELINE_URL=$CI_PROJECT_URL/pipelines/$CI_PIPELINE_ID;CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME;CI_JOB_ID=$CI_JOB_ID;CI_JOB_URL=$CI_PROJECT_URL/-/jobs/$CI_JOB_ID;CI_JOB_NAME=$CI_JOB_NAME;CI_JOB_STAGE=$CI_JOB_STAGE;CI_RUNNER_ID=$CI_RUNNER_ID;GITLAB_USER_ID=$GITLAB_USER_ID;CI_SERVER_VERSION=$CI_SERVER_VERSION" ./upload/psono.amd64.deb psono/client/$CI_COMMIT_REF_NAME/psono.amd64.deb
- ./jfrog rt sp "psono/client/$CI_COMMIT_REF_NAME/psono.amd64.deb" "CI_COMMIT_TAG=$CI_COMMIT_TAG" || true
- ./jfrog rt u --target-props="CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME;CI_COMMIT_SHA=$CI_COMMIT_SHA;CI_COMMIT_URL=$CI_PROJECT_URL/commit/$CI_COMMIT_SHA;CI_PROJECT_ID=$CI_PROJECT_ID;CI_PROJECT_NAME=$CI_PROJECT_NAME;CI_PROJECT_NAMESPACE=$CI_PROJECT_NAMESPACE;CI_PROJECT_URL=$CI_PROJECT_URL;CI_PIPELINE_ID=$CI_PIPELINE_ID;CI_PIPELINE_URL=$CI_PROJECT_URL/pipelines/$CI_PIPELINE_ID;CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME;CI_JOB_ID=$CI_JOB_ID;CI_JOB_URL=$CI_PROJECT_URL/-/jobs/$CI_JOB_ID;CI_JOB_NAME=$CI_JOB_NAME;CI_JOB_STAGE=$CI_JOB_STAGE;CI_RUNNER_ID=$CI_RUNNER_ID;GITLAB_USER_ID=$GITLAB_USER_ID;CI_SERVER_VERSION=$CI_SERVER_VERSION" ./upload/psono.x86_64.exe psono/client/$CI_COMMIT_REF_NAME/psono.x86_64.exe
- ./jfrog rt sp "psono/client/$CI_COMMIT_REF_NAME/psono.x86_64.exe" "CI_COMMIT_TAG=$CI_COMMIT_TAG" || true
- ./jfrog rt u --target-props="CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME;CI_COMMIT_SHA=$CI_COMMIT_SHA;CI_COMMIT_URL=$CI_PROJECT_URL/commit/$CI_COMMIT_SHA;CI_PROJECT_ID=$CI_PROJECT_ID;CI_PROJECT_NAME=$CI_PROJECT_NAME;CI_PROJECT_NAMESPACE=$CI_PROJECT_NAMESPACE;CI_PROJECT_URL=$CI_PROJECT_URL;CI_PIPELINE_ID=$CI_PIPELINE_ID;CI_PIPELINE_URL=$CI_PROJECT_URL/pipelines/$CI_PIPELINE_ID;CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME;CI_JOB_ID=$CI_JOB_ID;CI_JOB_URL=$CI_PROJECT_URL/-/jobs/$CI_JOB_ID;CI_JOB_NAME=$CI_JOB_NAME;CI_JOB_STAGE=$CI_JOB_STAGE;CI_RUNNER_ID=$CI_RUNNER_ID;GITLAB_USER_ID=$GITLAB_USER_ID;CI_SERVER_VERSION=$CI_SERVER_VERSION" ./upload/psono.x86_64.msi psono/client/$CI_COMMIT_REF_NAME/psono.x86_64.msi
- ./jfrog rt sp "psono/client/$CI_COMMIT_REF_NAME/psono.x86_64.msi" "CI_COMMIT_TAG=$CI_COMMIT_TAG" || true
- ./jfrog rt u --target-props="CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME;CI_COMMIT_SHA=$CI_COMMIT_SHA;CI_COMMIT_URL=$CI_PROJECT_URL/commit/$CI_COMMIT_SHA;CI_PROJECT_ID=$CI_PROJECT_ID;CI_PROJECT_NAME=$CI_PROJECT_NAME;CI_PROJECT_NAMESPACE=$CI_PROJECT_NAMESPACE;CI_PROJECT_URL=$CI_PROJECT_URL;CI_PIPELINE_ID=$CI_PIPELINE_ID;CI_PIPELINE_URL=$CI_PROJECT_URL/pipelines/$CI_PIPELINE_ID;CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME;CI_JOB_ID=$CI_JOB_ID;CI_JOB_URL=$CI_PROJECT_URL/-/jobs/$CI_JOB_ID;CI_JOB_NAME=$CI_JOB_NAME;CI_JOB_STAGE=$CI_JOB_STAGE;CI_RUNNER_ID=$CI_RUNNER_ID;GITLAB_USER_ID=$GITLAB_USER_ID;CI_SERVER_VERSION=$CI_SERVER_VERSION" ./upload/psono.dmg psono/client/$CI_COMMIT_REF_NAME/psono.dmg
- ./jfrog rt sp "psono/client/$CI_COMMIT_REF_NAME/psono.dmg" "CI_COMMIT_TAG=$CI_COMMIT_TAG" || true
only:
- develop@psono/psono-client
- master@psono/psono-client
- /^v[0-9]*\.[0-9]*\.[0-9]*$/
deploy-electron-linux:
except:
- schedules
stage: deploy
image: psono-docker.jfrog.io/ubuntu:22.04
script:
- apt-get update && apt-get install -y curl
- sh ./var/download_translations_from_artifactory.sh
- sh ./var/prep-build.sh
- apt-get install -y rpm
- npm run buildelectron
- mkdir -p src/electron/src
- cp -R build/electron/* src/electron/src
- cd src/electron/
- npm ci
- npm run publish
- cd ../..
only:
- /^v[0-9]*\.[0-9]*\.[0-9]*$/
deploy-electron-macos:
except:
- schedules
stage: deploy
script:
- sh ./var/download_translations_from_artifactory.sh
- npm ci
- npm run buildelectron
- mkdir -p src/electron/src
- cp -R build/electron/* src/electron/src
- cd src/electron/
- npm ci
- npm run publish
- cd ../..
tags:
- macos
only:
- /^v[0-9]*\.[0-9]*\.[0-9]*$/
deploy-electron-windows:
except:
- schedules
stage: deploy
script:
- .\var\download_translations_from_artifactory.ps1
- npm ci
- npm run buildelectron
- mkdir -p src/electron/src
- cp -R build/electron/* src/electron/src
- cd src/electron/
- npm ci
- npm i exe-icon-extractor@1.0.8
- node ./var/get_windows_signing_certificate.js
- npm run publish
- cd ../..
allow_failure: true
tags:
- windows
only:
- /^v[0-9]*\.[0-9]*\.[0-9]*$/
build-webclient:
except:
- schedules
stage: build
image: psono-docker.jfrog.io/ubuntu:22.04
script:
- apt-get update && apt-get install -y curl
- sh ./var/download_translations_from_artifactory.sh
- sh ./var/prep-build.sh
- npm run buildwebclient
- sh ./var/package-webclient.sh
- >
if [ ! -z "$artifactory_credentials" ]; then
curl -fL https://getcli.jfrog.io | sh &&
./jfrog config add rt-server-1 --artifactory-url=https://psono.jfrog.io/psono --user=gitlab --password=$artifactory_credentials --interactive=false &&
./jfrog rt u --target-props="CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME;CI_COMMIT_SHA=$CI_COMMIT_SHA;CI_COMMIT_URL=$CI_PROJECT_URL/commit/$CI_COMMIT_SHA;CI_PROJECT_ID=$CI_PROJECT_ID;CI_PROJECT_NAME=$CI_PROJECT_NAME;CI_PROJECT_NAMESPACE=$CI_PROJECT_NAMESPACE;CI_PROJECT_URL=$CI_PROJECT_URL;CI_PIPELINE_ID=$CI_PIPELINE_ID;CI_PIPELINE_URL=$CI_PROJECT_URL/pipelines/$CI_PIPELINE_ID;CI_COMMIT_REF_NAME=$CI_COMMIT_REF_NAME;CI_JOB_ID=$CI_JOB_ID;CI_JOB_URL=$CI_PROJECT_URL/-/jobs/$CI_JOB_ID;CI_JOB_NAME=$CI_JOB_NAME;CI_JOB_STAGE=$CI_JOB_STAGE;CI_RUNNER_ID=$CI_RUNNER_ID;GITLAB_USER_ID=$GITLAB_USER_ID;CI_SERVER_VERSION=$CI_SERVER_VERSION" /builds/psono/psono-client/dist/webclient/psono.webclient.PW.zip psono/client/$CI_COMMIT_REF_NAME/webclient.zip &&
./jfrog rt sp "psono/client/$CI_COMMIT_REF_NAME/webclient.zip" "CI_COMMIT_TAG=$CI_COMMIT_TAG" || true
fi
- mv /builds/psono/psono-client/build/webclient ../
- rm -Rf *
- rm -Rf .* 2> /dev/null || true
- mv ../webclient/* ./
artifacts:
name: "webclient_$CI_COMMIT_REF_NAME"
paths:
- ./*
only:
- branches@psono/psono-client
- /^v[0-9]*\.[0-9]*\.[0-9]*$/
release-artifacts:
except:
- schedules
stage: release
image: psono-docker.jfrog.io/ubuntu:22.04
script:
- apt-get update
- apt-get install -y curl
- curl -fL https://getcli.jfrog.io | sh
- ./jfrog config add rt-server-1 --artifactory-url=https://psono.jfrog.io/psono --user=gitlab --password=$artifactory_credentials --interactive=false
- ./jfrog rt cp --flat psono/client/$CI_COMMIT_REF_NAME/client-sbom.json psono/client/latest/
- ./jfrog rt cp --flat psono/client/$CI_COMMIT_REF_NAME/firefox-extension.zip psono/client/latest/
- ./jfrog rt cp --flat psono/client/$CI_COMMIT_REF_NAME/chrome-extension.zip psono/client/latest/
- ./jfrog rt cp --flat psono/client/$CI_COMMIT_REF_NAME/webclient.zip psono/client/latest/
only:
- /^v[0-9]*\.[0-9]*\.[0-9]*$/
release-docker-jfrog:
except:
- schedules
stage: release
image: psono-docker.jfrog.io/docker:25.0.3-git
services:
- name: docker:25-dind
alias: docker
command: ["--tls=false"]
variables:
DOCKER_DRIVER: overlay2
DOCKER_HOST: tcp://docker:2375/
DOCKER_TLS_CERTDIR: ""
script:
- apk add skopeo
- docker info
- echo $CI_JOB_TOKEN | docker login --username=gitlab-ci-token --password-stdin registry.gitlab.com
- echo $artifactory_credentials | docker login --username=gitlab --password-stdin psono-docker.jfrog.io
- skopeo copy --all docker://$CONTAINER_TEST_IMAGE docker://$CONTAINER_TEST_IMAGE_JFROG
only:
- /^v[0-9]*\.[0-9]*\.[0-9]*$/
release-docker:
except:
- schedules
stage: release
image: psono-docker.jfrog.io/docker:25.0.3-git
services:
- name: docker:25-dind
alias: docker
command: ["--tls=false"]
variables:
DOCKER_DRIVER: overlay2
DOCKER_HOST: tcp://docker:2375/
DOCKER_TLS_CERTDIR: ""
script:
- apk add skopeo
- docker info
- echo $CI_JOB_TOKEN | docker login --username=gitlab-ci-token --password-stdin registry.gitlab.com
- echo $artifactory_credentials | docker login --username=gitlab --password-stdin psono-docker.jfrog.io
- skopeo copy --all docker://$CONTAINER_TEST_IMAGE docker://$CONTAINER_LATEST_IMAGE_JFROG
only:
- develop@psono/psono-client
- master@psono/psono-client
deploy-docker:
except:
- schedules
stage: deploy
image: psono-docker.jfrog.io/docker:25.0.3-git
services:
- name: docker:25-dind
alias: docker
command: ["--tls=false"]
variables:
DOCKER_DRIVER: overlay2
DOCKER_HOST: tcp://docker:2375/
DOCKER_TLS_CERTDIR: ""
script:
- echo $CI_JOB_TOKEN | docker login --username=gitlab-ci-token --password-stdin registry.gitlab.com
- echo $docker_hub_credentials | docker login --username=psonogitlab --password-stdin
- sh ./var/deploy-docker.sh
environment:
name: production
url: https://psono.pw
only:
- /^v[0-9]*\.[0-9]*\.[0-9]*$/
deploy-github:
except:
- schedules
stage: deploy
image: psono-docker.jfrog.io/docker:25.0.3-git
services:
- name: docker:25-dind
alias: docker
command: ["--tls=false"]
variables:
DOCKER_DRIVER: overlay2
DOCKER_HOST: tcp://docker:2375/
DOCKER_TLS_CERTDIR: ""
script:
- sh ./var/deploy-github.sh
environment:
name: github
url: https://github.com/psono/psono-client
only:
- /^v[0-9]*\.[0-9]*\.[0-9]*$/
deploy-chrome:
except:
- schedules
stage: deploy
image: psono-docker.jfrog.io/ubuntu:22.04
script:
- sh ./var/prep-build.sh
- node var/update_public_suffix_list.js
- npm run buildchrome
- sh ./var/deploy-chrome-extension.sh
environment:
name: chrome-webstore
url: https://chrome.google.com/webstore/detail/psonopw/eljmjmgjkbmpmfljlmklcfineebidmlo
only:
- /^v[0-9]*\.[0-9]*\.[0-9]*$/
deploy-edge:
except:
- schedules
stage: deploy
image: psono-docker.jfrog.io/python:3.11-buster
script:
- cd /builds/psono/psono-client/
- curl -fL https://getcli.jfrog.io | sh
- ./jfrog config add rt-server-1 --artifactory-url=https://psono.jfrog.io/psono --user=gitlab --password=$artifactory_credentials --overwrite
- ./jfrog rt dl psono/client/$CI_COMMIT_REF_NAME/chrome-extension.zip
- mv client/$CI_COMMIT_REF_NAME/chrome-extension.zip ./edge-extension.zip
- pip install edge-addons-api==0.3.3
- python3 var/deploy_edge_extension.py
environment:
name: edge-webstore
url: https://chrome.google.com/webstore/detail/psonopw/eljmjmgjkbmpmfljlmklcfineebidmlo
only:
- /^v[0-9]*\.[0-9]*\.[0-9]*$/
deploy-firefox:
except:
- schedules
stage: deploy
image: psono-docker.jfrog.io/ubuntu:22.04
script:
- apt-get update && apt-get install -y zip
- zip -r ../source.zip ./
- mv ../source.zip ./
- sh ./var/prep-build.sh
- node var/update_public_suffix_list.js
- npm run buildfirefox
- sh ./var/deploy-firefox-extension.sh
environment:
name: firefox-webstore
url: https://addons.mozilla.org/firefox/addon/psono-pw-password-manager/
only:
- /^v[0-9]*\.[0-9]*\.[0-9]*$/
deploy-changelog:
except:
- schedules
stage: deploy
image: psono-docker.jfrog.io/ubuntu:22.04
script:
- sh ./var/deploy_changelog.sh
environment:
name: static.psono.com
url: https://static.psono.com/gitlab.com/psono/psono-client/changelog.json
only:
- /^v[0-9]*\.[0-9]*\.[0-9]*$/
deploy-nightlyartifacts:
except:
- schedules
stage: release
image: psono-docker.jfrog.io/ubuntu:22.04
dependencies:
- build-sbom
script:
- sh ./var/deploy_nightlyartifacts.sh
environment:
name: static.psono.com
url: https://get.psono.com/psono/psono-client/nightly/chrome-extension.zip
only:
- develop@psono/psono-client
deploy-releaseartifacts:
except:
- schedules
stage: deploy
image: psono-docker.jfrog.io/ubuntu:22.04
dependencies:
- build-sbom
script:
- sh ./var/deploy_releaseartifacts.sh
environment:
name: static.psono.com
url: https://get.psono.com/psono/psono-client/latest/chrome-extension.zip
only:
- /^v[0-9]*\.[0-9]*\.[0-9]*$/