[Backport 1.4.latest] Pin pytest
in dev-requirements.txt
#1320
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# **what?** | |
# On push, if anything in core/dbt/docs or core/dbt/cli has been | |
# created or modified, regenerate the CLI API docs using sphinx. | |
# **why?** | |
# We watch for changes in core/dbt/cli because the CLI API docs rely on click | |
# and all supporting flags/params to be generated. We watch for changes in | |
# core/dbt/docs since any changes to sphinx configuration or any of the | |
# .rst files there could result in a differently build final index.html file. | |
# **when?** | |
# Whenever a change has been pushed to a branch, and only if there is a diff | |
# between the PR branch and main's core/dbt/cli and or core/dbt/docs dirs. | |
# TODO: add bot comment to PR informing contributor that the docs have been committed | |
# TODO: figure out why github action triggered pushes cause github to fail to report | |
# the status of jobs | |
name: Generate CLI API docs | |
on: | |
pull_request: | |
permissions: | |
contents: write | |
pull-requests: write | |
env: | |
CLI_DIR: ${{ github.workspace }}/core/dbt/cli | |
DOCS_DIR: ${{ github.workspace }}/core/dbt/docs | |
DOCS_BUILD_DIR: ${{ github.workspace }}/core/dbt/docs/build | |
jobs: | |
check_gen: | |
name: check if generation needed | |
runs-on: ubuntu-latest | |
if: ${{ github.event.pull_request.head.repo.fork == false }} | |
outputs: | |
cli_dir_changed: ${{ steps.check_cli.outputs.cli_dir_changed }} | |
docs_dir_changed: ${{ steps.check_docs.outputs.docs_dir_changed }} | |
steps: | |
- name: "[DEBUG] print variables" | |
run: | | |
echo "env.CLI_DIR: ${{ env.CLI_DIR }}" | |
echo "env.DOCS_BUILD_DIR: ${{ env.DOCS_BUILD_DIR }}" | |
echo "env.DOCS_DIR: ${{ env.DOCS_DIR }}" | |
- name: git checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
ref: ${{ github.head_ref }} | |
- name: set shas | |
id: set_shas | |
run: | | |
THIS_SHA=$(git rev-parse @) | |
LAST_SHA=$(git rev-parse @~1) | |
echo "this sha: $THIS_SHA" | |
echo "last sha: $LAST_SHA" | |
echo "this_sha=$THIS_SHA" >> $GITHUB_OUTPUT | |
echo "last_sha=$LAST_SHA" >> $GITHUB_OUTPUT | |
- name: check for changes in core/dbt/cli | |
id: check_cli | |
run: | | |
CLI_DIR_CHANGES=$(git diff \ | |
${{ steps.set_shas.outputs.last_sha }} \ | |
${{ steps.set_shas.outputs.this_sha }} \ | |
-- ${{ env.CLI_DIR }}) | |
if [ -n "$CLI_DIR_CHANGES" ]; then | |
echo "changes found" | |
echo $CLI_DIR_CHANGES | |
echo "cli_dir_changed=true" >> $GITHUB_OUTPUT | |
exit 0 | |
fi | |
echo "cli_dir_changed=false" >> $GITHUB_OUTPUT | |
echo "no changes found" | |
- name: check for changes in core/dbt/docs | |
id: check_docs | |
if: steps.check_cli.outputs.cli_dir_changed == 'false' | |
run: | | |
DOCS_DIR_CHANGES=$(git diff --name-only \ | |
${{ steps.set_shas.outputs.last_sha }} \ | |
${{ steps.set_shas.outputs.this_sha }} \ | |
-- ${{ env.DOCS_DIR }} ':!${{ env.DOCS_BUILD_DIR }}') | |
DOCS_BUILD_DIR_CHANGES=$(git diff --name-only \ | |
${{ steps.set_shas.outputs.last_sha }} \ | |
${{ steps.set_shas.outputs.this_sha }} \ | |
-- ${{ env.DOCS_BUILD_DIR }}) | |
if [ -n "$DOCS_DIR_CHANGES" ] && [ -z "$DOCS_BUILD_DIR_CHANGES" ]; then | |
echo "changes found" | |
echo $DOCS_DIR_CHANGES | |
echo "docs_dir_changed=true" >> $GITHUB_OUTPUT | |
exit 0 | |
fi | |
echo "docs_dir_changed=false" >> $GITHUB_OUTPUT | |
echo "no changes found" | |
gen_docs: | |
name: generate docs | |
runs-on: ubuntu-latest | |
needs: [check_gen] | |
if: | | |
needs.check_gen.outputs.cli_dir_changed == 'true' | |
|| needs.check_gen.outputs.docs_dir_changed == 'true' | |
steps: | |
- name: "[DEBUG] print variables" | |
run: | | |
echo "env.DOCS_DIR: ${{ env.DOCS_DIR }}" | |
echo "github head_ref: ${{ github.head_ref }}" | |
- name: git checkout | |
uses: actions/checkout@v3 | |
with: | |
ref: ${{ github.head_ref }} | |
- name: install python | |
uses: actions/[email protected] | |
with: | |
python-version: 3.8 | |
- name: install dev requirements | |
run: | | |
python3 -m venv env | |
source env/bin/activate | |
python -m pip install --upgrade pip | |
pip install -r requirements.txt -r dev-requirements.txt | |
- name: generate docs | |
run: | | |
source env/bin/activate | |
cd ${{ env.DOCS_DIR }} | |
echo "cleaning existing docs" | |
make clean | |
echo "creating docs" | |
make html | |
- name: debug | |
run: | | |
echo ">>>>> status" | |
git status | |
echo ">>>>> remotes" | |
git remote -v | |
echo ">>>>> branch" | |
git branch -v | |
echo ">>>>> log" | |
git log --pretty=oneline | head -5 | |
- name: commit docs | |
run: | | |
git config user.name 'Github Build Bot' | |
git config user.email '[email protected]' | |
git commit -am "Add generated CLI API docs" | |
git push -u origin ${{ github.head_ref }} |