Update Python Dependencies #577
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
# Copyright (C) 2022 Sebastian Thomschke and contributors | |
# SPDX-License-Identifier: AGPL-3.0-or-later | |
# | |
# https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions | |
name: Update Python Dependencies | |
on: | |
schedule: | |
# https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows | |
- cron: '0 5 * * *' # daily at 5 a.m. | |
workflow_dispatch: | |
# https://github.blog/changelog/2020-07-06-github-actions-manual-triggers-with-workflow_dispatch/ | |
defaults: | |
run: | |
shell: bash | |
env: | |
PYTHON_VERSION: "3.11" | |
jobs: | |
########################################################### | |
update-python-deps: | |
########################################################### | |
runs-on: ubuntu-latest | |
steps: | |
- name: Generate GitHub Access Token | |
uses: tibdex/github-app-token@v1 #https://github.com/tibdex/github-app-token | |
id: generate_token | |
# see https://github.com/peter-evans/create-pull-request/blob/main/docs/concepts-guidelines.md#authenticating-with-github-app-generated-tokens | |
with: | |
# see https://github.com/organizations/Second-Hand-Friends/settings/apps/kleinanzeigen-bot-tu | |
app_id: ${{ secrets.DEPS_UPDATER_APP_ID }} | |
private_key: ${{ secrets.DEPS_UPDATER_PRIVATE_KEY }} | |
- name: Git Checkout | |
uses: actions/checkout@v3 # https://github.com/actions/checkout | |
with: | |
token: ${{ steps.generate_token.outputs.token }} | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: "${{ env.PYTHON_VERSION }}" | |
- name: Install Python dependencies | |
run: | | |
set -eux | |
python --version | |
python -m pip install --upgrade pip | |
# pin packaging to 21.3 for now to prevent: packaging.specifiers.InvalidSpecifier: Invalid specifier: '>=3.4.*' | |
# see https://github.com/pdm-project/pdm/issues/1556 | |
pip install --upgrade pdm packaging==21.3 | |
# https://github.com/pdm-project/pdm/issues/728#issuecomment-1021771200 | |
pip install -t __pypackages__/${{ env.PYTHON_VERSION }}/lib selenium | |
pdm install -v | |
- name: Update Python Dependencies | |
id: update_deps | |
run: | | |
set -euo pipefail | |
exec 5>&1 | |
updates=$(pdm update 2>&1 |tee /dev/fd/5) | |
if git diff --exit-code pdm.lock; then | |
echo "updates=" >> "$GITHUB_OUTPUT" | |
else | |
# https://github.com/orgs/community/discussions/26288#discussioncomment-3876281 | |
delimiter="$(openssl rand -hex 8)" | |
echo "updates<<${delimiter}" >> "${GITHUB_OUTPUT}" | |
echo "$(echo "$updates" | grep Update | grep -v kleinanzeigen-bot)" >> "${GITHUB_OUTPUT}" | |
echo "${delimiter}" >> "${GITHUB_OUTPUT}" | |
fi | |
- name: Create PR | |
id: create-pr | |
uses: peter-evans/create-pull-request@v5 # https://github.com/peter-evans/create-pull-request | |
if: "${{ steps.update_deps.outputs.updates != '' }}" | |
with: | |
title: "chore: Update Python dependencies" | |
author: "github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>" | |
committer: "github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>" | |
commit-message: "chore: Update Python dependencies" | |
body: ${{ steps.update_deps.outputs.updates }} | |
add-paths: pdm.lock | |
branch: dependencies/pdm | |
delete-branch: true | |
token: ${{ steps.generate_token.outputs.token }} |