Update Python Dependencies #1041
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
# SPDX-FileCopyrightText: © Sebastian Thomschke and contributors | |
# SPDX-License-Identifier: AGPL-3.0-or-later | |
# SPDX-ArtifactOfProjectHomePage: https://github.com/Second-Hand-Friends/kleinanzeigen-bot/ | |
# | |
# https://docs.github.com/en/actions/using-workflows/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.10" | |
jobs: | |
########################################################### | |
update-python-deps: | |
########################################################### | |
runs-on: ubuntu-latest | |
steps: | |
- name: Show environment variables | |
run: env | sort | |
- name: Generate GitHub Access Token | |
uses: tibdex/github-app-token@v2 #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@v4 # https://github.com/actions/checkout | |
with: | |
token: ${{ steps.generate_token.outputs.token }} | |
- name: "Install Python and PDM" # https://github.com/pdm-project/setup-pdm | |
uses: pdm-project/setup-pdm@v4 | |
with: | |
python-version: "${{ env.PYTHON_VERSION }}" | |
cache: true | |
- name: "Install: Python dependencies" | |
run: | | |
set -eux | |
python --version | |
python -m pip install --upgrade pip | |
pip install --upgrade pdm | |
if [[ ! -e .venv ]]; then | |
pdm venv create || true | |
fi | |
pdm install -v | |
- name: Update Python dependencies | |
id: update_deps | |
run: | | |
set -euo pipefail | |
exec 5>&1 | |
updates=$(pdm update --update-all 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 | |
uses: peter-evans/create-pull-request@v7 # 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 }} |