--- name: Deploy docs "on": workflow_call: inputs: repository-owner: description: GitHub account or org that owns the repository type: string required: false default: ansible repository-branch: description: Branch, tag, or commit SHA type: string required: false default: devel ansible-package-version: type: string description: Ansible community package version required: false default: devel deployment-environment: description: Deployment environment type: string required: false default: test secrets: DEPLOY_DOC_BUILD: required: true jobs: log-inputs: runs-on: ubuntu-latest steps: - name: Log the workflow inputs if deployed env: deployment_environment: "${{ inputs.deployment-environment }}" package_version: "${{ inputs.ansible-package-version }}" owner: "${{ inputs.repository-owner }}" branch: "${{ inputs.repository-branch }}" run: | { echo "## Deployment details :shipit:"; echo "Publish to: ${deployment_environment}"; echo "Package version: ${package_version}"; echo "Owner: ${owner}"; echo "Branch: ${branch}"; } >> "${GITHUB_STEP_SUMMARY}" deploy-package-docs: runs-on: ubuntu-latest environment: name: deploy-package-docs url: ${{ env.ENV_URL }} env: DEST_REPO: ansible-community/package-doc-builds USER_EMAIL: "41898282+github-actions[bot]@users.noreply.github.com" USER_NAME: "github-actions[bot]" steps: - name: Download the build archive uses: actions/download-artifact@v7 with: name: package-docs-build - name: Extract the tarball run: >- tar -xvzf ansible-package-docs-html-*.tar.gz --one-top-level - name: Set the production branch and url if: inputs.deployment-environment == 'production' env: BRANCH_NAME: ${{ inputs.ansible-package-version }} PROD_URL: https://ansible.readthedocs.io/projects/ansible run: | echo "BRANCH=${BRANCH_NAME}" >> "${GITHUB_ENV}" echo "ENV_URL=${PROD_URL}/${BRANCH_NAME}" >> "${GITHUB_ENV}" - name: Set the test branch and url if: inputs.deployment-environment == 'test' env: TEST_URL: https://ansible-community.github.io/package-doc-builds run: | echo "BRANCH=gh-pages" >> "${GITHUB_ENV}" echo "ENV_URL=${TEST_URL}" >> "${GITHUB_ENV}" - name: Checkout the deploy directory uses: actions/checkout@v6 with: repository: ${{ env.DEST_REPO }} ref: ${{ env.BRANCH }} path: deploy-directory fetch-depth: 0 ssh-key: ${{ secrets.DEPLOY_DOC_BUILD }} persist-credentials: true - name: Copy the generated HTML and assets for production run: >- rsync -av --delete --mkpath ansible-package-docs-html-*/ deploy-directory/docs - name: Create a norobots.txt file for the test site if: inputs.deployment-environment == 'test' run: | echo "User-agent: *" > deploy-directory/docs/norobots.txt echo "Disallow: /" >> deploy-directory/docs/norobots.txt - name: Configure the git user run: | git config --local user.email "${USER_EMAIL}" git config --local user.name "${USER_NAME}" working-directory: deploy-directory - name: Git add the generated HTML and assets run: git add ./docs --all --force working-directory: deploy-directory - name: Commit generated HTML and assets run: >- git diff-index --quiet HEAD || git commit -m "Push docs build $(date '+%Y-%m-%d')-${{ github.run_id }}-${{ github.run_number }}-${{ github.run_attempt }}" working-directory: deploy-directory - name: Push build to deploy repository run: git push origin working-directory: deploy-directory