Skip to content

Commit

Permalink
Uniform circleCI and build_docs workflows across repositories (#266)
Browse files Browse the repository at this point in the history
# References and relevant issues
together with napari/napari#6417 closes #261

# Description


Diff:
```diff
diff .circleci/config.yml ../napari/.circleci/config.yml                                                     1 ↵
10c10
<           path: docs
---
>           path: napari
12,13c12,13
<           name: Clone main repo into a subdirectory
<           command: git clone git@github.com:napari/napari.git napari
---
>           name: Clone docs repo into a subdirectory
>           command: git clone git@github.com:napari/docs.git docs
```

```diff
diff .github/workflows/build_docs.yml ../napari/.github/workflows/build_docs.yml                             1 ↵
2c2
< # https://github.com/napari/napari/blob/main/.github/workflows/build_docs.yml
---
> # https://github.com/napari/docs/blob/main/.github/workflows/build_docs.yml
6c6
<   pull_request:
---
>   push:
8c8,10
<       - main
---
>       - docs
>     tags:
>       - 'v*'
9a12
>   workflow_call:
19a23
>           repository: napari/docs
25d28
<           repository: napari/napari
```

---------

Co-authored-by: Peter Sobolewski <76622105+psobolewskiPhD@users.noreply.github.com>
  • Loading branch information
Czaki and psobolewskiPhD authored Nov 12, 2023
1 parent ac19d66 commit 1a3192f
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 53 deletions.
67 changes: 24 additions & 43 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -1,74 +1,55 @@
# As much as possible, this file should be kept in sync with:
# https://github.com/napari/napari/blob/main/.circleci/config.yaml
# Use the latest 2.1 version of CircleCI pipeline process engine.
# See: https://circleci.com/docs/2.0/configuration-reference
# See: https://circleci.com/docs/2.1/configuration-reference
version: 2.1

# Orbs are reusable packages of CircleCI configuration that you may share across projects, enabling you to create encapsulated, parameterized commands, jobs, and executors that can be used across multiple projects.
# See: https://circleci.com/docs/2.0/orb-intro/
# Orbs are reusable packages of CircleCI configuration that you may share across projects.
# See: https://circleci.com/docs/2.1/orb-intro/
orbs:
# The python orb contains a set of prepackaged CircleCI configuration you can use repeatedly in your configuration files
# Orb commands and jobs help you with common scripting around a language/tool
# so you dont have to copy and paste it everywhere.
# See the orb documentation here: https://circleci.com/developer/orbs/orb/circleci/python
python: circleci/python@1.5.0

# Define a job to be invoked later in a workflow.
# See: https://circleci.com/docs/2.0/configuration-reference/#jobs
jobs:
build-docs: # This is the name of the job, feel free to change it to better match what you're trying to do!
# These next lines defines a Docker executors: https://circleci.com/docs/2.0/executor-types/
# You can specify an image from Dockerhub or use one of the convenience images from CircleCI's Developer Hub
# A list of available CircleCI Docker convenience images are available here: https://circleci.com/developer/images/image/cimg/python
# The executor is the environment in which the steps below will be executed - below will use a python 3.10.2 container
# Change the version below to your required version of python
build-docs:
docker:
- image: cimg/python:3.10.2
# Checkout the code as the first step. This is a dedicated CircleCI step.
# The python orb's install-packages step will install the dependencies from a Pipfile via Pipenv by default.
# Here we're making sure we use just use the system-wide pip. By default it uses the project root's requirements.txt.
# Then run your tests!
# CircleCI will report the results back to your VCS provider.
# A list of available CircleCI Docker convenience images are available here: https://circleci.com/developer/images/image/cimg/python
- image: cimg/python:3.10.13
steps:
- checkout
- checkout:
path: docs
- run:
name: Clone main repo into a subdirectory
command: git clone git@github.com:napari/napari.git napari
- run:
name: Install qt libs + xvfb
command: sudo apt-get update && sudo apt-get install -y xvfb libegl1 libdbus-1-3 libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xinerama0 libxcb-xinput0 libxcb-xfixes0 x11-utils

- run:
name: Setup virtual environment
# app-dir: ~/project/package-directory/ # If you're requirements.txt isn't in the root directory.
command: |
python -m venv venv
. venv/bin/activate
python -m pip install --upgrade pip
- run:
name: Clone main repo
command: git clone git@github.com:napari/napari.git napari
- run:
name: Install napari-dev
command: |
. venv/bin/activate
python -m pip install -e napari/".[pyside,dev]" -c "napari/resources/constraints/constraints_py3.10_docs.txt"
- run:
name: Install python dependencies
command: |
. venv/bin/activate
python -m pip install -r requirements.txt -c "napari/resources/constraints/constraints_py3.10_docs.txt"
python -m pip install -e "napari/[pyside,dev]"
environment:
PIP_CONSTRAINT: napari/resources/constraints/constraints_py3.10_docs.txt
- run:
name: Build docs
command: |
. venv/bin/activate
xvfb-run --auto-servernum make docs GALLERY_PATH=../napari/examples/
cd docs
xvfb-run --auto-servernum make docs
environment:
PIP_CONSTRAINT: ../napari/resources/constraints/constraints_py3.10_docs.txt
- store_artifacts:
path: docs/_build/
path: docs/docs/_build/
- persist_to_workspace:
root: .
paths:
- docs/_build/

# Invoke jobs via workflows
# See: https://circleci.com/docs/2.0/configuration-reference/#workflows
- docs/docs/_build/
workflows:
build-docs: # This is the name of the workflow, feel free to change it to better match your workflow.
# Inside the workflow, you define the jobs you want to run.
build-docs:
jobs:
- build-docs
25 changes: 15 additions & 10 deletions .github/workflows/build_docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,31 +14,34 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Clone docs repo
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
path: docs # place in a named directory

- name: Clone main repo
uses: actions/checkout@v3
uses: actions/checkout@v4
with:
path: napari # place in a named directory
repository: napari/napari
# ensure version metadata is proper
fetch-depth: 0

- name: Copy examples to docs folder
run: |
cp -R napari/examples .
- uses: actions/setup-python@v4
with:
python-version: "3.10"
cache-dependency-path: |
napari/setup.cfg
docs/requirements.txt
- uses: tlambert03/setup-qt-libs@v1

- name: Install Dependencies
run: |
python -m pip install --upgrade pip
python -m pip install "napari/[all]" -c "napari/resources/constraints/constraints_py3.10_docs.txt"
python -m pip install -r requirements.txt -c "napari/resources/constraints/constraints_py3.10_docs.txt"
python -m pip install "napari/[all]"
python -m pip install -r docs/requirements.txt
env:
PIP_CONSTRAINT: ${{ github.workspace }}/napari/resources/constraints/constraints_py3.10_docs.txt

- name: Testing
run: |
Expand All @@ -50,11 +53,13 @@ jobs:
env:
GOOGLE_CALENDAR_ID: ${{ secrets.GOOGLE_CALENDAR_ID }}
GOOGLE_CALENDAR_API_KEY: ${{ secrets.GOOGLE_CALENDAR_API_KEY }}
PIP_CONSTRAINT: ${{ github.workspace }}/napari/resources/constraints/constraints_py3.10_docs.txt
with:
run: make docs GALLERY_PATH=../examples/
run: make -C docs docs


- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: docs
path: docs/_build
path: docs/docs/_build

0 comments on commit 1a3192f

Please sign in to comment.