Files
website/.gitlab-ci.yml

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