Skip to content

Commit

Permalink
workflow: rework module bump Script
Browse files Browse the repository at this point in the history
* workflow: prepare for new bump Script

* backport Gluon modules Updater

Co-authored-by: Martin Weinelt <[email protected]>

* fix cd in basedir

* remove branch switch as Github Actions need to do this

* fix: spelling

* fix: loop

use gluon site feeds for the loop

Co-authored-by: Grische <[email protected]>

* fix SC2086

* Update: make genereated by smaller

* add labels, darf, delete-branch

* configure git (user and e-mail); Update PR Titel

* fix branch name

---------

Co-authored-by: Martin Weinelt <[email protected]>
Co-authored-by: Grische <[email protected]>
(cherry picked from commit a2afe4c)
  • Loading branch information
T0biii authored Sep 6, 2024
1 parent 6dd7146 commit 374fee8
Show file tree
Hide file tree
Showing 2 changed files with 113 additions and 0 deletions.
50 changes: 50 additions & 0 deletions .github/workflows/bump-modules.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
---
name: "Update Modules base"

on:
workflow_dispatch:

permissions:
contents: write # so it can comment
pull-requests: write # so it can create pull requests

jobs:
update-Modules:
runs-on: ubuntu-22.04
env:
COMMIT_NAME: github-actions[bot]
COMMIT_EMAIL: 41898282+github-actions[bot]@users.noreply.github.com
steps:
- name: Clone Firmware
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6

- name: Configure Git User and E-Mail
run: git config --global user.name "${{ env.COMMIT_NAME }}" && git config --global user.email "${{ env.COMMIT_EMAIL }}"

- name: Get update branch name
id: branch-name
run: echo "branch-name=update-modules-${{ github.ref_name }}-$(date +%s)" >> $GITHUB_OUTPUT

- name: Invoke update-modules
run: ./contrib/actions/update-modules.sh

- name: Create Pull Request
id: cpr
uses: peter-evans/create-pull-request@c5a7806660adbe173f04e3e038b0ccdcd758773c # v6.1.0
with:
title: '[${{ github.ref_name }}] update modules'
body: |
Update modules for ${{ github.ref_name }} branch
<sub><sup>- Auto-generated by [create-pull-request][1]</sub></sup>
[1]: https://github.com/peter-evans/create-pull-request
branch: ${{ steps.branch-name.outputs.branch-name }}
labels: ${{ github.ref_name }}
draft: true # this step does not trigger a CI run, so always mark them as draft
delete-branch: true

- name: Check outputs
if: ${{ steps.cpr.outputs.pull-request-number }}
run: |
echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}"
echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}"
63 changes: 63 additions & 0 deletions contrib/actions/update-modules.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
#!/usr/bin/env bash

set -eo pipefail

# move to basedir, in case the script is not executed via `make update-modules`
cd "$(dirname "$0")/../.." || exit 1

# shellcheck source=./modules
source ./modules

git diff --quiet ./modules || {
1>&2 echo "Your modules file is dirty, aborting."
exit 1
}


for MODULE in ${GLUON_SITE_FEEDS}; do
_REMOTE_URL=PACKAGES_${MODULE^^}_REPO
_REMOTE_BRANCH=PACKAGES_${MODULE^^}_BRANCH
_LOCAL_HEAD=PACKAGES_${MODULE^^}_COMMIT

REMOTE_URL="${!_REMOTE_URL}"
REMOTE_BRANCH="${!_REMOTE_BRANCH}"
LOCAL_HEAD="${!_LOCAL_HEAD}"

# get default branch name if none is set
[ -z "${REMOTE_BRANCH}" ] && {
REMOTE_BRANCH=$(git ls-remote --symref "${REMOTE_URL}" HEAD | awk '/^ref:/ { sub(/refs\/heads\//, "", $2); print $2 }')
}

# fetch the commit id for the HEAD of the module
REMOTE_HEAD=$(git ls-remote "${REMOTE_URL}" "${REMOTE_BRANCH}" | awk '{ print $1 }')

# skip ahead if the commit id did not change
[ "$LOCAL_HEAD" == "$REMOTE_HEAD" ] && continue 1



CHECKOUT=$(mktemp -d)

# clone the target branch
git clone --bare "${REMOTE_URL}" --branch="${REMOTE_BRANCH}" "${CHECKOUT}"

# prepare the commit message
# shellcheck disable=SC2001
MODULE=$(echo "${MODULE,,}" | sed 's/packages_//')
TITLE="modules: update ${MODULE}"
MESSAGE="$(mktemp)"
{
echo "${TITLE}"
printf '\n\n'
git -C "${CHECKOUT}" log --oneline --no-decorate --no-merges "${LOCAL_HEAD}..${REMOTE_HEAD}" | cat
} > "$MESSAGE"

# modify modules file
sed -i "s/${LOCAL_HEAD}/${REMOTE_HEAD}/" ./modules
git add ./modules

git commit -F "${MESSAGE}"

# remove the checkout
rm -fr "${CHECKOUT}"
done

0 comments on commit 374fee8

Please sign in to comment.