Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/openwrt/routing.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Hainke <vincent@systemli.org>2021-05-29 20:28:51 +0300
committerMoritz Warning <moritzwarning@web.de>2021-06-02 23:32:03 +0300
commitd1ab87b7db7688f209647a3ce773d69cd978a2d3 (patch)
treee778091048850b5f57a5e319687c81c3ba2ea61a /.github
parentdc22d38f919a58f90deaea52241c459699af788e (diff)
CI: copy .github from openwrt-packages
Just copy .github from openwrt enabling: - checking of formalities - checking of build - issue template - pr template Signed-off-by: Nick Hainke <vincent@systemli.org>
Diffstat (limited to '.github')
-rw-r--r--.github/issue_template16
-rw-r--r--.github/pull_request_template5
-rw-r--r--.github/workflows/Dockerfile6
-rw-r--r--.github/workflows/ci_helpers.sh26
-rwxr-xr-x.github/workflows/entrypoint.sh39
-rw-r--r--.github/workflows/formal.yml63
-rw-r--r--.github/workflows/multi-arch-test-build.yml124
7 files changed, 279 insertions, 0 deletions
diff --git a/.github/issue_template b/.github/issue_template
new file mode 100644
index 0000000..232baad
--- /dev/null
+++ b/.github/issue_template
@@ -0,0 +1,16 @@
+Please make sure that the issue subject starts with `<package-name>: `
+
+Also make sure that the package is maintained in this repository and not in base which should be submitted at https://bugs.openwrt.org or in the LuCI repository which should be submitted at https://github.com/openwrt/luci/issues.
+
+Issues related to releases below 18.06 and forks are not supported or maintained and will be closed.
+
+# Issue template (remove lines from top till here)
+
+Maintainer: @\<github-user> (find it by checking history of the package Makefile)
+Environment: (put here arch, model, OpenWrt version)
+
+Description:
+
+```
+Formating code blocks by wrapping them with pairs of ```
+```
diff --git a/.github/pull_request_template b/.github/pull_request_template
new file mode 100644
index 0000000..4bc4af6
--- /dev/null
+++ b/.github/pull_request_template
@@ -0,0 +1,5 @@
+Maintainer: me / @\<github-user> (find it by checking history of the package Makefile)
+Compile tested: (put here arch, model, OpenWrt version)
+Run tested: (put here arch, model, OpenWrt version, tests done)
+
+Description:
diff --git a/.github/workflows/Dockerfile b/.github/workflows/Dockerfile
new file mode 100644
index 0000000..fbd17fc
--- /dev/null
+++ b/.github/workflows/Dockerfile
@@ -0,0 +1,6 @@
+ARG ARCH=x86-64
+FROM openwrt/rootfs:$ARCH
+
+ADD entrypoint.sh /entrypoint.sh
+
+CMD ["/entrypoint.sh"]
diff --git a/.github/workflows/ci_helpers.sh b/.github/workflows/ci_helpers.sh
new file mode 100644
index 0000000..60dcd4e
--- /dev/null
+++ b/.github/workflows/ci_helpers.sh
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+color_out() {
+ printf "\e[0;$1m$PKG_NAME: %s\e[0;0m\n" "$2"
+}
+
+success() {
+ color_out 32 "$1"
+}
+
+info() {
+ color_out 36 "$1"
+}
+
+err() {
+ color_out 31 "$1"
+}
+
+warn() {
+ color_out 33 "$1"
+}
+
+err_die() {
+ err "$1"
+ exit 1
+}
diff --git a/.github/workflows/entrypoint.sh b/.github/workflows/entrypoint.sh
new file mode 100755
index 0000000..d7d4ecd
--- /dev/null
+++ b/.github/workflows/entrypoint.sh
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+mkdir -p /var/lock/
+
+opkg update
+
+[ -n "$CI_HELPER" ] || CI_HELPER="/ci/.github/workflows/ci_helpers.sh"
+
+for PKG in /ci/*.ipk; do
+ tar -xzOf "$PKG" ./control.tar.gz | tar xzf - ./control
+ # package name including variant
+ PKG_NAME=$(sed -ne 's#^Package: \(.*\)$#\1#p' ./control)
+ # package version without release
+ PKG_VERSION=$(sed -ne 's#^Version: \(.*\)-[0-9]*$#\1#p' ./control)
+ # package source contianing test.sh script
+ PKG_SOURCE=$(sed -ne 's#^Source: .*/\(.*\)$#\1#p' ./control)
+
+ echo "Testing package $PKG_NAME in version $PKG_VERSION from $PKG_SOURCE"
+
+ opkg install "$PKG"
+
+ export PKG_NAME PKG_VERSION CI_HELPER
+
+ TEST_SCRIPT=$(find /ci/ -name "$PKG_SOURCE" -type d)/test.sh
+
+ if [ -f "$TEST_SCRIPT" ]; then
+ echo "Use package specific test.sh"
+ if sh "$TEST_SCRIPT" "$PKG_NAME" "$PKG_VERSION"; then
+ echo "Test succesful"
+ else
+ echo "Test failed"
+ exit 1
+ fi
+ else
+ echo "No test.sh script available"
+ fi
+
+ opkg remove "$PKG_NAME" --force-removal-of-dependent-packages --force-remove
+done
diff --git a/.github/workflows/formal.yml b/.github/workflows/formal.yml
new file mode 100644
index 0000000..2560917
--- /dev/null
+++ b/.github/workflows/formal.yml
@@ -0,0 +1,63 @@
+name: Test Formalities
+
+on:
+ pull_request:
+
+jobs:
+ build:
+ name: Test Formalities
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+
+ steps:
+ - uses: actions/checkout@v2
+ 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: Test formalities
+ run: |
+ source .github/workflows/ci_helpers.sh
+
+ RET=0
+ for commit in $(git rev-list HEAD ^origin/$BRANCH); do
+ info "=== Checking commit '$commit'"
+ if git show --format='%P' -s $commit | grep -qF ' '; then
+ err "Pull request should not include merge commits"
+ RET=1
+ fi
+
+ author="$(git show -s --format=%aN $commit)"
+ if echo $author | grep -q '\S\+\s\+\S\+'; then
+ success "Author name ($author) seems ok"
+ else
+ err "Author name ($author) need to be your real name 'firstname lastname'"
+ RET=1
+ fi
+
+ subject="$(git show -s --format=%s $commit)"
+ if echo "$subject" | grep -q -e '^[0-9A-Za-z,+/_-]\+: ' -e '^Revert '; then
+ success "Commit subject line seems ok ($subject)"
+ else
+ err "Commit subject line MUST start with '<package name>: ' ($subject)"
+ RET=1
+ fi
+
+ body="$(git show -s --format=%b $commit)"
+ sob="$(git show -s --format='Signed-off-by: %aN <%aE>' $commit)"
+ if echo "$body" | grep -qF "$sob"; then
+ success "Signed-off-by match author"
+ else
+ err "Signed-off-by is missing or doesn't match author (should be '$sob')"
+ RET=1
+ fi
+ done
+
+ exit $RET
diff --git a/.github/workflows/multi-arch-test-build.yml b/.github/workflows/multi-arch-test-build.yml
new file mode 100644
index 0000000..a10be99
--- /dev/null
+++ b/.github/workflows/multi-arch-test-build.yml
@@ -0,0 +1,124 @@
+name: Test Build
+
+on:
+ pull_request:
+
+jobs:
+ build:
+ name: Test ${{ matrix.arch }}
+ runs-on: ubuntu-latest
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - arch: arc_archs
+ target: archs38-generic
+ runtime_test: false
+
+ - arch: arm_cortex-a9_vfpv3-d16
+ target: mvebu-cortexa9
+ runtime_test: false
+
+ - arch: mips_24kc
+ target: ath79-generic
+ runtime_test: false
+
+ - arch: powerpc_464fp
+ target: apm821xx-nand
+ runtime_test: false
+
+ - arch: powerpc_8540
+ target: mpc85xx-p1010
+ runtime_test: false
+
+ - arch: aarch64_cortex-a53
+ target: mvebu-cortexa53
+ runtime_test: true
+
+ - arch: arm_cortex-a15_neon-vfpv4
+ target: armvirt-32
+ runtime_test: true
+
+ - arch: i386_pentium-mmx
+ target: x86-geode
+ runtime_test: true
+
+ - arch: x86_64
+ target: x86-64
+ runtime_test: true
+
+ steps:
+ - uses: actions/checkout@v2
+ with:
+ fetch-depth: 0
+
+ - name: Determine branch name
+ run: |
+ BRANCH="${GITHUB_BASE_REF#refs/heads/}"
+ echo "Building for $BRANCH"
+ echo "BRANCH=$BRANCH" >> $GITHUB_ENV
+
+ - name: Determine changed packages
+ run: |
+ # 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
+ PACKAGES+=$(echo "$ROOT" | sed -e 's@.*/\(.*\)/@\1 @')
+ break
+ fi
+ done
+ done
+
+ # fallback to test packages if nothing explicitly changes this is
+ # should run if other mechanics in packages.git changed
+ PACKAGES="${PACKAGES:-vim attendedsysupgrade-common bmon}"
+
+ echo "Building $PACKAGES"
+ echo "PACKAGES=$PACKAGES" >> $GITHUB_ENV
+
+ - name: Build
+ uses: openwrt/gh-action-sdk@v1
+ env:
+ ARCH: ${{ matrix.arch }}-${{ env.BRANCH }}
+ FEEDNAME: packages_ci
+
+ - name: Move created packages to project dir
+ run: cp bin/packages/${{ matrix.arch }}/packages_ci/*.ipk . || true
+
+ - name: Store packages
+ uses: actions/upload-artifact@v2
+ with:
+ name: ${{ matrix.arch}}-packages
+ path: "*.ipk"
+
+ - name: Store logs
+ uses: actions/upload-artifact@v2
+ with:
+ name: ${{ matrix.arch}}-logs
+ path: logs/
+
+ - name: Remove logs
+ run: sudo rm -rf logs/ || true
+
+ - name: Register QEMU
+ if: ${{ matrix.runtime_test }}
+ run: |
+ sudo docker run --rm --privileged aptman/qus -s -- -p
+
+ - name: Build Docker container
+ if: ${{ matrix.runtime_test }}
+ run: |
+ docker build -t test-container --build-arg ARCH .github/workflows/
+ env:
+ ARCH: ${{ matrix.arch }}
+
+ - name: Test via Docker container
+ if: ${{ matrix.runtime_test }}
+ run: |
+ docker run --rm -v $GITHUB_WORKSPACE:/ci test-container