mirror of
https://gitlab.com/crafty-controller/crafty-4.git
synced 2024-08-30 18:23:09 +00:00
e259d5c3d7
Kudos to Robbert Müller https://gitlab.com/mjrider For implimenting my request to include the gitlab plugin for pylint This means we don't have to waste time installing anything
248 lines
8.0 KiB
YAML
248 lines
8.0 KiB
YAML
# Crafty Controller 4.0 - Lint & Build Pipes
|
|
# [Maintainer: Zedifus(https://gitlab.com/Zedifus)]
|
|
###################################################
|
|
# yamllint disable rule:line-length
|
|
---
|
|
stages:
|
|
- lint
|
|
- prod-deployment
|
|
- dev-deployment
|
|
|
|
variables:
|
|
DOCKER_HOST: tcp://docker:2376
|
|
DOCKER_TLS_CERTDIR: "/certs"
|
|
|
|
yamllint:
|
|
stage: lint
|
|
image: registry.gitlab.com/pipeline-components/yamllint:latest
|
|
tags:
|
|
- "docker"
|
|
rules:
|
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
|
- if: "$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS"
|
|
when: never
|
|
script:
|
|
- yamllint .
|
|
|
|
jsonlint:
|
|
stage: lint
|
|
image: registry.gitlab.com/pipeline-components/jsonlint:latest
|
|
tags:
|
|
- "docker"
|
|
rules:
|
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
|
- if: "$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS"
|
|
when: never
|
|
script:
|
|
- |
|
|
find . -not -path './.git/*' -name '*.json' -type f -print0 |
|
|
parallel --will-cite -k -0 -n1 jsonlint -q
|
|
|
|
black:
|
|
stage: lint
|
|
image: registry.gitlab.com/pipeline-components/black:latest
|
|
tags:
|
|
- "docker"
|
|
rules:
|
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
|
- if: "$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS"
|
|
when: never
|
|
script:
|
|
- black --check --verbose -- .
|
|
|
|
pylint:
|
|
stage: lint
|
|
image: registry.gitlab.com/pipeline-components/pylint:latest
|
|
tags:
|
|
- "docker"
|
|
rules:
|
|
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
|
|
- if: "$CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS"
|
|
when: never
|
|
# before_script:
|
|
# - mkdir -p public/badges public/lint
|
|
# - echo undefined > public/badges/$CI_JOB_NAME.score
|
|
script:
|
|
# - pylint --exit-zero --output-format=text $(find -type f -name "*.py" ! -path "**/.venv/**" ! -path "**/app/migrations/**") | tee /tmp/pylint.txt
|
|
# - sed -n 's/^Your code has been rated at \([-0-9.]*\)\/.*/\1/p' /tmp/pylint.txt > public/badges/$CI_JOB_NAME.score
|
|
- pylint --exit-zero --output-format=pylint_gitlab.GitlabCodeClimateReporter $(find -type f -name "*.py" ! -path "**/.venv/**" ! -path "**/app/migrations/**") > codeclimate.json
|
|
# after_script:
|
|
# - anybadge --overwrite --label $CI_JOB_NAME --value=$(cat public/badges/$CI_JOB_NAME.score) --file=public/badges/$CI_JOB_NAME.svg 4=red 6=orange 8=yellow 10=green
|
|
# - |
|
|
# echo "Your score is: $(cat public/badges/$CI_JOB_NAME.score)"
|
|
# Removed lint badge generation until public release
|
|
artifacts:
|
|
paths:
|
|
- public
|
|
reports:
|
|
codequality: codeclimate.json
|
|
when: always
|
|
|
|
docker-build-dev:
|
|
image: docker:latest
|
|
services:
|
|
- name: docker:dind
|
|
stage: dev-deployment
|
|
tags:
|
|
- "docker_priv"
|
|
rules:
|
|
- if: $CI_COMMIT_BRANCH == 'dev'
|
|
environment:
|
|
name: development
|
|
before_script:
|
|
- |
|
|
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
|
|
- echo $CI_BUILD_TOKEN | docker login -u "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY
|
|
script:
|
|
- |
|
|
tag=":$CI_COMMIT_REF_SLUG"
|
|
echo "Running on branch '$CI_COMMIT_BRANCH': tag = $tag"
|
|
- docker context create tls-environment
|
|
- docker buildx create --name zedBuilder --use tls-environment
|
|
- docker buildx build
|
|
--cache-from type=registry,ref="$CI_REGISTRY_IMAGE${tag}"
|
|
--build-arg BUILDKIT_INLINE_CACHE=1
|
|
--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."
|
|
docker context rm tls-environment || true
|
|
echo "Please review multi-arch manifests are present:"
|
|
docker buildx imagetools inspect "$CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG"
|
|
|
|
docker-build-prod:
|
|
image: docker:latest
|
|
services:
|
|
- name: docker:dind
|
|
stage: prod-deployment
|
|
tags:
|
|
- "docker_priv"
|
|
rules:
|
|
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
|
|
environment:
|
|
name: production
|
|
before_script:
|
|
- |
|
|
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
|
|
- echo $CI_BUILD_TOKEN | docker login -u "$CI_REGISTRY_USER" --password-stdin $CI_REGISTRY
|
|
script:
|
|
- |
|
|
tag=""
|
|
echo "Running on default branch '$CI_DEFAULT_BRANCH': tag = 'latest'"
|
|
- docker context create tls-environment
|
|
- docker buildx create --name zedBuilder --use tls-environment
|
|
- docker buildx build
|
|
--cache-from type=registry,ref="$CI_REGISTRY_IMAGE${tag}"
|
|
--build-arg BUILDKIT_INLINE_CACHE=1
|
|
--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."
|
|
docker context rm tls-environment || true
|
|
echo "Please review multi-arch manifests are present:"
|
|
docker buildx imagetools inspect "$CI_REGISTRY_IMAGE${tag}"
|
|
|
|
win-dev-build:
|
|
stage: dev-deployment
|
|
tags:
|
|
- win64
|
|
cache:
|
|
paths:
|
|
- .venv/
|
|
rules:
|
|
- if: "$CI_COMMIT_BRANCH == 'dev'"
|
|
environment:
|
|
name: development
|
|
script:
|
|
- |
|
|
$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
|
|
|
|
# Download latest:
|
|
# | https://gitlab.com/crafty-controller/crafty-commander/-/jobs/artifacts/dev/download?job=win-dev-build
|
|
artifacts:
|
|
name: "crafty-${CI_RUNNER_TAGS}-${CI_COMMIT_BRANCH}_${CI_COMMIT_SHORT_SHA}"
|
|
paths:
|
|
- app\
|
|
- .\crafty_commander.exe
|
|
exclude:
|
|
- app\classes\**\*
|
|
|
|
win-prod-build:
|
|
stage: prod-deployment
|
|
tags:
|
|
- win64
|
|
cache:
|
|
paths:
|
|
- .venv/
|
|
rules:
|
|
- if: "$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH"
|
|
environment:
|
|
name: production
|
|
script:
|
|
- |
|
|
$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
|
|
|
|
# Download latest:
|
|
# | https://gitlab.com/crafty-controller/crafty-commander/-/jobs/artifacts/master/download?job=win-prod-build
|
|
artifacts:
|
|
name: "crafty-${CI_RUNNER_TAGS}-${CI_COMMIT_BRANCH}_${CI_COMMIT_SHORT_SHA}"
|
|
paths:
|
|
- app\
|
|
- .\crafty_commander.exe
|
|
exclude:
|
|
- app\classes\**\*
|