diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..514a7f5 --- /dev/null +++ b/.drone.yml @@ -0,0 +1,159 @@ +kind: pipeline +type: docker +name: awg-openwrt-24-10-2-rockchip-armv8 + +trigger: + event: + - tag + +steps: + - name: build + image: node:20-bookworm + environment: + OPENWRT_TAG: "24.10.2" + OPENWRT_PKGARCH: "aarch64_generic" + OPENWRT_TARGET: "rockchip" + OPENWRT_SUBTARGET: "armv8" + OPENWRT_VERMAGIC: "0d90324e4fb76fa1183dcb1f1b600b7a-r1" + commands: + - apt-get update + - > + DEBIAN_FRONTEND=noninteractive apt-get install -y + ca-certificates + curl + wget + jq + git + rsync + unzip + xz-utils + zstd + gawk + file + python3-pyelftools + build-essential + libncurses5-dev + libncursesw5-dev + libelf-dev + gettext + xsltproc + cpio + flex + bison + tar + + - node --version + - npm --version + - python3 --version + + - echo "Build for OpenWrt ${OPENWRT_TAG} ${OPENWRT_TARGET}/${OPENWRT_SUBTARGET} ${OPENWRT_PKGARCH}" + - echo "Expected vermagic: ${OPENWRT_VERMAGIC}" + + # Оригинальный workflow делает npm install и node index.js. + # Здесь оставляю это для совместимости с репозиторием. + - npm install + + # Получаем имя SDK так же, как в GitHub Actions + - > + SDK_FILE=$(curl -fsSL "https://downloads.openwrt.org/releases/${OPENWRT_TAG}/targets/${OPENWRT_TARGET}/${OPENWRT_SUBTARGET}/" + | grep -o "openwrt-sdk-${OPENWRT_TAG}-${OPENWRT_TARGET}-${OPENWRT_SUBTARGET}_gcc-[^\"]*_musl[^\"]*\.Linux-x86_64\.tar\.\(xz\|zst\)" + | head -n1) + + - test -n "${SDK_FILE}" + - export SDK_URL="https://downloads.openwrt.org/releases/${OPENWRT_TAG}/targets/${OPENWRT_TARGET}/${OPENWRT_SUBTARGET}/${SDK_FILE}" + - echo "SDK_URL=${SDK_URL}" + - wget -O "${SDK_FILE}" "${SDK_URL}" + + - | + case "${SDK_FILE}" in + *.tar.zst) tar --zstd -xf "${SDK_FILE}" ;; + *.tar.xz) tar -xf "${SDK_FILE}" ;; + *) echo "Unknown SDK archive format: ${SDK_FILE}"; exit 1 ;; + esac + + - rm -f "${SDK_FILE}" + + - export SDK_DIR="$(find . -maxdepth 1 -type d -name 'openwrt-sdk-*' | head -n1)" + - test -n "${SDK_DIR}" + - echo "SDK_DIR=${SDK_DIR}" + + - cd "${SDK_DIR}" + - ./scripts/feeds update -a + - ./scripts/feeds install -a + + - cp -r ../kmod-amneziawg package/ + - cp -r ../amneziawg-tools package/ + - cp -r ../luci-proto-amneziawg package/ + + - printf '%s\n' "CONFIG_PACKAGE_kmod-amneziawg=m" > .config + - printf '%s\n' "CONFIG_PACKAGE_amneziawg-tools=y" >> .config + - printf '%s\n' "CONFIG_PACKAGE_luci-proto-amneziawg=y" >> .config + - printf '%s\n' "CONFIG_PACKAGE_luci-i18n-amneziawg-ru=y" >> .config + - make defconfig + + - echo "Building kmod-amneziawg" + - make package/kmod-amneziawg/download V=s || true + - make package/kmod-amneziawg/prepare V=s || true + - make package/kmod-amneziawg/compile V=s || true + + - echo "Building luci-proto-amneziawg" + - make package/luci-proto-amneziawg/download V=s + - make package/luci-proto-amneziawg/prepare V=s + - make package/luci-proto-amneziawg/compile V=s + + - echo "Building amneziawg-tools" + - make package/amneziawg-tools/download V=s + - make package/amneziawg-tools/prepare V=s + - make package/amneziawg-tools/compile V=s + + - echo "Search built packages" + - find bin/ -name "*.?pk" | grep -E "(amneziawg|luci-proto-amneziawg|luci-i18n-amneziawg)" || true + + - mkdir -p ../awgrelease + - export POSTFIX="v${OPENWRT_TAG}_${OPENWRT_PKGARCH}_${OPENWRT_TARGET}_${OPENWRT_SUBTARGET}" + - export KMOD_POSTFIX="v${OPENWRT_TAG}_${OPENWRT_PKGARCH}_${OPENWRT_TARGET}_${OPENWRT_SUBTARGET}_${OPENWRT_VERMAGIC}" + + - > + find bin/packages -type f -name 'amneziawg-tools*.?pk' + -exec sh -c 'f="$1"; p="$2"; ext="${f##*.}"; cp "$f" "../awgrelease/amneziawg-tools_${p}.${ext}"' _ {} "${POSTFIX}" \; + + - > + find bin/packages -type f -name 'luci-proto-amneziawg*.?pk' + -exec sh -c 'f="$1"; p="$2"; ext="${f##*.}"; cp "$f" "../awgrelease/luci-proto-amneziawg_${p}.${ext}"' _ {} "${POSTFIX}" \; + + - > + find bin/packages -type f -name 'luci-i18n-amneziawg-ru*.?pk' + -exec sh -c 'f="$1"; p="$2"; ext="${f##*.}"; cp "$f" "../awgrelease/luci-i18n-amneziawg-ru_${p}.${ext}"' _ {} "${POSTFIX}" \; + + - > + find bin/targets -type f -name 'kmod-amneziawg*.?pk' + -exec sh -c 'f="$1"; p="$2"; ext="${f##*.}"; cp "$f" "../awgrelease/kmod-amneziawg_${p}.${ext}"' _ {} "${KMOD_POSTFIX}" \; + + - cd .. + - ls -lah awgrelease + - test -n "$(find awgrelease -type f -name '*.?pk' | head -n1)" + + - | + cat > release_notes.md <