blob: b770f705ff4b3853d0c5f2b44223c7d2d765cd6b [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
name: Build docs
on:
push:
branches: ['main']
pull_request:
jobs:
build:
runs-on: ["self-hosted", "asf-runner"]
steps:
# Based on https://github.com/actions/runner-images/issues/2840
- name: 🪓 Remove some stuff we don't need
run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf /opt/ghc
sudo rm -rf "/usr/local/share/boost"
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
- name: 🟢 Install stuff we need
run: |
type -p curl >/dev/null || (sudo apt update && sudo apt install curl -y)
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \
&& sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
&& sudo apt update \
&& sudo apt install gh -y
- name: 🗂 Checkout
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
with:
submodules: recursive
lfs: true
fetch-depth: 1
- name: Display disk free
run: ./.github/scripts/print_df.sh
- name: 🐍 Setup Python
uses: actions/setup-python@bd6b4b6205c4dbad673328db7b31b7fab9e241c0 # v4.6.1
with:
python-version: '3.7'
- name: ❤️ Install Node 16
uses: actions/setup-node@v3.3.0 # v3.3.0
with:
node-version: 16
- name: 📚 Install Hugo
uses: peaceiris/actions-hugo@v2.4.13 # v2.4.13
with:
hugo-version: '0.91.2'
extended: true
- name: 🟢 Install node dependencies
run: |
./site.sh install-node-deps
./.github/scripts/print_df.sh
- name: 🐍 Install Python dependencies
run: |
pip install -r requirements.txt
./.github/scripts/print_df.sh
- name: 🔎 Lint
uses: apache/airflow-pre-commit-action@0764670bf370aab253130d534e1eda7ff497dc60 # v2.0.0
- name: 🗂 Checkout gh-pages branch with minimum depth
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # 3.5.3
if: ${{ github.event_name == 'push' }}
with:
ref: gh-pages
fetch-depth: 1
path: dist
- name: 🔧 Build site
run: |
./site.sh build-site
./.github/scripts/print_df.sh
- run: |
rm -rf ./docs-archive/*
echo "docs-archive directory files are deleted as they are no longer needed after the site is built in the above step"
./.github/scripts/print_df.sh
- name: 🐅 Optimize artifacts
if: ${{ github.event_name == 'pull_request' }}
run: |
rm -rf ./dist/docs/*
echo "These files have been deleted to optimize the size of the artifacts." > ./dist/docs/index.html
echo "Here was the contents of the ./docs-archive directory" >> ./dist/docs/index.html
find ./dist/
./.github/scripts/print_df.sh
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
name: 🚀 Upload website as artifact
if: ${{ github.event_name == 'pull_request' }}
with:
name: airflow-website
path: './dist'
if-no-files-found: error
retention-days: 14
- name: 👷 Copy .asf.yaml to /dist/
if: ${{ github.event_name == 'push' }}
run: |
# The asf.yaml file must be in the branch from which the files are published.
# Otherwise, ASF publising tools cannot detect it.
cp .asf.yaml ./dist/
./.github/scripts/print_df.sh
- name: 🪓 Remove node and node modules
run: |
rm -rf node_modules
sudo rm -rf "$AGENT_TOOLSDIRECTORY/node"
./.github/scripts/print_df.sh
- name: 🚀 Amend gh-pages branch and deploy it with force (replacing previous pages)
if: ${{ github.event_name == 'push' }}
working-directory: dist
run: |
../.github/scripts/print_df.sh
echo "Running git config"
git config user.name "GitHub Actions"
git config user.email "actions@users.noreply.github.com"
echo "Running git add"
git add .
../.github/scripts/print_df.sh
echo "Running git commit"
git commit --amend --no-edit > ../git_commit.log
../.github/scripts/print_df.sh
git push --force origin gh-pages
../.github/scripts/print_df.sh
- name: 🚀 Upload git commit log as artifacts
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
with:
name: airflow-git-commit-log
path: './git_commit.log'
retention-days: 5
- name: 🔧 Copy files from site to theme
run: |
./site.sh prepare-theme
./.github/scripts/print_df.sh
- name: 🔧 Prepare sphinx_airflow_theme package ️
working-directory: sphinx_airflow_theme
run: |
python3 -m pip install --user --upgrade setuptools wheel
python3 setup.py sdist bdist_wheel
../.github/scripts/print_df.sh
- name: 🚀 Upload sphinx_airflow_theme package as artifact
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
with:
name: airflow-sphinx-theme
path: './sphinx_airflow_theme/dist'
if-no-files-found: error
retention-days: 14
- name: 🔧 Build theme demo
working-directory: sphinx_airflow_theme
run: |
pip install ./dist/sphinx_airflow_theme-*.whl
cd demo
./docs.sh build
../../.github/scripts/print_df.sh
- name: 🚀 Upload sphinx_airflow_theme demo as artifact
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
with:
name: airflow-sphinx-theme-demo
path: './sphinx_airflow_theme/demo/_build'
if-no-files-found: error
retention-days: 14
- name: 🚀 Create releases on GitHub
working-directory: sphinx_airflow_theme
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_COMMIT: ${{ github.sha }}
GITHUB_REF: ${{ github.ref }}
if: >
github.ref == 'refs/heads/main' && github.repository == 'apache/airflow-site' &&
github.event_name == 'push'
run: |
set -x
gh auth status
VERSION="$(python setup.py --version 2>/dev/null | tail -1)"
TITLE=$(date "+%Y-%m-%d %H:%M:%S")
NOTES="Commit: ${GITHUB_COMMIT}
Source: ${GITHUB_REF}"
gh release delete "${VERSION}" -y || true
gh release create "${VERSION}" \
--title "${TITLE}" \
--notes "${NOTES}" \
./dist/*
../.github/scripts/print_df.sh