| # 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: |
| tags: |
| - '*' |
| |
| jobs: |
| build: |
| runs-on: ubuntu-latest |
| |
| steps: |
| - name: Update PATH for west |
| run: | |
| echo "::add-path::$HOME/.local/bin" |
| |
| - 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 'breathe>=4.9.1,<4.15.0' 'docutils>=0.14' \ |
| 'sphinx>=1.7.5,<3.0' sphinx_rtd_theme sphinx-tabs \ |
| sphinxcontrib-svg2pdfconverter 'west>=0.6.2' |
| pip3 install pyelftools |
| |
| - 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} 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 |
| DOC_RELEASE=${RELEASE}.0 |
| 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 |
| echo "publish doxygen" |
| aws s3 sync --quiet doc/_build/doxygen/html s3://docs.zephyrproject.org/apidoc/${RELEASE} --delete |
| echo "success publish of doxygen" |
| fi |