mirror of
https://github.com/Waujito/youtubeUnblock.git
synced 2024-12-22 22:36:03 +00:00
344 lines
12 KiB
YAML
344 lines
12 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
paths-ignore:
|
|
- '.editorconfig'
|
|
- '.gitignore'
|
|
- 'LICENSE'
|
|
- 'README.md'
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
prepare:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
version: ${{ steps.gh.outputs.version }}
|
|
sha: ${{ steps.gh.outputs.sha }}
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: 'openwrt_luci'
|
|
|
|
- name: GH
|
|
id: gh
|
|
env:
|
|
REPO: ${{ github.repository }}
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
shell: bash
|
|
run: |
|
|
echo "version=$(cat youtubeUnblock/Makefile | grep PKG_VERSION | sed 's/PKG_VERSION:=//')" >> $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, armv7]
|
|
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=x86-64 ;;
|
|
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
|
|
cp -va build/youtubeUnblock .
|
|
tar -czvf youtubeUnblock-$VERSION-$SHA-$PLATFORM-static.tar.gz youtubeUnblock youtubeUnblock.service README.md
|
|
ccache --show-stats
|
|
|
|
- name: Upload artifacts
|
|
if: steps.build.outcome == 'success'
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: static-${{ matrix.arch }}
|
|
path: ./**/youtubeUnblock*.tar.gz
|
|
|
|
build-static-cross:
|
|
needs: prepare
|
|
name: build ${{ matrix.arch }}
|
|
runs-on: ubuntu-latest
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- arch: mips64el
|
|
tool: mips64el-unknown-linux-musl
|
|
- arch: mips64
|
|
tool: mips64-unknown-linux-musl
|
|
- arch: mipsel
|
|
tool: mipsel-unknown-linux-musl
|
|
- arch: mipselsf
|
|
tool: mipsel-unknown-linux-muslsf
|
|
- arch: mips
|
|
tool: mips-unknown-linux-musl
|
|
- arch: mipssf
|
|
tool: mips-unknown-linux-muslsf
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up build tools
|
|
env:
|
|
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
REPO: 'musl-cross/musl-cross'
|
|
TOOL: ${{ matrix.tool }}
|
|
run: |
|
|
mkdir -p $HOME/tools
|
|
gh api repos/$REPO/releases/latest --jq '.tag_name' |\
|
|
xargs -I{} wget -qO- https://github.com/$REPO/releases/download/{}/$TOOL.tgz | tar -C $HOME/tools -xz || exit 1
|
|
[ -d "$HOME/tools/$TOOL/bin" ] && echo "$HOME/tools/$TOOL/bin" >> $GITHUB_PATH
|
|
|
|
- name: Build
|
|
id: build
|
|
env:
|
|
ARCH: ${{ matrix.arch }}
|
|
TOOL: ${{ matrix.tool }}
|
|
VERSION: ${{ needs.prepare.outputs.version }}
|
|
SHA: ${{ needs.prepare.outputs.sha }}
|
|
run: |
|
|
make -j$(nproc) \
|
|
CC="$TOOL-gcc -static-libgcc -static" \
|
|
LD=$TOOL-ld \
|
|
AR=$TOOL-ar \
|
|
NM=$TOOL-nm \
|
|
STRIP=$TOOL-strip \
|
|
CROSS_COMPILE_PLATFORM=$TOOL || exit 1
|
|
$TOOL-strip -s build/youtubeUnblock
|
|
cp -va build/youtubeUnblock .
|
|
tar -czvf youtubeUnblock-$VERSION-$SHA-$ARCH-static.tar.gz youtubeUnblock youtubeUnblock.service README.md
|
|
|
|
- name: Upload artifacts
|
|
if: steps.build.outcome == 'success'
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: static-${{ matrix.arch }}
|
|
path: ./**/youtubeUnblock*.tar.gz
|
|
|
|
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_luci'
|
|
|
|
- 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
|
|
env:
|
|
VERSION: ${{ needs.prepare.outputs.version }}
|
|
SHA: ${{ needs.prepare.outputs.sha }}
|
|
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
|
|
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
|
|
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: 'entware'
|
|
|
|
- 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
|
|
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 \;
|
|
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.gz
|
|
if-no-files-found: error
|
|
|
|
pre-release:
|
|
if: github.event_name != 'pull_request' && github.ref_name == 'main'
|
|
needs: [build-static, build-static-cross, 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.gz
|