Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Uniform circleCI and build_docs workflows across repositories #266

Merged
merged 14 commits into from
Nov 12, 2023
65 changes: 22 additions & 43 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -1,74 +1,53 @@
# Use the latest 2.1 version of CircleCI pipeline process engine.
Czaki marked this conversation as resolved.
Show resolved Hide resolved
# 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/[email protected]

# 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 [email protected]: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 [email protected]: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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same comment as napari/napari#6417, check if we need to explicitly set GALLERY_PATH

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The GALLERY_PATH should be GALLERY_PATH=../../napari/examples/ but this is default value

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