This repository contains content and resources used to build and deploy the openlineage.io website.
The openlineage.io website is a statically-generated site containing the following:
- Blogs (
/blog
) and landing pages (/
), which are powered by Gatsby - OpenAPI documentation (
/apidocs/openapi
), which is generated automatically - Java client documentation (
/apidocs/javadoc
) - Documentation (
/docs
), which is powered by Docusaurus and can be found in the docs repo
The first three of these are deployed into the gh-pages
branch of the org domain repo, where they are served by GitHub Pages. The doc site is served from the gh-pages
branch in its own repo.
Thanks! Seriously, we appreciate your interest in contributing to the site. The fact that you're reading this section means you’re pretty special to us.
There are two kinds of content you might contribute to this repository: blog posts and basepages. Blog posts are, well, blog posts with dates and authors and all the blogposty stuff you expect. Basepages are all of the other landing pages - Ecosystem, Getting Started, and Resources.
If you're looking to contribute to docs or the spec, take a look at their corresponding repositories for more details. Otherwise, read on!
We love new blog posts, and welcome content about OpenLineage! Topics include:
- experiences from users of all kinds
- supporting products and technologies
- proposals for discussion
If you are familiar with the GitHub pull request process, it is easy to propose a new blog post:
- Fork this project.
- Make a new directory in
content/blog
. The name of the directory will become part of the posts's URL, so choose something descriptive and unique. - Create an
index.mdx
file in the new directory containing your blog content. Use one of the other posts as a template. Thetitle
,date
,author
,image
,banner
, anddescription
front matter fields are all required. - Create artwork! The
banner.svg
image will be shown at the top of the blog post, and should have dimensions of 670x160. Theimage.svg
will be shown in the blog index, and should have dimensions of 670x480. These should both be SVG files. - Build the site locally if you want to see it in a browser and build confidence in your formatting choices.
- Commit your changes and submit a pull request.
To match the artwork on the rest of the site, you can use sketchbeast.com to create your images:
- First, choose a source image to use as inspiration - perhaps something thematically related to your post, or an inside joke. It'll be our little secret.
- Then, upload the image to sketchbeast.com, change "mixed shapes" to "rectangles", and click the button. Feel free to play with the other settings as you like, but stick with rectangles.
- Download the resulting SVG using the button on the image in the film strip at the bottom of the screen, and crop to the proper size.
- Delight in being the only person who knows what the source image was; resolve to choose something more subversive/clever next time.
(If you'd rather not go through all of this, feel free to submit your PR without artwork and we'll make something for you - we like doing it, it's fun!)
If you want to make a change to a basepage - e.g. to add a new member to the Ecosystem page - the best way is to submit a pull request.
These basepages can be found in contents/basepages
, and are formatted in markdown.
To build the site locally, first install the latest version of Node 16. You can either do this manually, or you can use a tool like nvm:
% nvm install 16
Then, install Yarn if you haven't already:
% npm install -g yarn
Then, install all of the node dependencies:
% yarn
Finally, build the site:
% yarn run build
You should find the full site inside the public/
directory.
To build the openapi docs using redoc-cli
, run:
% yarn run build:docs
You should find the generated HTML file inside the static/apidocs/
directory.
To start a dev server, run:
% yarn start
The site is deployed using the Gatsby Publish GitHub action whenever a change is merged into main
.
This GitHub Action will:
- Execute
scripts/build-docs.sh
, which performs a build of the OpenAPI docs based on the latest version of the spec that has been published intostatic/spec
by the OpenLineage release script. The resulting docs are placed intostatic/apidocs/openapi
. - Execute
yarn run build
, which performs a build of the Gatsby landing pages and places them intopublic/
. Thestatic/
directory, containing the OpenAPI and Java client documentation, is copied intopublic/
during this step. - Replace the contents of the
gh-pages
branch of the org domain repo with the contents ofpublic/
. This will cause that repo's GitHub Action to deploy the new content.
Our design principles are:
- Documentation about the spec should be published when new versions of the spec are released in the main OpenLineage repo.
- Documentation about the Java client should be published when new versions of the Java client are released.
The automatic mechanism that occurs when the OpenLineage spec is released is:
- The
new-version.sh
script is manually run, causing the version number of the spec to be bumped. - CircleCI is triggered by the merge to
main
, calling theopenlineage-integration-publish
workflow. This workflow executes thepublish-spec
job, which runsspec/release.sh
. - This script reviews the Git history to determine which files in the spec changed, and publishes a new version of them into
static/spec
in this repository. - The Gatsby Publish GitHub action detects the commit to
main
and publishes the site.
The automatic mechanism that occurs when the Java client changes is:
- CircleCI is triggered by a merge to
main
, calling theopenlineage-java
workflow. - This workflow invokes a collection of build tasks and tests, including a job that builds javadoc using
gradlew javadoc
. - This workflow then executes the
publish-javadoc
job, which runsrelease-javadoc.sh
. - This script compares the built docs against the version of them already existing inside
static/spec/javadoc/
in this repository. If there are any changes, it replaces the versions instatic/spec/javadoc/
with the newly built documentation set. - The Gatsby Publish GitHub action detects the commit to
main
and publishes the site.