crafty-4/.gitlab-ci.yml

236 lines
7.4 KiB
YAML
Raw Normal View History

2022-03-23 02:32:41 +00:00
# Crafty Controller 4.0 - Lint & Build Pipes
# [Maintainer: Zedifus(https://gitlab.com/Zedifus)]
###################################################
# yamllint disable rule:line-length
---
2021-09-10 21:15:47 +00:00
stages:
2022-03-23 02:41:19 +00:00
- lint
- test
2022-03-23 02:41:19 +00:00
- prod-deployment
- dev-deployment
2021-09-10 21:15:47 +00:00
2021-12-21 01:25:04 +00:00
variables:
DOCKER_HOST: tcp://docker:2376
DOCKER_TLS_CERTDIR: "/certs"
2021-09-10 21:15:47 +00:00
docker-build-dev:
image: docker:latest
services:
- name: docker:dind
stage: dev-deployment
2021-09-21 00:52:18 +00:00
tags:
- docker_priv
2021-09-10 21:15:47 +00:00
rules:
- if: $CI_COMMIT_BRANCH == 'dev'
environment:
name: development
before_script:
2022-03-24 21:45:00 +00:00
- |
apk --no-cache add jq
MAJOR=$(cat app/config/version.json | jq '.major' )
MINOR=$(cat app/config/version.json | jq '.minor' )
SUB=$(cat app/config/version.json | jq '.sub' )
META=$(cat app/config/version.json | jq -r '.meta' )
2021-09-22 18:02:28 +00:00
- |
apk --no-cache add curl
latest_tag=$(curl -s https://api.github.com/repos/docker/buildx/releases/latest | sed -Ene '/^ *"tag_name": *"(v.+)",$/s//\1/p')
echo "Using buildx version $latest_tag"
curl -sSLo docker-buildx "https://github.com/docker/buildx/releases/download/$latest_tag/buildx-$latest_tag.linux-amd64"
chmod a+x docker-buildx
mkdir -p ~/.docker/cli-plugins
mv docker-buildx ~/.docker/cli-plugins/docker-buildx
docker version
- docker run --rm --privileged aptman/qus -- -r
- docker run --rm --privileged aptman/qus -s -- -p aarch64 x86_64
2021-09-22 18:02:28 +00:00
- echo $CI_BUILD_TOKEN | docker login -u "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY
2021-09-10 21:15:47 +00:00
script:
- |
tag=":$CI_COMMIT_REF_SLUG"
2022-03-24 21:45:00 +00:00
VERSION="${MAJOR}.${MINOR}.${SUB}-${META}"
- |
2021-09-10 21:15:47 +00:00
echo "Running on branch '$CI_COMMIT_BRANCH': tag = $tag"
2022-03-24 21:45:00 +00:00
echo "Crafty Version: $VERSION"
2021-12-21 01:25:04 +00:00
- docker context create tls-environment
- docker buildx create --name zedBuilder --use tls-environment
2021-09-10 21:15:47 +00:00
- docker buildx build
--cache-from type=registry,ref="$CI_REGISTRY_IMAGE${tag}"
--build-arg BUILDKIT_INLINE_CACHE=1
2022-03-24 21:45:00 +00:00
--build-arg "BUILD_DATE=$(date +"%Y-%m-%dT%H:%M:%SZ")"
--build-arg "BUILD_REF=${CI_COMMIT_SHA}"
--build-arg "CRAFTY_VER=${VERSION}"
2021-09-10 21:15:47 +00:00
--tag "$CI_REGISTRY_IMAGE${tag}"
--platform linux/arm64/v8,linux/amd64
--push .
after_script:
- |
docker buildx rm zedBuilder && echo "Successfully Stopped builder instance" || echo "Failed to stop builder instance."
2021-12-21 01:25:04 +00:00
docker context rm tls-environment || true
echo "Please review multi-arch manifests are present:"
2021-09-22 17:53:00 +00:00
docker buildx imagetools inspect "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG"
2021-09-10 21:15:47 +00:00
docker-build-prod:
image: docker:latest
services:
- name: docker:dind
stage: prod-deployment
2021-09-21 00:52:18 +00:00
tags:
- docker_priv
2021-09-10 21:15:47 +00:00
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
environment:
name: production
before_script:
2022-03-24 21:45:00 +00:00
- |
apk --no-cache add jq
MAJOR=$(cat app/config/version.json | jq '.major' )
MINOR=$(cat app/config/version.json | jq '.minor' )
SUB=$(cat app/config/version.json | jq '.sub' )
META=$(cat app/config/version.json | jq -r '.meta' )
2021-09-22 18:02:28 +00:00
- |
apk --no-cache add curl
latest_tag=$(curl -s https://api.github.com/repos/docker/buildx/releases/latest | sed -Ene '/^ *"tag_name": *"(v.+)",$/s//\1/p')
echo "Using buildx version $latest_tag"
curl -sSLo docker-buildx "https://github.com/docker/buildx/releases/download/$latest_tag/buildx-$latest_tag.linux-amd64"
chmod a+x docker-buildx
mkdir -p ~/.docker/cli-plugins
mv docker-buildx ~/.docker/cli-plugins/docker-buildx
docker version
- docker run --rm --privileged aptman/qus -- -r
- docker run --rm --privileged aptman/qus -s -- -p aarch64 x86_64
2021-09-22 18:02:28 +00:00
- echo $CI_BUILD_TOKEN | docker login -u "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY
2021-09-10 21:15:47 +00:00
script:
- |
tag=""
2022-03-24 21:45:00 +00:00
VERSION="${MAJOR}.${MINOR}.${SUB}-${META}"
- |
echo "Running on branch '$CI_COMMIT_BRANCH': tag = $tag"
echo "Crafty Version: $VERSION"
2021-12-21 01:25:04 +00:00
- docker context create tls-environment
- docker buildx create --name zedBuilder --use tls-environment
2021-09-10 21:15:47 +00:00
- docker buildx build
--cache-from type=registry,ref="$CI_REGISTRY_IMAGE${tag}"
--build-arg BUILDKIT_INLINE_CACHE=1
2022-03-24 21:45:00 +00:00
--build-arg "BUILD_DATE=$(date +"%Y-%m-%dT%H:%M:%SZ")"
--build-arg "BUILD_REF=${CI_COMMIT_SHA}"
--build-arg "CRAFTY_VER=${VERSION}"
2021-09-10 21:15:47 +00:00
--tag "$CI_REGISTRY_IMAGE${tag}"
--platform linux/arm64/v8,linux/amd64
--push .
after_script:
- |
docker buildx rm zedBuilder && echo "Successfully Stopped builder instance" || echo "Failed to stop builder instance."
2021-12-21 01:25:04 +00:00
docker context rm tls-environment || true
echo "Please review multi-arch manifests are present:"
2021-09-22 17:53:00 +00:00
docker buildx imagetools inspect "$CI_REGISTRY_IMAGE${tag}"
2021-09-23 01:59:55 +00:00
win-dev-build:
stage: dev-deployment
2021-09-23 01:59:55 +00:00
tags:
2022-03-23 02:32:41 +00:00
- win64
2021-09-23 01:59:55 +00:00
cache:
paths:
- .venv/
rules:
2022-03-23 02:32:41 +00:00
- if: "$CI_COMMIT_BRANCH == 'dev'"
2021-09-23 01:59:55 +00:00
environment:
name: development
script:
2022-03-23 02:32:41 +00:00
- |
$ErrorActionPreference = "Stop"
py -m venv .venv
.venv\Scripts\activate.ps1
pip install pyinstaller
pip install -r requirements.txt
- pyinstaller -F main.py
--distpath .
--icon app\frontend\static\assets\images\Crafty_4-0_Logo_square.ico
--name "crafty_commander"
--paths .venv\Lib\site-packages
--hidden-import cryptography
--hidden-import cffi
--hidden-import apscheduler
--collect-all tzlocal
--collect-all tzdata
--collect-all pytz
--collect-all six
2022-03-23 02:41:19 +00:00
# Download latest:
2022-04-13 22:58:27 +00:00
# | https://gitlab.com/crafty-controller/crafty-4/-/jobs/artifacts/dev/download?job=win-dev-build
2021-09-23 01:59:55 +00:00
artifacts:
name: "crafty-${CI_RUNNER_TAGS}-${CI_COMMIT_BRANCH}_${CI_COMMIT_SHORT_SHA}"
2021-09-23 01:59:55 +00:00
paths:
2022-03-23 02:32:41 +00:00
- app\
- .\crafty_commander.exe
exclude:
2022-03-23 02:32:41 +00:00
- app\classes\**\*
2022-03-23 02:41:19 +00:00
2021-09-23 01:59:55 +00:00
win-prod-build:
stage: prod-deployment
2021-09-23 01:59:55 +00:00
tags:
2022-03-23 02:32:41 +00:00
- win64
2021-09-23 01:59:55 +00:00
cache:
paths:
- .venv/
rules:
2022-03-23 02:32:41 +00:00
- if: "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH"
2021-09-23 01:59:55 +00:00
environment:
name: production
script:
2022-03-23 02:32:41 +00:00
- |
$ErrorActionPreference = "Stop"
py -m venv .venv
.venv\Scripts\activate.ps1
pip install pyinstaller
pip install -r requirements.txt
- pyinstaller -F main.py
--distpath .
--icon app\frontend\static\assets\images\Crafty_4-0_Logo_square.ico
--name "crafty_commander"
--paths .venv\Lib\site-packages
--hidden-import cryptography
--hidden-import cffi
--hidden-import apscheduler
--collect-all tzlocal
--collect-all tzdata
--collect-all pytz
--collect-all six
2022-03-23 02:41:19 +00:00
# Download latest:
2022-04-13 22:58:27 +00:00
# | https://gitlab.com/crafty-controller/crafty-4/-/jobs/artifacts/master/download?job=win-prod-build
2021-09-23 01:59:55 +00:00
artifacts:
name: "crafty-${CI_RUNNER_TAGS}-${CI_COMMIT_BRANCH}_${CI_COMMIT_SHORT_SHA}"
2021-09-23 01:59:55 +00:00
paths:
2022-03-23 02:32:41 +00:00
- app\
- .\crafty_commander.exe
exclude:
2022-03-23 02:32:41 +00:00
- app\classes\**\*
sast:
variables:
SAST_EXCLUDED_PATHS: spec, test, tests, tmp, migrations, vendors
SAST_BANDIT_EXCLUDED_PATHS: "'*/migrations/*, */vendors/*'"
SAST_EXCLUDED_ANALYZERS: semgrep
stage: test
tags:
- docker
secret_detection:
variables:
SECRET_DETECTION_EXCLUDED_PATHS: migrations, vendors
tags:
- docker
gemnasium-dependency_scanning:
tags:
- docker
gemnasium-python-dependency_scanning:
tags:
- docker
include:
2022-06-10 13:45:48 +00:00
- local: ./.gitlab/lint.yml
- template: Security/Dependency-Scanning.gitlab-ci.yml
- template: Security/SAST.gitlab-ci.yml
- template: Security/Secret-Detection.gitlab-ci.yml