466 lines
13 KiB
YAML
466 lines
13 KiB
YAML
---
|
|
|
|
variables:
|
|
MY_PROJECT_ID: "13001358"
|
|
|
|
|
|
include:
|
|
|
|
- local: .gitlab/project_docs.gitlab-ci.yml
|
|
|
|
- project: nofusscomputing/projects/gitlab-ci
|
|
ref: development
|
|
file:
|
|
- .gitlab-ci_common.yaml
|
|
- template/automagic.gitlab-ci.yaml
|
|
|
|
|
|
|
|
Get Project Documentation:
|
|
extends: .fetch_project_docs
|
|
parallel:
|
|
matrix:
|
|
|
|
- ASSEMBLE_PROJECT_NAME: centurion
|
|
ASSEMBLE_PROJECT_ID: 59504579
|
|
ASSEMBLE_PROJECT_PATH: projects/ansible/collection/centurion
|
|
|
|
- ASSEMBLE_PROJECT_NAME: firewall
|
|
ASSEMBLE_PROJECT_ID: 51640016
|
|
ASSEMBLE_PROJECT_PATH: projects/ansible/collection/firewall
|
|
|
|
- ASSEMBLE_PROJECT_NAME: django_template
|
|
ASSEMBLE_PROJECT_ID: 57560288
|
|
ASSEMBLE_PROJECT_PATH: projects/centurion_erp
|
|
|
|
- ASSEMBLE_PROJECT_NAME: kubernetes
|
|
ASSEMBLE_PROJECT_ID: 51640029
|
|
ASSEMBLE_PROJECT_PATH: projects/ansible/collection/kubernetes
|
|
|
|
- ASSEMBLE_PROJECT_NAME: netbox
|
|
ASSEMBLE_PROJECT_ID: 56568566
|
|
ASSEMBLE_PROJECT_PATH: projects/ansible/collection/netbox
|
|
|
|
- ASSEMBLE_PROJECT_NAME: phpipam_scan_agent
|
|
ASSEMBLE_PROJECT_ID: 55052132
|
|
ASSEMBLE_PROJECT_PATH: projects/ansible/collection/phpipam_scan_agent
|
|
|
|
- ASSEMBLE_PROJECT_NAME: gitlab-ci
|
|
ASSEMBLE_PROJECT_ID: 28543717
|
|
ASSEMBLE_PROJECT_PATH: projects/gitlab-ci
|
|
|
|
- ASSEMBLE_PROJECT_NAME: operations
|
|
ASSEMBLE_PROJECT_ID: 32419575
|
|
ASSEMBLE_PROJECT_PATH: operations
|
|
|
|
- ASSEMBLE_PROJECT_NAME: git_configuration
|
|
ASSEMBLE_PROJECT_ID: 45705596
|
|
ASSEMBLE_PROJECT_PATH: projects/ansible/roles/git_configuration
|
|
|
|
- ASSEMBLE_PROJECT_NAME: docker-bind
|
|
ASSEMBLE_PROJECT_ID: 52098058
|
|
ASSEMBLE_PROJECT_PATH: projects/docker/bind
|
|
|
|
- ASSEMBLE_PROJECT_NAME: docker-mail
|
|
ASSEMBLE_PROJECT_ID: 33611657
|
|
ASSEMBLE_PROJECT_PATH: projects/docker-mail
|
|
|
|
- ASSEMBLE_PROJECT_NAME: execution_environment
|
|
ASSEMBLE_PROJECT_ID: 45741845
|
|
ASSEMBLE_PROJECT_PATH: projects/ansible/execution_environment
|
|
|
|
- ASSEMBLE_PROJECT_NAME: ldap_self_service
|
|
ASSEMBLE_PROJECT_ID: 48321671
|
|
ASSEMBLE_PROJECT_PATH: projects/ldap_self_service
|
|
|
|
- ASSEMBLE_PROJECT_NAME: docker-glpi
|
|
ASSEMBLE_PROJECT_ID: 12928828
|
|
ASSEMBLE_PROJECT_PATH: projects/glpi
|
|
|
|
- ASSEMBLE_PROJECT_NAME: kubernetes_monitoring
|
|
ASSEMBLE_PROJECT_ID: 50510268
|
|
ASSEMBLE_PROJECT_PATH: projects/kubernetes_monitoring
|
|
|
|
- ASSEMBLE_PROJECT_NAME: ansible_playbooks
|
|
ASSEMBLE_PROJECT_ID: 46364551
|
|
ASSEMBLE_PROJECT_PATH: projects/ansible/playbooks
|
|
|
|
- ASSEMBLE_PROJECT_NAME: common
|
|
ASSEMBLE_PROJECT_ID: 52226103
|
|
ASSEMBLE_PROJECT_PATH: projects/ansible/roles/common
|
|
|
|
- ASSEMBLE_PROJECT_NAME: homeassistant
|
|
ASSEMBLE_PROJECT_ID: 51020674
|
|
ASSEMBLE_PROJECT_PATH: projects/ansible/roles/homeassistant
|
|
|
|
- ASSEMBLE_PROJECT_NAME: itil_runbooks
|
|
ASSEMBLE_PROJECT_ID: 54680811
|
|
ASSEMBLE_PROJECT_PATH: projects/itil/runbooks
|
|
|
|
# - ASSEMBLE_PROJECT_NAME:
|
|
# ASSEMBLE_PROJECT_ID:
|
|
# ASSEMBLE_PROJECT_PATH:
|
|
|
|
|
|
Documentation.Lint:
|
|
rules:
|
|
- when: never
|
|
|
|
|
|
Documentation.Build:
|
|
rules:
|
|
- when: never
|
|
|
|
|
|
Website.Lint:
|
|
extends: .Lint_Markdown_Docs
|
|
variables:
|
|
MDLINT_PATHS: "pages/*.md pages/**/*.md pages/**/**/*.md pages/**/**/**/*.md pages/**/**/**/**/**/*.md #CHANGELOG.md !gitlab-ci !website-template"
|
|
|
|
rules:
|
|
- if: '$JOB_STOP_LINT_MARKDOWN_DOCS'
|
|
when: never
|
|
|
|
- if: # condition_git_tag
|
|
$CI_COMMIT_TAG != null &&
|
|
$CI_COMMIT_BRANCH == null
|
|
exists:
|
|
- '{docs/**,pages/**}/*.md'
|
|
when: always
|
|
|
|
- if: # condition_master_branch_push
|
|
$CI_COMMIT_BRANCH == "master" &&
|
|
$CI_PIPELINE_SOURCE == "push"
|
|
exists:
|
|
- '{docs/**,pages/**}/*.md'
|
|
when: always
|
|
|
|
- if: # condition_dev_branch_push
|
|
$CI_COMMIT_BRANCH &&
|
|
(
|
|
$CI_PIPELINE_SOURCE == "api"
|
|
||
|
|
$CI_PIPELINE_SOURCE == "pipeline"
|
|
||
|
|
$CI_PIPELINE_SOURCE == "push"
|
|
||
|
|
$CI_PIPELINE_SOURCE == "schedule"
|
|
)
|
|
# See nofusscomputing/projects/gitlab-ci#34 for extra $CI_PIPELINE_SOURCE
|
|
exists:
|
|
- '{docs/**,pages/**}/*.md'
|
|
# No changes check # See nofusscomputing/projects/gitlab-ci#34
|
|
# changes:
|
|
# paths:
|
|
# - '{docs/**,pages/**}/*.md'
|
|
# compare_to: 'master'
|
|
when: always
|
|
|
|
- if: # condition_not_master_or_dev_push
|
|
$CI_COMMIT_BRANCH != "master" &&
|
|
$CI_COMMIT_BRANCH != "development" &&
|
|
$CI_PIPELINE_SOURCE == "push"
|
|
exists:
|
|
- '{docs/**,pages/**}/*.md' # works
|
|
changes:
|
|
paths:
|
|
#- '{docs/*,pages/*}*.md'
|
|
- '{docs/**,pages/**}/*.md'
|
|
compare_to: 'development'
|
|
when: always
|
|
|
|
- when: never
|
|
|
|
|
|
Website.Build:
|
|
extends: .MKDocs_Build
|
|
needs: [ 'Website.Lint' ]
|
|
resource_group: build
|
|
rules:
|
|
|
|
- if: '$JOB_STOP_MKDOCS_BUILD'
|
|
when: never
|
|
|
|
- if: # condition_git_tag
|
|
$CI_COMMIT_TAG != null &&
|
|
$CI_COMMIT_BRANCH == null
|
|
exists:
|
|
- 'mkdocs.{yaml,yml}'
|
|
when: always
|
|
|
|
# - if: # condition_master_branch_push
|
|
# $CI_COMMIT_BRANCH == "master" &&
|
|
# $CI_PIPELINE_SOURCE == "push"
|
|
# exists:
|
|
# - 'mkdocs.{yaml,yml}'
|
|
# when: always
|
|
|
|
- if: # condition_dev_branch_push
|
|
$CI_COMMIT_BRANCH &&
|
|
(
|
|
$CI_PIPELINE_SOURCE == "api"
|
|
||
|
|
$CI_PIPELINE_SOURCE == "pipeline"
|
|
||
|
|
$CI_PIPELINE_SOURCE == "push"
|
|
||
|
|
$CI_PIPELINE_SOURCE == "schedule"
|
|
)
|
|
# See nofusscomputing/projects/gitlab-ci#34 for extra $CI_PIPELINE_SOURCE
|
|
exists:
|
|
- 'mkdocs.{yaml,yml}'
|
|
# No changes check # See nofusscomputing/projects/gitlab-ci#34
|
|
# changes:
|
|
# paths:
|
|
# - '{docs/**,pages/**}/*.md'
|
|
# compare_to: 'master'
|
|
when: always
|
|
|
|
- if: # condition_not_master_or_dev_push
|
|
$CI_COMMIT_BRANCH != "master" &&
|
|
$CI_COMMIT_BRANCH != "development" &&
|
|
$CI_PIPELINE_SOURCE == "push"
|
|
exists:
|
|
- 'mkdocs.{yaml,yml}'
|
|
changes:
|
|
paths:
|
|
- '{docs/**,pages/**}/*.md'
|
|
compare_to: 'development'
|
|
when: always
|
|
|
|
- when: never
|
|
|
|
|
|
Merge Project Docs:
|
|
extends: .merge_project_docs
|
|
needs:
|
|
- job: Get Project Documentation
|
|
artifacts: true
|
|
- job: Website.Build
|
|
artifacts: true
|
|
|
|
|
|
|
|
|
|
pages:
|
|
stage: deploy
|
|
variables:
|
|
GIT_STRATEGY: none
|
|
script:
|
|
- |
|
|
if [ -d "$CI_PROJECT_DIR/artifacts/prepare/Merge.Project.Docs/build" ]; then
|
|
|
|
mv "$CI_PROJECT_DIR/artifacts/prepare/Merge.Project.Docs/build" public;
|
|
|
|
else
|
|
|
|
mv "$CI_PROJECT_DIR/artifacts/build/Website.Build/build" public;
|
|
|
|
fi
|
|
needs:
|
|
- job: Website.Build
|
|
artifacts: true
|
|
- job: 'Merge Project Docs'
|
|
optional: true
|
|
environment:
|
|
name: Gitlab Pages
|
|
url: $CI_PAGES_URL
|
|
artifacts:
|
|
paths:
|
|
- public
|
|
rules:
|
|
# - if: '$CI_COMMIT_BRANCH && $CI_COMMIT_BRANCH != "master" && $CI_PIPELINE_SOURCE == "push"'
|
|
# when: on_success
|
|
|
|
# Build docs on tag so they can be downloaded from the tag job and are always available.
|
|
- if: # condition_git_tag
|
|
$CI_COMMIT_TAG != null &&
|
|
$CI_COMMIT_BRANCH == null
|
|
exists:
|
|
- '{docs/**,pages/**}/*.md'
|
|
when: on_success
|
|
|
|
- if: # condition_master_branch_push
|
|
$CI_COMMIT_BRANCH == "master" &&
|
|
$CI_PIPELINE_SOURCE == "push"
|
|
exists:
|
|
- '{docs/**,pages/**}/*.md'
|
|
when: on_success
|
|
|
|
- if: # condition_dev_branch_push
|
|
$CI_COMMIT_BRANCH == "development" &&
|
|
(
|
|
$CI_PIPELINE_SOURCE == "pipeline"
|
|
||
|
|
$CI_PIPELINE_SOURCE == "push"
|
|
||
|
|
$CI_PIPELINE_SOURCE == "schedule"
|
|
)
|
|
# See nofusscomputing/projects/gitlab-ci#34 for extra $CI_PIPELINE_SOURCE
|
|
exists:
|
|
- '{docs/**,pages/**}/*.md'
|
|
# No changes check # See nofusscomputing/projects/gitlab-ci#34
|
|
# changes:
|
|
# paths:
|
|
# - '{docs/**,pages/**}/*.md'
|
|
# compare_to: 'master'
|
|
when: on_success
|
|
|
|
- if: # condition_not_master_or_dev_push
|
|
$CI_COMMIT_BRANCH != "master" &&
|
|
$CI_COMMIT_BRANCH != "development" &&
|
|
$CI_PIPELINE_SOURCE == "push"
|
|
exists:
|
|
- '{docs/**,pages/**}/*.md'
|
|
changes:
|
|
paths:
|
|
- '{docs/**,pages/**}/*.md'
|
|
compare_to: 'development'
|
|
when: on_success
|
|
|
|
- when: never
|
|
|
|
|
|
.Pytest_template:
|
|
stage: test
|
|
image: ubuntu:18.04
|
|
before_script:
|
|
- mkdir -p "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME"
|
|
- mkdir -p "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/tests"
|
|
- apt update
|
|
- apt install -y python3 python3-pip ca-certificates
|
|
- apt install --no-install-recommends -y chromium-chromedriver
|
|
- pip3 install --upgrade pip
|
|
- pip3 install -r test/requirements.txt
|
|
artifacts:
|
|
expire_in: 24 hrs
|
|
when: always
|
|
paths:
|
|
- "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/*"
|
|
reports:
|
|
junit:
|
|
- "*.junit.xml"
|
|
rules:
|
|
# - if: '$CI_COMMIT_BRANCH && $CI_PIPELINE_SOURCE == "push"'
|
|
# when: on_success
|
|
|
|
# Build docs on tag so they can be downloaded from the tag job and are always available.
|
|
- if: # condition_git_tag
|
|
$CI_COMMIT_TAG != null &&
|
|
$CI_COMMIT_BRANCH == null
|
|
exists:
|
|
- '{docs/**,pages/**}/*.md'
|
|
when: on_success
|
|
|
|
- if: # condition_master_branch_push
|
|
$CI_COMMIT_BRANCH == "master" &&
|
|
$CI_PIPELINE_SOURCE == "push"
|
|
exists:
|
|
- '{docs/**,pages/**}/*.md'
|
|
when: on_success
|
|
|
|
- if: # condition_dev_branch_push
|
|
$CI_COMMIT_BRANCH == "development" &&
|
|
(
|
|
$CI_PIPELINE_SOURCE == "pipeline"
|
|
||
|
|
$CI_PIPELINE_SOURCE == "push"
|
|
||
|
|
$CI_PIPELINE_SOURCE == "schedule"
|
|
)
|
|
# See nofusscomputing/projects/gitlab-ci#34 for extra $CI_PIPELINE_SOURCE
|
|
exists:
|
|
- '{docs/**,pages/**}/*.md'
|
|
|
|
# No changes check # See nofusscomputing/projects/gitlab-ci#34
|
|
# changes:
|
|
# paths:
|
|
# - '{docs/**,pages/**}/*.md'
|
|
# compare_to: 'master'
|
|
when: on_success
|
|
|
|
- if: # condition_not_master_or_dev_push
|
|
$CI_COMMIT_BRANCH != "master" &&
|
|
$CI_COMMIT_BRANCH != "development" &&
|
|
$CI_PIPELINE_SOURCE == "push"
|
|
exists:
|
|
- '{docs/**,pages/**}/*.md'
|
|
changes:
|
|
paths:
|
|
- '{docs/**,pages/**}/*.md'
|
|
compare_to: 'development'
|
|
when: on_success
|
|
|
|
- when: never
|
|
|
|
|
|
Unit Tests:
|
|
extends: .Pytest_template
|
|
needs: [ 'Website.Build' ]
|
|
script:
|
|
- mv "$CI_PROJECT_DIR/artifacts/build/Website.Build/build" build
|
|
- pytest --verbose --junitxml=unit_test.junit.xml --tb=line test/unit
|
|
- cp *.junit.xml "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/"
|
|
- echo "[DEBUG] python_exit[$python_exit]"
|
|
|
|
|
|
#Integration Tests:
|
|
# extends: .Pytest_template
|
|
# needs:
|
|
# - pages
|
|
# - 'Unit Tests'
|
|
# script:
|
|
# - echo "placeholder job for integration tests" > "$CI_PROJECT_DIR/artifacts/$CI_JOB_STAGE/$CI_JOB_NAME/DETEMEME.txt"
|
|
|
|
|
|
public_website:
|
|
stage: publish
|
|
image: alpine
|
|
variables:
|
|
GIT_STRATEGY: none
|
|
before_script:
|
|
- ls -la /html
|
|
script:
|
|
- rm -rf /html/*
|
|
- cp -r "$CI_PROJECT_DIR/artifacts/prepare/Merge.Project.Docs/build"/* /html/
|
|
- ls -laR /html/
|
|
needs: [ 'Merge Project Docs', 'Unit Tests']
|
|
resource_group: production
|
|
environment:
|
|
name: production
|
|
url: https://nofusscomputing.com
|
|
artifacts:
|
|
paths:
|
|
- public
|
|
rules:
|
|
- if: # condition_master_branch_push
|
|
$CI_COMMIT_BRANCH == "master" &&
|
|
$CI_PIPELINE_SOURCE == "push"
|
|
exists:
|
|
- '{docs/**,pages/**}/*.md'
|
|
when: on_success
|
|
|
|
- if: # condition_dev_branch_push
|
|
$CI_COMMIT_BRANCH == "development" &&
|
|
(
|
|
$CI_PIPELINE_SOURCE == "pipeline"
|
|
||
|
|
$CI_PIPELINE_SOURCE == "push"
|
|
||
|
|
$CI_PIPELINE_SOURCE == "schedule"
|
|
)
|
|
# See nofusscomputing/projects/gitlab-ci#34 for extra $CI_PIPELINE_SOURCE
|
|
exists:
|
|
- '{docs/**,pages/**}/*.md'
|
|
# No changes check # See nofusscomputing/projects/gitlab-ci#34
|
|
# changes:
|
|
# paths:
|
|
# - '{docs/**,pages/**}/*.md'
|
|
# compare_to: 'master'
|
|
allow_failure: true
|
|
when: manual
|
|
- when: never
|
|
tags:
|
|
- production
|
|
- website
|