# 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