diff --git a/.circleci/config.yml b/.circleci/config.yml index b836e0f1..581424b6 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -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 diff --git a/.github/workflows/build_docs.yml b/.github/workflows/build_docs.yml index a75b80e6..9c58f97e 100644 --- a/.github/workflows/build_docs.yml +++ b/.github/workflows/build_docs.yml @@ -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: | @@ -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