24.10 apk artifacts #20
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
name: Check APK compatible version/release | |
on: | |
pull_request_target: | |
types: [opened, synchronize, converted_to_draft, ready_for_review, edited] | |
jobs: | |
build: | |
name: Check APK compatible version/release | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
permissions: | |
pull-requests: write | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
fetch-depth: 0 | |
- name: Determine branch name | |
run: | | |
BRANCH="${GITHUB_BASE_REF#refs/heads/}" | |
echo "Building for $BRANCH" | |
echo "BRANCH=$BRANCH" >> $GITHUB_ENV | |
- name: Setup APK | |
run: | | |
wget -O $GITHUB_WORKSPACE/apk https://buildbot.aparcar.org/apk.static | |
chmod +x $GITHUB_WORKSPACE/apk | |
- name: Determine changed packages | |
run: | | |
RET=0 | |
INCOMPATIBLE_VERSION="" | |
# only detect packages with changes | |
PKG_ROOTS=$(find . -name Makefile | \ | |
grep -v ".*/src/Makefile" | \ | |
sed -e 's@./\(.*\)/Makefile@\1/@') | |
CHANGES=$(git diff --diff-filter=d --name-only origin/$BRANCH...) | |
for ROOT in $PKG_ROOTS; do | |
for CHANGE in $CHANGES; do | |
if [[ "$CHANGE" == "$ROOT"* ]]; then | |
PKG_RELEASE=$(grep -E '^PKG_RELEASE' "$ROOT/Makefile" | cut -f 2 -d '=') | |
if [ -n "$PKG_RELEASE" ]; then | |
if [[ "$PKG_RELEASE" == '^[0-9]+$' ]]; then | |
echo "PKG_RELEASE is not an integer: $PKG_RELEASE" | |
INCOMPATIBLE_VERSION+=" $ROOT" | |
break | |
fi | |
fi | |
PKG_VERSION=$(grep -E '^PKG_VERSION' "$ROOT/Makefile" | cut -f 2 -d '=') | |
if [ -n "$PKG_VERSION" ]; then | |
$GITHUB_WORKSPACE/apk version --quiet --check "$PKG_VERSION" | |
if [[ "$?" -gt "0" ]]; then | |
echo "PKG_VERSION is not compatible: $PKG_VERSION" | |
INCOMPATIBLE_VERSION+=" $ROOT" | |
fi | |
fi | |
fi | |
done | |
done | |
echo "Incompatible versions: $INCOMPATIBLE_VERSION" | |
if [ -n "$INCOMPATIBLE_VERSION" ]; then | |
RET=1 | |
cat > "$GITHUB_WORKSPACE/pr_comment.md" << EOF | |
OpenWrt will change to the APK package manager which requires | |
deterministic verisons. Please make sure that **PKG_VERSION** | |
follows [Semantic Versioning](https://semver.org) or more specifically, | |
the [APK version scheme](https://gitlab.alpinelinux.org/alpine/apk-tools/-/blob/master/doc/apk-package.5.scd?ref_type=heads#L47). | |
If the version is based on a date, please use dots instead of dashes, i.e. **24.01.01**. | |
The **PKG_RELEASE** should be an integer and not contain any letters or special characters. | |
EOF | |
fi | |
for ROOT in $INCOMPATIBLE_VERSION; do | |
echo " - ${ROOT}Makefile" >> "$GITHUB_WORKSPACE/pr_comment.md" | |
done | |
exit $RET | |
- name: Find Comment | |
uses: peter-evans/find-comment@v2 | |
if: ${{ failure() }} | |
id: fc | |
with: | |
issue-number: ${{ github.event.pull_request.number }} | |
comment-author: "github-actions[bot]" | |
- name: Create or update comment | |
uses: peter-evans/create-or-update-comment@v2 | |
if: ${{ failure() }} | |
with: | |
comment-id: ${{ steps.fc.outputs.comment-id }} | |
issue-number: ${{ github.event.pull_request.number }} | |
body-file: "pr_comment.md" | |
edit-mode: replace |