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