11#  Change pip's cache directory to be inside the project directory since we can
22#  only cache local items.
3+ 
4+ stages :
5+   - lint    #  Fastest check first
6+   - test    #  Then test
7+   - build   #  build package and documentation when verified correct
8+ 
39variables :
410  PIP_CACHE_DIR : " $CI_PROJECT_DIR/.cache/pip" 
511
@@ -24,13 +30,13 @@ test:
2430    - python --version 
2531    #  Install dependencies
2632    - python -m pip install --upgrade pip setuptools 
27-     - python -m pip install --editable " .[dev]"  
33+     - python -m pip install --editable .[dev] 
2834  script :
2935    #  Run pytest
3036    - python -m pytest -v --durations=0 
3137
3238cffconvert :
33-   stage : test 
39+   stage : lint 
3440  image :
3541    name : " citationcff/cffconvert:2.0.0" 
3642    entrypoint : [""] 
@@ -46,7 +52,7 @@ cffconvert:
4652    - cffconvert --validate 
4753
4854markdown-link-check :
49-   stage : test 
55+   stage : lint 
5056  image :
5157    name : " lycheeverse/lychee" 
5258    entrypoint : [""] 
@@ -57,3 +63,64 @@ markdown-link-check:
5763    - if : $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH 
5864  script :
5965    - lychee . 
66+ 
67+ lint :
68+   stage : lint 
69+   image : " python:3.12" 
70+   rules :
71+     #  Run on a Merge Request to the default branch
72+     - if : $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH 
73+     #  Run on new commits to the default branch
74+     - if : $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH 
75+   before_script :
76+     #  Python info
77+     - which python 
78+     - python --version 
79+     #  Install dependencies
80+     - python -m pip install ruff 
81+   script :
82+     #  Run pytest
83+     - ruff check 
84+     - ruff format --check 
85+ 
86+ build :
87+   stage : build 
88+   image : " python:$VERSION" 
89+   rules :
90+     #  Run on a Merge Request to the default branch
91+     - if : $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH 
92+     #  Run on new commits to the default branch
93+     - if : $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH 
94+   parallel :
95+     matrix :
96+       - VERSION : ['3.8', '3.9', '3.10', '3.11', '3.12'] 
97+   before_script :
98+     #  Python info
99+     - which python 
100+     - python --version 
101+     #  Install dependencies
102+     - python -m pip install --upgrade pip setuptools 
103+     - python -m pip install --editable .[publishing] 
104+   script :
105+     #  Run pytest
106+     - python -m build 
107+ 
108+ documentation :
109+   stage : build 
110+   image : " python:3.12" 
111+   rules :
112+     #  Run on a Merge Request to the default branch
113+     - if : $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == $CI_DEFAULT_BRANCH 
114+     #  Run on new commits to the default branch
115+     - if : $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH 
116+   before_script :
117+     #  Python info
118+     - which python 
119+     - python --version 
120+     #  Install dependencies
121+     - python -m pip install .[docs] 
122+     - sudo apt install pandoc 
123+   script :
124+     #  Run pytest
125+     - cd docs 
126+     - make coverage doctest html 
0 commit comments