Skip to content

cron-fetch-pip

cron-fetch-pip #3

name: cron-fetch-pip
on:
schedule:
- cron: '0 0 * * *'
workflow_dispatch:
jobs:
check-ansible-version:
name: πŸ” Check Ansible Version
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v2
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"
if gh pr list --search "$PR_TITLE" --json title | jq -e '.[] | select(.title == "'$PR_TITLE'")'; then
echo "PR_EXISTS=true" >> $GITHUB_ENV
else
echo "PR_EXISTS=false" >> $GITHUB_ENV
- name: Fetch tags
if: env.PR_EXISTS == 'false'
run: git fetch --unshallow --tags
- name: Check for existing tag
id: check_tag
if: env.PR_EXISTS == 'false'
run: |
if git tag --list "v${{ env.NEW_VERSION }}"; then
echo "TAG_EXISTS=true" >> $GITHUB_ENV
else
echo "TAG_EXISTS=false" >> $GITHUB_ENV
- 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 }} origin/main
echo "ansible==${{ env.NEW_VERSION }}" > requirements.txt
git add requirements.txt
git commit -m "✨ version: for v${{ env.NEW_VERSION }}"
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 }}