Skip to content

Re-add envvar required by pulp-cli tests #604

Re-add envvar required by pulp-cli tests

Re-add envvar required by pulp-cli tests #604

Workflow file for this run

---
name: "Test bootstrapping a plugin"
on: {pull_request: {branches: ['*']}}
concurrency:
group: ${{ github.ref_name }}-${{ github.workflow }}
cancel-in-progress: true
defaults:
run:
working-directory: "pulp_catdog"
jobs:
check-commits:
runs-on: "ubuntu-latest"
steps:
- uses: "actions/checkout@v6"
with:
fetch-depth: 0
path: "plugin_template"
- uses: "actions/setup-python@v6"
with:
python-version: "3.11"
- name: "Bootstrap catdog plugin"
working-directory: "plugin_template"
run: |
.ci/bootstrap_catdog.sh
# Below this line we include the steps of the ci workflow of the generated plugin
- name: "Install python dependencies"
run: |
pip install requests pygithub pyyaml
- name: "Check commit message"
# This will fail for our fake plugin
if: false
env:
PY_COLORS: "1"
ANSIBLE_FORCE_COLOR: "1"
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
GITHUB_CONTEXT: "${{ github.event.pull_request.commits_url }}"
run: |
.github/workflows/scripts/check_commit.sh
check-changes:
runs-on: "ubuntu-latest"
outputs:
run_tests: "${{ steps.check.outputs.run_tests }}"
run_docs: "${{ steps.check.outputs.run_docs }}"
steps:
- uses: "actions/checkout@v6"
with:
fetch-depth: 0
path: "plugin_template"
- name: "Analyze changed files"
id: "check"
shell: "bash"
working-directory: "plugin_template"
run: |
# This check is completely gutted here. It doesn't play nice with boostrapping.
# We just assume we want to see all tests.
echo "run_docs=1" >> $GITHUB_OUTPUT
echo "run_tests=1" >> $GITHUB_OUTPUT
lint:
uses: "./.github/workflows/lint.yml"
sanity:
uses: "./.github/workflows/sanity.yml"
build:
needs:
- "check-changes"
- "lint"
if: "needs.check-changes.outputs.run_tests == '1'"
uses: "./.github/workflows/build.yml"
test:
needs: "build"
uses: "./.github/workflows/test.yml"
with:
matrix_env: |
[{"TEST": "pulp"}, {"TEST": "azure"}, {"TEST": "gcp"}, {"TEST": "s3"}, {"TEST": "lowerbounds"}]
deprecations:
runs-on: "ubuntu-latest"
if: "github.base_ref == 'main'"
needs: "test"
steps:
- name: "Create working directory"
run: |
mkdir -p "pulp_catdog"
working-directory: "."
- name: "Download Deprecations"
uses: "actions/download-artifact@v8"
with:
pattern: "deprecations-*"
path: "pulp_catdog"
merge-multiple: true
- name: "Print deprecations"
run: |
cat deprecations-*.txt | sort -u
! cat deprecations-*.txt | grep '[^[:space:]]'
ready-to-ship:
# This is a dummy dependent task to have a single entry for the branch protection rules.
runs-on: "ubuntu-latest"
needs:
- "check-changes"
- "check-commits"
- "lint"
- "test"
- "sanity"
if: "always()"
steps:
- name: "Collect needed jobs results"
working-directory: "."
run: |
RUN_TESTS=${{ needs.check-changes.outputs.run_tests }}
RUN_DOCS=${{ needs.check-changes.outputs.run_docs }}
check_jobs() {
local filter="$1"
local needs_json='${{toJson(needs)}}'
# output failed jobs after filter
echo "$needs_json" | jq -r "to_entries[]|select($filter)|select(.value.result!=\"success\")|.key + \": \" + .value.result"
# fails if not all selected jobs passed
echo "$needs_json" | jq -e "to_entries|map(select($filter))|map(select(.value.result!=\"success\"))|length == 0"
}
if [ "$RUN_TESTS" == "1" ] && [ "$RUN_DOCS" == "1" ]; then
FILTERS="true" # check all jobs
elif [ "$RUN_TESTS" == "1" ] && [ "$RUN_DOCS" == "0" ]; then
echo "Skipping docs: running on non-default branch"
FILTERS='.key != "docs"'
elif [ "$RUN_TESTS" == "0" ] && [ "$RUN_DOCS" == "1" ]; then
echo "Skipping tests: only doc changes"
FILTERS='.key != "lint" and .key != "test"'
else # RUN_TESTS=0, RUN_DOCS=0
echo "What is this PR doing??"
FILTERS='.key != "lint" and .key != "test" and .key != "docs"'
fi
check_jobs "$FILTERS"
echo "CI says: Looks good!"
...