From 59d19646a68572183c368c3029050295c69f408c Mon Sep 17 00:00:00 2001 From: Vadim Vetrov Date: Wed, 14 Aug 2024 12:28:25 +0300 Subject: [PATCH 1/4] Support for new firmware (#56) --- .github/workflows/build-openwrt.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-openwrt.yml b/.github/workflows/build-openwrt.yml index e6bd648..5b86112 100644 --- a/.github/workflows/build-openwrt.yml +++ b/.github/workflows/build-openwrt.yml @@ -33,6 +33,7 @@ jobs: - arm_mpcore - armsr-armv8 - armsr-armv7 + - ipq807x-generic - mips64_octeonplus - mips_24kc - mips_4kec From 9af85abc84df5e9686c1f2776866c0e8ee45424e Mon Sep 17 00:00:00 2001 From: spvkgn Date: Tue, 13 Aug 2024 12:07:20 +0500 Subject: [PATCH 2/4] CI workflow --- .github/workflows/build-alpine.yml | 65 ------- .github/workflows/build-ci.yml | 270 ++++++++++++++++++++++++++++ .github/workflows/build-entware.yml | 99 ---------- .github/workflows/build-openwrt.yml | 80 --------- 4 files changed, 270 insertions(+), 244 deletions(-) delete mode 100644 .github/workflows/build-alpine.yml create mode 100644 .github/workflows/build-ci.yml delete mode 100644 .github/workflows/build-entware.yml delete mode 100644 .github/workflows/build-openwrt.yml diff --git a/.github/workflows/build-alpine.yml b/.github/workflows/build-alpine.yml deleted file mode 100644 index 610474b..0000000 --- a/.github/workflows/build-alpine.yml +++ /dev/null @@ -1,65 +0,0 @@ -name: Alpine - -on: - push: - branches: - - main - -jobs: - build: - name: build ${{ matrix.arch }} - runs-on: ${{ matrix.os }} - strategy: - matrix: - # arch: [x86_64, x86, aarch64, armhf, armv7, ppc64le, s390x] - arch: [x86_64, x86, aarch64, armhf] - os: [ubuntu-latest] - branch: [latest-stable] - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Set up ccache - uses: actions/cache@v4 - with: - path: ${{ github.workspace }}/.ccache - key: ccache-${{ matrix.arch }}-${{ github.run_id }} - restore-keys: ccache-${{ matrix.arch }}- - - - name: Set up Alpine Linux for ${{ matrix.arch }} - uses: jirutka/setup-alpine@v1 - with: - arch: ${{ matrix.arch }} - branch: ${{ matrix.branch }} - packages: > - bash build-base ccache coreutils findutils gawk git grep tar wget xz - autoconf automake libtool pkgconf linux-headers - shell-name: alpine.sh - - - name: Build inside chroot - id: build - env: - ARCH: ${{ matrix.arch }} - CCACHE_DIR: ${{ github.workspace }}/.ccache - PKG_REV: ${{ github.sha }} - shell: alpine.sh {0} - run: | - PKG_REV=$(echo $PKG_REV | cut -c1-7) - case $ARCH in - x86_64) PLATFORM=x64 ;; - x86) PLATFORM=x86 ;; - aarch64) PLATFORM=arm64 ;; - armhf) PLATFORM=arm ;; - *) PLATFORM=$ARCH ;; - esac - make -j$(nproc) CC="ccache gcc -static-libgcc -static" || exit 1 - strip -s build/youtubeUnblock - tar -C build -cJvf "youtubeUnblock-$PKG_REV-$PLATFORM.tar.xz" youtubeUnblock - ccache --show-stats - - - name: Upload artifacts - if: steps.build.outcome == 'success' - uses: actions/upload-artifact@v4 - with: - name: ${{ github.workflow }}-${{ matrix.arch }} - path: ./**/youtubeUnblock*.tar.xz diff --git a/.github/workflows/build-ci.yml b/.github/workflows/build-ci.yml new file mode 100644 index 0000000..a863205 --- /dev/null +++ b/.github/workflows/build-ci.yml @@ -0,0 +1,270 @@ +name: CI + +on: + push: + branches: + - main + paths-ignore: + - '.editorconfig' + - '.gitignore' + - 'LICENSE' + - 'README.md' + pull_request: + branches: + - main + +jobs: + prepare: + runs-on: ubuntu-latest + outputs: + version: ${{ steps.gh.outputs.version }} + sha: ${{ steps.gh.outputs.sha }} + steps: + - name: GH + id: gh + env: + REPO: ${{ github.repository }} + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + shell: bash + run: | + echo "version=$(gh api repos/$REPO/releases/latest --jq '.tag_name' | sed 's/v//')" >> $GITHUB_OUTPUT + if [[ "${{ github.event_name }}" != "pull_request" ]]; then + echo "sha=$(echo ${GITHUB_SHA::7})" >> $GITHUB_OUTPUT + else + echo "sha=$(gh api repos/$REPO/commits/main --jq '.sha[:7]')" >> $GITHUB_OUTPUT + fi + + build-static: + needs: prepare + name: build ${{ matrix.arch }} + runs-on: ubuntu-latest + strategy: + matrix: + # arch: [x86_64, x86, aarch64, armhf, armv7, ppc64le, s390x] + arch: [x86_64, x86, aarch64, armhf] + branch: [latest-stable] + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Set up ccache + uses: actions/cache@v4 + with: + path: ${{ github.workspace }}/.ccache + key: ccache-${{ matrix.arch }}-${{ github.run_id }} + restore-keys: ccache-${{ matrix.arch }}- + + - name: Set up Alpine Linux for ${{ matrix.arch }} + uses: jirutka/setup-alpine@v1 + with: + arch: ${{ matrix.arch }} + branch: ${{ matrix.branch }} + packages: > + bash build-base ccache coreutils findutils gawk git grep tar wget xz + autoconf automake libtool pkgconf linux-headers + shell-name: alpine.sh + + - name: Build inside chroot + id: build + env: + ARCH: ${{ matrix.arch }} + CCACHE_DIR: ${{ github.workspace }}/.ccache + VERSION: ${{ needs.prepare.outputs.version }} + SHA: ${{ needs.prepare.outputs.sha }} + shell: alpine.sh {0} + run: | + case $ARCH in + x86_64) PLATFORM=x64 ;; + x86) PLATFORM=x86 ;; + aarch64) PLATFORM=arm64 ;; + armhf) PLATFORM=arm ;; + *) PLATFORM=$ARCH ;; + esac + make -j$(nproc) CC="ccache gcc -static-libgcc -static" || exit 1 + strip -s build/youtubeUnblock + tar -C build -cJvf "youtubeUnblock-$VERSION-$SHA-$PLATFORM.tar.xz" youtubeUnblock + ccache --show-stats + + - name: Upload artifacts + if: steps.build.outcome == 'success' + uses: actions/upload-artifact@v4 + with: + name: static-${{ matrix.arch }} + path: ./**/youtubeUnblock*.tar.xz + + build-openwrt: + needs: prepare + runs-on: ubuntu-latest + strategy: + matrix: + branch: + - openwrt-23.05 + arch: + - aarch64_cortex-a53 + - aarch64_cortex-a72 + - aarch64_generic + - arm_arm1176jzf-s_vfp + - arm_arm926ej-s + - arm_cortex-a15_neon-vfpv4 + - arm_cortex-a5_vfpv4 + - arm_cortex-a7 + - arm_cortex-a7_neon-vfpv4 + - arm_cortex-a7_vfpv4 + - arm_cortex-a8_vfpv3 + - arm_cortex-a9 + - arm_cortex-a9_neon + - arm_cortex-a9_vfpv3-d16 + - arm_fa526 + - arm_mpcore + - arm_xscale + - mips64_octeonplus + - mips_24kc + - mips_4kec + - mips_mips32 + - mipsel_24kc + - mipsel_24kc_24kf + - mipsel_74kc + - mipsel_mips32 + - x86_64 + container: + image: openwrt/sdk:${{ matrix.arch }}-${{ matrix.branch }} + options: --user root + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + ref: 'openwrt' + + - name: Prepare build + env: + VERSION: ${{ needs.prepare.outputs.version }} + SHA: ${{ needs.prepare.outputs.sha }} + run: | + sed -i "s/PKG_REV:=.*$/PKG_REV:=$SHA/;s/PKG_VERSION:=.*$/PKG_VERSION:=$VERSION-$SHA/" youtubeUnblock/Makefile + + - name: Build packages + id: build + working-directory: /builder + run: | + echo "src-link youtubeUnblock $GITHUB_WORKSPACE" >> feeds.conf + cat feeds.conf + ./scripts/feeds update youtubeUnblock + ./scripts/feeds install -a -p youtubeUnblock + make defconfig + make package/youtubeUnblock/compile V=s + + - name: Upload packages + if: steps.build.outcome == 'success' + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.branch }}-${{ matrix.arch }} + path: /builder/**/youtubeUnblock*.ipk + if-no-files-found: error + + build-entware: + needs: prepare + runs-on: ubuntu-latest + strategy: + matrix: + arch: + - aarch64-3.10 + - armv7-3.2 + - mips-3.4 + - mipsel-3.4 + - x64-3.2 + steps: + - name: Set up Entware docker container + run: | + git clone --depth 1 https://github.com/Entware/docker.git + docker build docker --pull --tag builder + docker volume create entware-home + + - name: Restore Entware from cache + id: cache-restore + uses: actions/cache/restore@v4 + with: + path: ~/entware + key: entware-${{ matrix.arch }} + + - name: Load Entware from cache + if: steps.cache-restore.outputs.cache-hit == 'true' + run: | + docker run --rm --mount source=entware-home,target=/backup_vol -v ~/entware:/backup ubuntu tar -xf /backup/entware.tar -C /backup_vol + docker run --rm --mount source=entware-home,target=/home/me -w /home/me ubuntu bash -c 'cp -r ./backup_vol/* ./' + docker run --rm --mount source=entware-home,target=/home/me -w /home/me ubuntu bash -c 'chown -R 1000:1000 ./* ./' + + - name: Build Entware + if: steps.cache-restore.outputs.cache-hit != 'true' + run: | + docker run --rm -i --mount source=entware-home,target=/home/me -w /home/me --name builder builder git clone --depth 1 https://github.com/Entware/Entware.git + docker run --rm -i --mount source=entware-home,target=/home/me -w /home/me/Entware --name builder builder make package/symlinks + docker run --rm -i --mount source=entware-home,target=/home/me -w /home/me/Entware --name builder builder cp -v configs/${{ matrix.arch }}.config .config + docker run --rm -i --mount source=entware-home,target=/home/me -w /home/me/Entware --name builder builder make -j$(nproc) toolchain/install + docker run --rm --mount source=entware-home,target=/backup_vol -v ~/entware:/backup ubuntu tar -cf /backup/entware.tar /backup_vol + + - name: Save Entware to cache + if: steps.cache-restore.outputs.cache-hit != 'true' + id: cache-save + uses: actions/cache/save@v4 + with: + path: ~/entware + key: entware-${{ matrix.arch }} + + - name: Checkout + uses: actions/checkout@v4 + with: + ref: 'openwrt' + + - name: Prepare build + env: + VERSION: ${{ needs.prepare.outputs.version }} + SHA: ${{ needs.prepare.outputs.sha }} + run: | + sed -i "s/PKG_REV:=.*$/PKG_REV:=$SHA/;s/PKG_VERSION:=.*$/PKG_VERSION:=$VERSION-$SHA/" youtubeUnblock/Makefile + + - name: Build packages + id: build + run: | + echo "src-link youtubeUnblock /youtubeUnblock" | docker run --rm -i --mount source=entware-home,target=/home/me -v $GITHUB_WORKSPACE:/youtubeUnblock -w /home/me/Entware --name builder builder tee -a feeds.conf + docker run --rm -i --mount source=entware-home,target=/home/me -v $GITHUB_WORKSPACE:/youtubeUnblock -w /home/me/Entware --name builder builder ./scripts/feeds update youtubeUnblock + docker run --rm -i --mount source=entware-home,target=/home/me -v $GITHUB_WORKSPACE:/youtubeUnblock -w /home/me/Entware --name builder builder ./scripts/feeds install -a -p youtubeUnblock + echo "CONFIG_PACKAGE_youtubeUnblock=m" | docker run --rm -i --mount source=entware-home,target=/home/me -v $GITHUB_WORKSPACE:/youtubeUnblock -w /home/me/Entware --name builder builder tee -a .config + docker run --rm -i --mount source=entware-home,target=/home/me -v $GITHUB_WORKSPACE:/youtubeUnblock -w /home/me/Entware --name builder builder make package/youtubeUnblock/compile V=s + + - name: Extract packages + if: steps.build.outcome == 'success' + shell: bash + run: | + mkdir output + docker run --rm --user root -i --mount source=entware-home,target=/home/me -v $(pwd):/target -w /home/me/Entware --name builder builder find ./bin -type f -name 'youtubeUnblock*.ipk' -exec cp -v {} /target/output \; + tar -C ./output -cvf youtubeUnblock-Entware-${{ matrix.arch }}.tar . + + - name: Upload packages + if: steps.build.outcome == 'success' + uses: actions/upload-artifact@v4 + with: + name: entware-${{ matrix.arch }} + path: ./**/youtubeUnblock-Entware-*.tar + if-no-files-found: error + + pre-release: + if: github.event_name != 'pull_request' && github.ref_name == 'main' + needs: [build-static, build-openwrt, build-entware] + permissions: + contents: write + runs-on: ubuntu-latest + steps: + - name: Download artifacts + uses: actions/download-artifact@v4 + + - name: Upload assets + uses: slord399/action-automatic-releases@v1.0.1 + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + automatic_release_tag: 'continuous' + prerelease: true + title: 'Development build' + files: | + ./**/youtubeUnblock*.ipk + ./**/youtubeUnblock*.tar.xz + ./**/youtubeUnblock-Entware-*.tar diff --git a/.github/workflows/build-entware.yml b/.github/workflows/build-entware.yml deleted file mode 100644 index 2d16eaa..0000000 --- a/.github/workflows/build-entware.yml +++ /dev/null @@ -1,99 +0,0 @@ -name: Entware Workflow - -on: - push: - branches: - - main - -jobs: - build: - runs-on: ubuntu-latest - outputs: - version: ${{ steps.build.outputs.version }} - strategy: - matrix: - branch: [entware] - arch: - - aarch64-3.10 - - armv7-3.2 - - mips-3.4 - - mipsel-3.4 - - x64-3.2 - steps: - - name: Entware docker container - run: | - git clone https://github.com/Entware/docker.git - docker build docker --pull --tag builder - docker volume create entware-home - - - name: Get cache dir - id: cache_dir - run: | - mkdir gh_act_cache - echo "cache_dir=$(pwd)/gh_act_cache" >> ${GITHUB_OUTPUT} - - - name: Restore cached build - id: cache-build-restore - uses: actions/cache/restore@v4 - with: - path: ${{ steps.cache_dir.outputs.cache_dir }} - key: ${{ matrix.arch }}-cache - - - name: Load entware from cache - if: steps.cache-build-restore.outputs.cache-hit == 'true' - run: | - docker run --rm --mount source=entware-home,target=/backup_vol -v ${{ steps.cache_dir.outputs.cache_dir }}:/backup ubuntu tar -xf /backup/entware.tar -C /backup_vol - docker run --rm --mount source=entware-home,target=/home/me -w /home/me ubuntu bash -c "cp -r ./backup_vol/* ./" - docker run --rm --mount source=entware-home,target=/home/me -w /home/me ubuntu bash -c "chown -R 1000:1000 ./* ./" - - - name: Build entware - if: steps.cache-build-restore.outputs.cache-hit != 'true' - run: | - docker run --rm -i --mount source=entware-home,target=/home/me -w /home/me --name builder builder git clone https://github.com/Entware/Entware.git - docker run --rm -i --mount source=entware-home,target=/home/me -w /home/me/Entware --name builder builder make package/symlinks - docker run --rm -i --mount source=entware-home,target=/home/me -w /home/me/Entware --name builder builder cp -v configs/${{ matrix.arch }}.config .config - docker run --rm -i --mount source=entware-home,target=/home/me -w /home/me/Entware --name builder builder make -j$(nproc) toolchain/install - docker run --rm --mount source=entware-home,target=/backup_vol -v ${{ steps.cache_dir.outputs.cache_dir }}:/backup ubuntu tar -cf /backup/entware.tar /backup_vol/ - - - name: Save cache build - if: steps.cache-build-restore.outputs.cache-hit != 'true' - id: cache-build-save - uses: actions/cache/save@v4 - with: - path: ${{ steps.cache_dir.outputs.cache_dir }} - key: ${{ matrix.arch }}-cache - - - name: Checkout - uses: actions/checkout@v4 - with: - ref: 'openwrt' - - - name: Prepare workflow - shell: bash - run: | - sed -i 's/PKG_REV:=.*$/PKG_REV:=${{ github.sha }}/;s/PKG_VERSION:=.*$/PKG_VERSION:=$(date %Y%m%d)/' youtubeUnblock/Makefile - - - name: Build packages - id: build - shell: bash - run: | - echo "src-link youtubeUnblock /youtubeUnblock" | docker run --rm -i --mount source=entware-home,target=/home/me -v $GITHUB_WORKSPACE:/youtubeUnblock -w /home/me/Entware --name builder builder tee -a feeds.conf - docker run --rm -i --mount source=entware-home,target=/home/me -v $GITHUB_WORKSPACE:/youtubeUnblock -w /home/me/Entware --name builder builder ./scripts/feeds update youtubeUnblock - docker run --rm -i --mount source=entware-home,target=/home/me -v $GITHUB_WORKSPACE:/youtubeUnblock -w /home/me/Entware --name builder builder ./scripts/feeds install -a -p youtubeUnblock - echo "CONFIG_PACKAGE_youtubeUnblock=m" | docker run --rm -i --mount source=entware-home,target=/home/me -v $GITHUB_WORKSPACE:/youtubeUnblock -w /home/me/Entware --name builder builder tee -a .config - docker run --rm -i --mount source=entware-home,target=/home/me -v $GITHUB_WORKSPACE:/youtubeUnblock -w /home/me/Entware --name builder builder make package/youtubeUnblock/compile V=s - - - name: Extract packages - if: steps.build.outcome == 'success' - run: | - mkdir output - docker run --rm --user root -i --mount source=entware-home,target=/home/me -v $(pwd):/target -w /home/me/Entware --name builder builder cp -r bin /target/output/ - - - name: Upload packages - if: steps.build.outcome == 'success' - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.arch }}-${{ matrix.branch }} - path: ./output/**/* - if-no-files-found: error - diff --git a/.github/workflows/build-openwrt.yml b/.github/workflows/build-openwrt.yml deleted file mode 100644 index 5b86112..0000000 --- a/.github/workflows/build-openwrt.yml +++ /dev/null @@ -1,80 +0,0 @@ -name: OpenWRT Workflow - -on: - push: - branches: - - main - -jobs: - build: - runs-on: ubuntu-latest - outputs: - version: ${{ steps.build.outputs.version }} - strategy: - matrix: - branch: - - openwrt-23.05 - arch: - - aarch64_cortex-a53 - - aarch64_cortex-a72 - - aarch64_generic - - arm_arm1176jzf-s_vfp - - arm_arm926ej-s - - arm_cortex-a15_neon-vfpv4 - - arm_cortex-a5_vfpv4 - - arm_cortex-a7 - - arm_cortex-a7_neon-vfpv4 - - arm_cortex-a7_vfpv4 - - arm_cortex-a8_vfpv3 - - arm_cortex-a9 - - arm_cortex-a9_neon - - arm_cortex-a9_vfpv3-d16 - - arm_fa526 - - arm_mpcore - - armsr-armv8 - - armsr-armv7 - - ipq807x-generic - - mips64_octeonplus - - mips_24kc - - mips_4kec - - mips_mips32 - - mipsel_24kc - - mipsel_24kc_24kf - - mipsel_74kc - - mipsel_mips32 - - ramips-mt76x8 - - ramips-mt7621 - - x86_64 - container: - image: openwrt/sdk:${{ matrix.arch }}-${{ matrix.branch }} - options: --user root - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - ref: 'openwrt' - - - name: Prepare workflow - shell: bash - run: | - sed -i 's/PKG_REV:=.*$/PKG_REV:=${{ github.sha }}/;s/PKG_VERSION:=.*$/PKG_VERSION:=$(date %Y%m%d)/' youtubeUnblock/Makefile - - - name: Build packages - id: build - working-directory: /builder - shell: bash - run: | - echo "src-link youtubeUnblock $GITHUB_WORKSPACE" >> feeds.conf - su - buildbot -c 'cat feeds.conf' - su - buildbot -c './scripts/feeds update youtubeUnblock' - su - buildbot -c './scripts/feeds install -a -p youtubeUnblock' - su - buildbot -c 'make defconfig' - su - buildbot -c 'make package/youtubeUnblock/compile V=s BUILD_LOG=1' - - - name: Upload packages - if: steps.build.outcome == 'success' - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.arch }}-${{ matrix.branch }} - path: /builder/**/youtubeUnblock*.ipk - if-no-files-found: error From b76cc5fcee8e953a96879015c31a492a58abfb00 Mon Sep 17 00:00:00 2001 From: Vadim Vetrov Date: Wed, 14 Aug 2024 18:13:55 +0300 Subject: [PATCH 3/4] Update names of outputs --- .github/workflows/build-ci.yml | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build-ci.yml b/.github/workflows/build-ci.yml index a863205..f195a9a 100644 --- a/.github/workflows/build-ci.yml +++ b/.github/workflows/build-ci.yml @@ -9,9 +9,7 @@ on: - '.gitignore' - 'LICENSE' - 'README.md' - pull_request: - branches: - - main + workflow_dispatch: jobs: prepare: @@ -74,7 +72,7 @@ jobs: shell: alpine.sh {0} run: | case $ARCH in - x86_64) PLATFORM=x64 ;; + x86_64) PLATFORM=x86_64 ;; x86) PLATFORM=x86 ;; aarch64) PLATFORM=arm64 ;; armhf) PLATFORM=arm ;; @@ -82,7 +80,12 @@ jobs: esac make -j$(nproc) CC="ccache gcc -static-libgcc -static" || exit 1 strip -s build/youtubeUnblock - tar -C build -cJvf "youtubeUnblock-$VERSION-$SHA-$PLATFORM.tar.xz" youtubeUnblock + rm -rf youtubeUnblock || true + mkdir youtubeUnblock + cp build/youtubeUnblock youtubeUnblock + cp youtubeUnblock.service youtubeUnblock + cp README.md youtubeUnblock + tar -czvf youtubeUnblock-$VERSION-$SHA-$PLATFORM-static.tar.gz youtubeUnblock ccache --show-stats - name: Upload artifacts @@ -90,7 +93,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: static-${{ matrix.arch }} - path: ./**/youtubeUnblock*.tar.xz + path: ./**/youtubeUnblock*.tar.gz build-openwrt: needs: prepare @@ -144,6 +147,9 @@ jobs: - name: Build packages id: build + env: + VERSION: ${{ needs.prepare.outputs.version }} + SHA: ${{ needs.prepare.outputs.sha }} working-directory: /builder run: | echo "src-link youtubeUnblock $GITHUB_WORKSPACE" >> feeds.conf @@ -152,13 +158,14 @@ jobs: ./scripts/feeds install -a -p youtubeUnblock make defconfig make package/youtubeUnblock/compile V=s + mv $(find ./bin -type f -name 'youtubeUnblock*.ipk') ./youtubeUnblock-$VERSION-$SHA-${{ matrix.arch }}-${{ matrix.branch }}.ipk - name: Upload packages if: steps.build.outcome == 'success' uses: actions/upload-artifact@v4 with: name: ${{ matrix.branch }}-${{ matrix.arch }} - path: /builder/**/youtubeUnblock*.ipk + path: /builder/youtubeUnblock*.ipk if-no-files-found: error build-entware: @@ -234,17 +241,23 @@ jobs: - name: Extract packages if: steps.build.outcome == 'success' shell: bash + env: + VERSION: ${{ needs.prepare.outputs.version }} + SHA: ${{ needs.prepare.outputs.sha }} run: | mkdir output docker run --rm --user root -i --mount source=entware-home,target=/home/me -v $(pwd):/target -w /home/me/Entware --name builder builder find ./bin -type f -name 'youtubeUnblock*.ipk' -exec cp -v {} /target/output \; - tar -C ./output -cvf youtubeUnblock-Entware-${{ matrix.arch }}.tar . + rm -rf youtubeUnblock || true + mkdir youtubeUnblock + bash -c "cp -r ./output/* youtubeUnblock" + tar -czvf youtubeUnblock-$VERSION-$SHA-${{ matrix.arch }}-entware.tar.gz youtubeUnblock - name: Upload packages if: steps.build.outcome == 'success' uses: actions/upload-artifact@v4 with: name: entware-${{ matrix.arch }} - path: ./**/youtubeUnblock-Entware-*.tar + path: ./**/youtubeUnblock*-entware.tar.gz if-no-files-found: error pre-release: @@ -266,5 +279,4 @@ jobs: title: 'Development build' files: | ./**/youtubeUnblock*.ipk - ./**/youtubeUnblock*.tar.xz - ./**/youtubeUnblock-Entware-*.tar + ./**/youtubeUnblock*.tar.gz From 460f392a91f6637fcd87c610f41ac3799a56347f Mon Sep 17 00:00:00 2001 From: Vadim Vetrov Date: Wed, 14 Aug 2024 19:58:35 +0300 Subject: [PATCH 4/4] Update README.md --- README.md | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 8aacda7..b2beaaf 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ - [youtubeUnblock](#youtubeunblock) - [Configuration](#configuration) - [OpenWRT pre configuration](#openwrt-pre-configuration) + - [Entware](#entware) - [PC configuration](#pc-configuration) - [Firewall configuration](#firewall-configuration) - [nftables rules](#nftables-rules) @@ -23,11 +24,9 @@ Bypasses Deep Packet Inspection (DPI) systems that relies on SNI. The package is The program was primarily developed to bypass YouTube Outage in Russia, but it works good with other websites blocked by SNI. Adjust the list of websites via `--sni-domains` flag for the program. -The program offers binaries via [Github Actions](https://github.com/Waujito/youtubeUnblock/actions). You can find [packages for OpenWRT](https://github.com/Waujito/youtubeUnblock/actions/workflows/build-openwrt.yml). You can check the architecture of your device with command `grep ARCH /etc/openwrt_release`. Also [static binaries for PCs](https://github.com/Waujito/youtubeUnblock/actions/workflows/build-alpine.yml) are available. +The program is compatible with routers based on OpenWRT, Entware(Keenetic/ASUS) and host machines. The program offers binaries via [Github Actions](https://github.com/Waujito/youtubeUnblock/actions/workflows/build-ci.yml). If you haven't access to Github Actions, the program offers [development pre-release](https://github.com/Waujito/youtubeUnblock/releases/tag/continuous) which follows the latest commit in main branch with binaries included as assets. On OpenWRT you can check the architecture of your device with command `grep ARCH /etc/openwrt_release`. -The program is also compatible with routers driven by [Entware](https://github.com/Entware/Entware) (Keenetic and some ASUS). You can find [binaries](https://github.com/Waujito/youtubeUnblock/actions/workflows/build-entware.yml) and [installation guide (russian)](https://help.keenetic.com/hc/ru/articles/360021214160-%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B-%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%BE%D0%B2-%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D1%8F-Entware-%D0%BD%D0%B0-USB-%D0%BD%D0%B0%D0%BA%D0%BE%D0%BF%D0%B8%D1%82%D0%B5%D0%BB%D1%8C). - -Install the package with opkg. If you got read-only filesystem error you may unpack the binary manually or specify opkg path `opkg -o `. +On both OpenWRT and Entware install the program with opkg. If you got read-only filesystem error you may unpack the binary manually or specify opkg path `opkg -o `. For Windows use [GoodbyeDPI from ValdikSS](https://github.com/ValdikSS/GoodbyeDPI) (you can find how to use it for YouTube [here](https://github.com/ValdikSS/GoodbyeDPI/issues/378)) The same behavior is also implemented in [zapret package for linux](https://github.com/bol-van/zapret). @@ -62,7 +61,7 @@ kmod-nf-conntrack Next step is to add required firewall rules. -For nftables on OpenWRT rules comes out-of-the-box and stored under `/usr/share/nftables.d/ruleset-post/537-youtubeUnblock.nft`. All you need is install requirements and do `/etc/init.d/firewall reload`. If no, go to Firewall configuration. +For nftables on OpenWRT rules comes out-of-the-box and stored under `/usr/share/nftables.d/ruleset-post/537-youtubeUnblock.nft`. All you need is install requirements and do `/etc/init.d/firewall reload`. If no, go to [Firewall configuration](#firewall-configuration). Now we are ready to demonize the application. @@ -71,9 +70,18 @@ Elsewhere copy `owrt/youtubeUnblock.owrt` to `/etc/init.d/youtubeUnblock` and pu You can also run `/etc/init.d/youtubeUnblock enable` to force OpenWRT autostart on boot, but I don't recommend this since if the package has bugs you may lose access to the router (I think you will be able to reset it with reset settings tricks documented for your router). -### PC configuration +### Entware -On local host make sure to change **FORWARD** to **OUTPUT** chain in the Firewall rulesets. +For Entware on Keenetic here is an [installation guide (russian)](https://help.keenetic.com/hc/ru/articles/360021214160-%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B-%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%BE%D0%B2-%D1%80%D0%B5%D0%BF%D0%BE%D0%B7%D0%B8%D1%82%D0%BE%D1%80%D0%B8%D1%8F-Entware-%D0%BD%D0%B0-USB-%D0%BD%D0%B0%D0%BA%D0%BE%D0%BF%D0%B8%D1%82%D0%B5%D0%BB%D1%8C). Note that if your Entware router is missing netfilter queue kernel modules, here is no way to deal with it since Entware does not offer kernel modules. You should probably try to install OpenWRT if the problem persist. You can check required modules with command `find /lib/modules/$(uname -r) -type f -name 'nfnetlink_queue.ko*'`. If that command return not null string, everything alright. All you need is to load the modules. + +To check whether the modules are loaded, do `lsmod | grep nfnetlink_queue`. If the program return nothing, you should load them manually. +```sh +insmod /lib/modules/3.3.8/kernel/net/netfilter/nfnetlink_queue.ko +insmod /lib/modules/3.3.8/kernel/net/netfilter/xt_NFQUEUE.ko +``` + +### PC configuration +On local host make sure to change **FORWARD** to **OUTPUT** chain in the following Firewall rulesets. Copy `youtubeUnblock.service` to `/usr/lib/systemd/system` (you should change the path inside the file to the program position, for example `/usr/bin/youtubeUnblock`, also you may want to delete default iptables rule addition in systemd file to controll it manually). And run `systemctl start youtubeUnblock`.