kind: pipeline type: docker name: awg-openwrt-full-build trigger: event: - tag volumes: - name: drone_cache host: path: /cache steps: - name: build image: debian:12 volumes: - name: drone_cache path: /cache environment: OPENWRT_GIT_REF: "v24.10.2" OPENWRT_TARGET: "rockchip" OPENWRT_SUBTARGET: "armv8" OPENWRT_ARCH: "aarch64_generic" OPENWRT_KERNEL_DEP: "kernel (=6.6.93~0d90324e4fb76fa1183dcb1f1b600b7a-r1)" commands: - apt-get update - | DEBIAN_FRONTEND=noninteractive apt-get install -y \ bash \ build-essential \ clang \ curl \ file \ flex \ bison \ g++ \ gawk \ gcc-multilib \ g++-multilib \ gettext \ git \ jq \ libelf-dev \ libncurses5-dev \ libncursesw5-dev \ libssl-dev \ python3 \ python3-dev \ python3-distutils \ python3-pyelftools \ python3-setuptools \ rsync \ swig \ tar \ unzip \ wget \ xsltproc \ zlib1g-dev \ zstd \ cpio \ patch \ ca-certificates \ xz-utils \ subversion - echo "DRONE_TAG=$DRONE_TAG" - echo "OPENWRT_GIT_REF=$OPENWRT_GIT_REF" - echo "OPENWRT_TARGET=$OPENWRT_TARGET" - echo "OPENWRT_SUBTARGET=$OPENWRT_SUBTARGET" - echo "OPENWRT_ARCH=$OPENWRT_ARCH" - echo "OPENWRT_KERNEL_DEP=$OPENWRT_KERNEL_DEP" - rm -rf /work - mkdir -p /work - cd /work - git clone --depth 1 --branch "$OPENWRT_GIT_REF" https://github.com/openwrt/openwrt.git - cd /work/openwrt - ./scripts/feeds update -a - ./scripts/feeds install -a - rm -rf package/kmod-amneziawg package/amneziawg-tools package/luci-proto-amneziawg - cp -r "$DRONE_WORKSPACE/kmod-amneziawg" package/ - cp -r "$DRONE_WORKSPACE/amneziawg-tools" package/ - cp -r "$DRONE_WORKSPACE/luci-proto-amneziawg" package/ - | cat > .config <<'EOF' CONFIG_TARGET_rockchip=y CONFIG_TARGET_rockchip_armv8=y CONFIG_PACKAGE_kmod-amneziawg=m CONFIG_PACKAGE_amneziawg-tools=y CONFIG_PACKAGE_luci-proto-amneziawg=y CONFIG_PACKAGE_luci-i18n-amneziawg-ru=y EOF - make defconfig # Сначала подготовка buildroot - make download -j"$(nproc)" || make download -j1 V=s - make tools/install -j"$(nproc)" V=s - make toolchain/install -j"$(nproc)" V=s - make target/compile -j"$(nproc)" V=s # Потом сборка нужных пакетов - make package/libs/toolchain/compile -j"$(nproc)" V=s || true - make package/kernel/linux/compile -j"$(nproc)" V=s || true - make package/kmod-amneziawg/compile -j"$(nproc)" V=s - make package/amneziawg-tools/compile -j"$(nproc)" V=s - make package/luci-proto-amneziawg/compile -j"$(nproc)" V=s - make package/luci-i18n-amneziawg-ru/compile -j"$(nproc)" V=s || true - rm -rf "$DRONE_WORKSPACE/awgrelease" - mkdir -p "$DRONE_WORKSPACE/awgrelease" - mkdir -p "/cache/awg-openwrt/$DRONE_TAG" - find "/cache/awg-openwrt/$DRONE_TAG" -type f -delete || true - KMOD_FILE=$(find bin/targets -type f -name 'kmod-amneziawg*.ipk' | sort | tail -n1) - TOOLS_FILE=$(find bin/packages -type f -name 'amneziawg-tools*.ipk' | sort | tail -n1) - LUCI_FILE=$(find bin/packages -type f -name 'luci-proto-amneziawg*.ipk' | sort | tail -n1) - I18N_FILE=$(find bin/packages -type f -name 'luci-i18n-amneziawg-ru*.ipk' | sort | tail -n1 || true) - test -n "$KMOD_FILE" - test -n "$TOOLS_FILE" - test -n "$LUCI_FILE" - cp "$KMOD_FILE" "$DRONE_WORKSPACE/awgrelease/" - cp "$TOOLS_FILE" "$DRONE_WORKSPACE/awgrelease/" - cp "$LUCI_FILE" "$DRONE_WORKSPACE/awgrelease/" - if [ -n "$I18N_FILE" ]; then cp "$I18N_FILE" "$DRONE_WORKSPACE/awgrelease/"; fi - rm -rf /tmp/kmodcheck - mkdir -p /tmp/kmodcheck/pkg /tmp/kmodcheck/control - tar -xzf "$KMOD_FILE" -C /tmp/kmodcheck/pkg - tar -xzf /tmp/kmodcheck/pkg/control.tar.gz -C /tmp/kmodcheck/control - echo "===== kmod control =====" - cat /tmp/kmodcheck/control/control - grep -F "$OPENWRT_KERNEL_DEP" /tmp/kmodcheck/control/control - ls -lah "$DRONE_WORKSPACE/awgrelease" - cp -a "$DRONE_WORKSPACE/awgrelease/." "/cache/awg-openwrt/$DRONE_TAG/" - ls -lah "/cache/awg-openwrt/$DRONE_TAG/" - name: publish-release image: plugins/gitea-release volumes: - name: drone_cache path: /cache settings: base_url: https://git.mzavitaev.ru api_key: from_secret: gitea_token files: - /cache/awg-openwrt/${DRONE_TAG}/*.ipk checksum: sha256 file_exists: overwrite title: AWG for OpenWrt 24.10.2