summaryrefslogtreecommitdiff
path: root/.gitlab-ci.yml
blob: 1cb51ee29b1b3c69447992bf055be051fe49da8d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
variables:
  GIT_SUBMODULE_STRATEGY: recursive

stages:
  - build
  - test
  - docs
  - publish

build:archlinux:
  stage: build
  image: "registry.gitlab.com/gerbolyze/build-containers/archlinux:latest"
  variables:
    GIT_SUBMODULE_STRATEGY: none
  script:
    - git config --global --add safe.directory "$CI_PROJECT_DIR"
    - pip3 install --user wheel setuptools
    - python3 setup.py sdist bdist_wheel
  artifacts:
    name: "gerbolyze-$CI_COMMIT_REF_NAME-gerbonara"
    paths:
      - dist/*

test:archlinux:
  stage: test
  image: "registry.gitlab.com/gerbolyze/build-containers/archlinux:latest"
  script:
    - git clone --depth 1 https://gitlab.com/kicad/libraries/kicad-symbols
    - git clone --depth 1 https://gitlab.com/kicad/libraries/kicad-footprints
    - env KICAD_SYMBOLS=kicad-symbols KICAD_FOOTPRINTS=kicad-footprints pytest -o 'testpaths=gerbonara/tests' -o 'norecursedirs=*'
  dependencies:
    - build:archlinux
  cache:
    key: test-image-cache
    paths:
      - gerbonara/tests/image_cache/*.svg
      - gerbonara/tests/image_cache/*.png
  artifacts:
    name: "gerbolyze-$CI_COMMIT_REF_NAME-gerbonara"
    when: on_failure
    paths:
      - gerbonara_test_failures/*

test:ubuntu2204:
  stage: test
  image: "registry.gitlab.com/gerbolyze/build-containers/ubuntu:22.04"
  script:
    - python3 -m pip install pytest beautifulsoup4 pillow numpy slugify lxml click scipy
    - git clone --depth 1 https://gitlab.com/kicad/libraries/kicad-symbols
    - git clone --depth 1 https://gitlab.com/kicad/libraries/kicad-footprints
    - env KICAD_SYMBOLS=kicad-symbols KICAD_FOOTPRINTS=kicad-footprints python3 -m pytest -o 'testpaths=gerbonara/tests' -o 'norecursedirs=*'
  dependencies:
    - build:archlinux
  cache:
    key: test-image-cache
    paths:
      - gerbonara/tests/image_cache/*.svg
      - gerbonara/tests/image_cache/*.png
  artifacts:
    name: "gerbolyze-$CI_COMMIT_REF_NAME-gerbonara"
    when: on_failure
    paths:
      - gerbonara_test_failures/*

docs:archlinux:
  stage: test
  image: "registry.gitlab.com/gerbolyze/build-containers/archlinux:latest"
  script:
    - git config --global --add safe.directory "$CI_PROJECT_DIR"
    - sphinx-build -E docs docs/_build
  dependencies:
    - build:archlinux
  artifacts:
    name: "docs-gerbonara-$CI_COMMIT_REF_NAME"
    paths:
      - docs/_build

publish:gerbonara:
  stage: publish
  variables:
    GIT_SUBMODULE_STRATEGY: none
  image: "registry.gitlab.com/gerbolyze/build-containers/archlinux:latest"
  cache: {}
  script:
    - export TWINE_USERNAME TWINE_PASSWORD
    - pip3 install --user twine rich
    - twine upload dist/*
  dependencies:
    - build:archlinux
  only:
    - /^v.*$/

pages:
  stage: publish
  variables:
    GIT_SUBMODULE_STRATEGY: none
  image: "registry.gitlab.com/gerbolyze/build-containers/archlinux:latest"
  script:
    - git config --global --add safe.directory "$CI_PROJECT_DIR"
    - sphinx-build -E docs public
  dependencies:
    - build:archlinux
  artifacts:
    paths:
      - public
  only:
    - /^v.*$/