name: clean | Auto Update Dependencies on: schedule: - cron: '0 0 * * 1' # Run every Monday at midnight workflow_dispatch: # Allow manual triggering push: branches: - main - dev paths: - 'requirements.txt' - 'pyproject.toml' - 'poetry.lock' pull_request: types: [opened, synchronize, reopened] branches: - main - dev paths: - 'requirements.txt' - 'pyproject.toml' - 'poetry.lock' jobs: update: runs-on: ubuntu-latest permissions: contents: write pull-requests: write steps: - name: Check out repository uses: actions/checkout@v4 with: token: ${{ secrets.PAT_FOR_CROSS_REPOS_CICD_TRIGGERING }} # Personal Access Token with repo scope - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.12' - name: Install Poetry run: | pip install --upgrade pip pip install "poetry>=2.0.0" - name: Update dependencies with Poetry run: | poetry update # If you still need a requirements.txt synced from Poetry: poetry export --without-hashes --format requirements.txt --output requirements.txt - name: Commit changes run: | git config user.name "github-actions[bot]" git config user.email "github-actions[bot]@users.noreply.github.com" git add pyproject.toml poetry.lock requirements.txt git diff --quiet && git diff --staged --quiet || git commit -m "chore: update dependencies" - name: Create Pull Request uses: peter-evans/create-pull-request@v6 with: token: ${{ secrets.PAT_FOR_CROSS_REPOS_CICD_TRIGGERING }} # Personal Access Token with repo scope commit-message: "chore: update dependencies" title: "chore: update dependencies" body: "Automated dependency updates via Poetry" branch: "chore/dependency-updates" delete-branch: true