Skip to content
Snippets Groups Projects
Verified Commit b28f541e authored by Romain Deville's avatar Romain Deville
Browse files

:construction_worker:‍ Add base gitlab-ci

Add repo level of gitlab CI which basically :

  - Set CI base
  - Include docs CI
  - Test python and shell formatting
parent d9066397
No related branches found
No related tags found
No related merge requests found
---
# GLOBAL CONFIGURATION
# =============================================================================
# YAML Anchors
# -----------------------------------------------------------------------------
# This CI file haevily make use of YAML anchors for multiple reasons:
# - Avoid writing twice the same block of codes
# - Resuse block of codes
# - Make the CI more generic and easily extensible or modifiable
# See https://docs.gitlab.com/ee/ci/yaml/README.html#anchors
# Define base workflow
# https://docs.gitlab.com/ee/ci/yaml/README.html#workflow
workflow:
rules:
# Do not run CI when commit title have
# WIP, NO-CI or 🚧 (gitmoji for "work in progress", aka :construction:)
- if: |
$CI_COMMIT_TITLE =~ /.*WIP.*/ ||
$CI_COMMIT_TITLE =~ /.*NO-CI.*/ ||
$CI_COMMIT_TITLE =~ /.*🚧.*/
when: never
# Run the CI otherwise (depending on `only/except` key per jobs)
- when: always
### BEGIN MKDOCS TEMPLATE ###
### WARNING, DO NOT UPDATE CONTENT BETWEEN MKDOCS TEMPLATE TAG ! ###
### Modified content will be overwritten when updating. ###
# Include other gitlab-ci.yml files
include:
- local: docs/.gitlab-ci.yml
### END MKDOCS TEMPLATE ###
# Stages jobs will pass through with anchors to avoid updating stage in multiple
# place within this file. Now renaming a stage can be done directly after the
# anchor name below.
# https://docs.gitlab.com/ee/ci/yaml/README.html#stage
stages:
- &pre_test pre_test
- &test test
- &build build
- &deploy deploy
- &post_deploy post_deploy
# Global variables shared for all jobs
# https://docs.gitlab.com/ee/ci/yaml/README.html#variables
variables:
PIP_CACHE_DIR: "${CI_PROJECT_DIR}/.cache/pip"
# Images anchors
# -----------------------------------------------------------------------------
# https://docs.gitlab.com/ee/ci/yaml/README.html#image
# Basic docker image -> docker:latest image
.image_docker: &image_docker
image: docker:latest
# Before scripts anchors
# -----------------------------------------------------------------------------
# https://docs.gitlab.com/ee/ci/yaml/README.html#before_script
.before_script_python_dependencies: &before_script_python_dependencies
before_script:
# Add python dependencies
- apk update
# Install base package required for mkdocs builds
- apk add --no-cache --update-cache
build-base
python3-dev
py3-pip
py3-virtualenv
bash
git
gcc
# Create virtual environment
- virtualenv .venv
# Activate virtual environment
- source .venv/bin/activate
# Only anchors
# -----------------------------------------------------------------------------
# https://docs.gitlab.com/ee/ci/yaml/README.html#only
# List all names of refs that can be used with key (only|except):refs using
# anchors to avoid having to modify multiple times. Refs are:
# - Branches names based on git flow: https://danielkummer.github.io/git-flow-cheatsheet/
# - merge_requests (https://docs.gitlab.com/ee/ci/yaml/README.html#onlyexcept-basic)
# - tags (https://docs.gitlab.com/ee/ci/yaml/README.html#onlyexcept-basic)
.refs_names:
- &ref_release /release-*/
- &ref_feature /feature-*/
- &ref_hotfix /hotfix-*/
- &ref_bugfix /bugfix-*/
- &ref_develop develop
- &ref_master master
- &ref_merge_requests merge_requests
- &ref_tags tags
# Specify on which branch, tags or on merge_requests CI should be done.
# Jobs under only_dev anchor will be run if branch name are compliant with git
# flow branch which are not `develop` neither `master` and will be run on
# merge_request
.only_dev: &only_dev
only:
refs:
- *ref_release
- *ref_feature
- *ref_hotfix
- *ref_bugfix
- *ref_merge_requests
# Jobs under only_pre_prod anchor will be run on `develop` (i.e. pre-release)
# and `master` (release) branch.
.only_pre_prod: &only_pre_prod
only:
refs:
- *ref_develop
- *ref_master
# Jobs under only_prod anchor will be run on tagged commit.
.only_prod: &only_prod
only:
refs:
- *ref_tags
# Jobs under only_trigger anchor will be run on `develop` (i.e. pre-release)
# `master` (release) branch and tagged commit.
.only_trigger: &only_trigger
only:
refs:
- *ref_develop
- *ref_master
- *ref_tags
# Tag anchors
# -----------------------------------------------------------------------------
# https://docs.gitlab.com/ee/ci/yaml/README.html#tag
# Run jobs in regular docker
.tag_docker: &tag_docker
tags:
- docker
# Stages anchors
# -----------------------------------------------------------------------------
# https://docs.gitlab.com/ee/ci/yaml/README.html#stage
# This can be seen as overbloated while overuse of YAML anchors, but the
# advantage is that if we rename a stage, we will just need to rename it at the
# start of this CI.
.stage_pre_test: &stage_pre_test
stage: *pre_test
.stage_test: &stage_test
stage: *test
.stage_build: &stage_build
stage: *build
.stage_deploy: &stage_deploy
stage: *deploy
.stage_post_deploy: &stage_post_deploy
stage: *post_deploy
# =============================================================================
# CI JOBS
# =============================================================================
# Jobs in test stage
# -----------------------------------------------------------------------------
test_tox_format_python:
<<: *tag_docker
<<: *image_docker
<<: *stage_test
<<: *before_script_python_dependencies
script:
# Install python tox
- pip3 install tox
# Run tox
- tox -e format_python
test_tox_format_shell:
<<: *tag_docker
<<: *image_docker
<<: *stage_test
<<: *before_script_python_dependencies
script:
# Install python tox
- pip3 install tox
# Run tox
- tox -e format_shell
# *****************************************************************************
# VIM MODELINE
# vim: fdm=indent
# *****************************************************************************
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment