-
Notifications
You must be signed in to change notification settings - Fork 42
CircleCI setup for PR documentation previews #104
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
Merged
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
# Use the latest 2.1 version of CircleCI pipeline process engine. | ||
# See: https://circleci.com/docs/2.0/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: | ||
# 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 | ||
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. | ||
steps: | ||
- checkout | ||
- 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: Install python dependencies | ||
# 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 | ||
python -m pip install -r requirements.txt | ||
- 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]" | ||
- run: | ||
name: Build docs | ||
command: | | ||
. venv/bin/activate | ||
xvfb-run --auto-servernum make docs-build GALLERY_PATH=../napari/examples/ | ||
- store_artifacts: | ||
path: docs/_build/ | ||
- persist_to_workspace: | ||
root: . | ||
paths: | ||
- docs/_build/ | ||
|
||
# Invoke jobs via workflows | ||
# See: https://circleci.com/docs/2.0/configuration-reference/#workflows | ||
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. | ||
jobs: | ||
- build-docs |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
# To enable this workflow on a fork, comment out: | ||
# | ||
# if: github.repository == 'napari/docs' | ||
|
||
name: CircleCI artifact redirector | ||
|
||
on: [status] | ||
jobs: | ||
circleci_artifacts_redirector_job: | ||
runs-on: ubuntu-latest | ||
if: "github.event.context == 'ci/circleci: build-docs'" | ||
permissions: | ||
statuses: write | ||
name: Run CircleCI artifacts redirector | ||
# if: github.repository == 'napari/docs' | ||
steps: | ||
- name: GitHub Action step | ||
uses: larsoner/circleci-artifacts-redirector-action@master | ||
with: | ||
repo-token: ${{ secrets.CIRCLECI_TOKEN }} | ||
artifact-path: 0/docs/_build/index.html | ||
circleci-jobs: build-docs | ||
job-title: Check the rendered docs here! |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should this line be changed to be un-commented before merging? Based on the line at the top of the file
to enable this workflow on a fork comment out:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah - so if this is commented the action also runs on forks (the case now that I'm running this on my fork). We should probably remove this before merging. If you folks are ready for that (i.e. no other reviews are necessary) I can do that.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For me, the
code
seems correct and it works on your fork...This doesn't directly affect the website or any end users, so I'd be game to merge sooner rather than later and then if need be tweak something? Dunno if that makes sense in the grand scheme of things—will defer to others with more experience, like you and @jni
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why? By default, a contributor will not have circleCI configured, so the workflow will not be triggered. But could a contributor allow testing without creating PR? I would rather see a limited list of branches.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wait, am I missing something?
I understood this action would still run on PRs in this repo, and make a clickable link like the numpy PRs...
See #98 (comment)
The contributor shouldn't need to do anything on their fork I don't think once this is in main anyways.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sometimes people work on their Fort until get a satisfying solution to not depend on the test queue of the napari organization.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmm, fair enough. But I think docs contributors may be less savvy and more like end-users, rather than developers, so this PR is a nice quality of life improvement where they can see the rendered docs online.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is my understanding this will only run in their forks if they do sign up with CircleCI - otherwise they won't have the appropriate credentials.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't have an opinion here. It's easy enough for a contributor to edit that line... Is this ready other than this discussion?