119 lines
3.7 KiB
YAML
119 lines
3.7 KiB
YAML
# Copyright (c) 2020 Linaro Limited.
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
name: Doc build for Release or Daily
|
|
|
|
# Either a daily based on schedule/cron or only on tag push
|
|
on:
|
|
schedule:
|
|
- cron: '50 22 * * *'
|
|
push:
|
|
paths:
|
|
- 'VERSION'
|
|
tags:
|
|
# only publish v* tags, do not care about zephyr-v* which point to the
|
|
# same commit
|
|
- 'v*'
|
|
|
|
jobs:
|
|
doc-publish:
|
|
name: Publish Documentation
|
|
runs-on: ubuntu-latest
|
|
if: github.repository == 'zephyrproject-rtos/zephyr'
|
|
|
|
steps:
|
|
- name: Update PATH for west
|
|
run: |
|
|
echo "$HOME/.local/bin" >> $GITHUB_PATH
|
|
|
|
- name: Determine tag
|
|
id: tag
|
|
run: |
|
|
# We expect to get here either due to a schedule event in which
|
|
# case we are doing a daily build of the docs, or because a new
|
|
# tag was pushed, in which case we are building docs for a release
|
|
if [ ${GITHUB_EVENT_NAME} == "schedule" ]; then
|
|
echo ::set-output name=TYPE::daily;
|
|
echo ::set-output name=RELEASE::latest;
|
|
elif [ ${GITHUB_EVENT_NAME} == "push" ]; then
|
|
# If push due to a tag GITHUB_REF will look like refs/tags/TAG-FOO
|
|
# chop of 'refs/tags' so RELEASE=TAG-FOO
|
|
echo ::set-output name=TYPE::release;
|
|
echo ::set-output name=RELEASE::${GITHUB_REF/refs\/tags\//};
|
|
else
|
|
exit 1
|
|
fi
|
|
|
|
- name: Configure AWS Credentials
|
|
uses: aws-actions/configure-aws-credentials@v1
|
|
with:
|
|
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
|
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
|
aws-region: us-east-1
|
|
|
|
- name: checkout
|
|
uses: actions/checkout@v2
|
|
|
|
- name: install-pkgs
|
|
run: |
|
|
sudo apt-get install -y ninja-build doxygen
|
|
|
|
- name: cache-pip
|
|
uses: actions/cache@v1
|
|
with:
|
|
path: ~/.cache/pip
|
|
key: ${{ runner.os }}-doc-pip
|
|
|
|
- name: install-pip
|
|
run: |
|
|
pip3 install setuptools
|
|
pip3 install -r scripts/requirements-base.txt
|
|
pip3 install -r scripts/requirements-doc.txt
|
|
|
|
- name: west setup
|
|
run: |
|
|
west init -l . || true
|
|
|
|
- name: build-docs
|
|
env:
|
|
DOC_TAG: ${{ steps.tag.outputs.TYPE }}
|
|
run: |
|
|
source zephyr-env.sh
|
|
make DOC_TAG=${DOC_TAG} -C doc htmldocs
|
|
|
|
- name: check-warns
|
|
run: |
|
|
if [ -s doc/_build/doc.warnings ]; then
|
|
docwarn=$(cat doc/_build/doc.warnings)
|
|
docwarn="${docwarn//'%'/'%25'}"
|
|
docwarn="${docwarn//$'\n'/'%0A'}"
|
|
docwarn="${docwarn//$'\r'/'%0D'}"
|
|
# We treat doc warnings as errors
|
|
echo "::error file=doc.warnings::$docwarn"
|
|
exit 1
|
|
fi
|
|
|
|
- name: Upload to AWS S3
|
|
env:
|
|
RELEASE: ${{ steps.tag.outputs.RELEASE }}
|
|
run: |
|
|
echo "DOC_RELEASE=[$RELEASE]"
|
|
if [ "$RELEASE" == "latest" ]; then
|
|
export
|
|
echo "publish latest docs"
|
|
aws s3 sync --quiet doc/_build/html s3://docs.zephyrproject.org/latest --delete
|
|
echo "success sync of latest docs"
|
|
else
|
|
# we want just the version, without the leading 'v'
|
|
DOC_RELEASE=${RELEASE:1}
|
|
echo "publish release docs: ${DOC_RELEASE}"
|
|
aws s3 sync --quiet doc/_build/html s3://docs.zephyrproject.org/${DOC_RELEASE}
|
|
echo "success sync of rel docs"
|
|
fi
|
|
if [ -d doc/_build/doxygen/html ]; then
|
|
API_RELEASE=${RELEASE:1}
|
|
echo "publish doxygen to apidoc/${API_RELEASE}"
|
|
aws s3 sync --quiet doc/_build/doxygen/html s3://docs.zephyrproject.org/apidoc/${API_RELEASE} --delete
|
|
echo "success publish of doxygen"
|
|
fi
|