Skip to content

cron-fetch-pip

cron-fetch-pip #23

name: cron-fetch-pip
on:
schedule:
- cron: '0 0 * * *'
workflow_dispatch:
jobs:
check-ansible-version:
name: πŸ” Check PyPI Version
runs-on: ubuntu-latest
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.x'
- name: Install pip-tools
run: pip install pip-tools
- name: Check for new Ansible version
id: check_version
run: |
NEW_VERSION=$(pip index versions ansible | grep -oP '(?<=Available versions: )\d+\.\d+\.\d+' | head -1)
echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV
- name: Check for existing PR
id: check_pr
run: |
PR_TITLE="[v${{ env.NEW_VERSION }}] update ansible version"
gh pr list --search "$PR_TITLE" --json title > pr_list.json
jq -e ".[] | select(.title == \"$PR_TITLE\")" pr_list.json && \
echo "PR_EXISTS=true" >> $GITHUB_ENV || \
echo "PR_EXISTS=false" >> $GITHUB_ENV
- name: Check for existing tag
id: check_tag
if: env.PR_EXISTS == 'false'
run: |
git fetch --unshallow --tags
git tag --list "v${{ env.NEW_VERSION }}" > tag_list.txt
if [ -s tag_list.txt ]; then
echo "TAG_EXISTS=true" >> $GITHUB_ENV
else
echo "TAG_EXISTS=false" >> $GITHUB_ENV
fi
- name: Create new branch and update version
if: env.PR_EXISTS == 'false' && env.TAG_EXISTS == 'false'
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git checkout -b version/${{ env.NEW_VERSION }} main
echo "ansible==${{ env.NEW_VERSION }}" > requirements.txt
git add requirements.txt
git commit -m "✨ version: for v${{ env.NEW_VERSION }}" --allow-empty
git push origin version/${{ env.NEW_VERSION }}
- name: Create PR
if: env.PR_EXISTS == 'false' && env.TAG_EXISTS == 'false'
run: |
gh pr create \
--title "[v${{ env.NEW_VERSION }}] update ansible version" \
--body "Automatically created PR to update Ansible version to v${{ env.NEW_VERSION }}" \
--base main \
--head version/${{ env.NEW_VERSION }}