diff --git a/.drone.yml b/.drone.yml index 8a1aa19..ce9a71f 100644 --- a/.drone.yml +++ b/.drone.yml @@ -1,10 +1,14 @@ kind: pipeline type: docker -name: test-env +name: awg-openwrt-build + +trigger: + event: + - tag steps: - - name: debug - image: alpine + - name: build + image: node:20-bookworm environment: OPENWRT_TAG: "24.10.2" OPENWRT_PKGARCH: "aarch64_generic" @@ -12,10 +16,69 @@ steps: OPENWRT_SUBTARGET: "armv8" OPENWRT_VERMAGIC: "0d90324e4fb76fa1183dcb1f1b600b7a-r1" commands: - - echo "EVENT=$DRONE_BUILD_EVENT" - - echo "DRONE_TAG=$DRONE_TAG" + - 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 "OPENWRT_TAG=$OPENWRT_TAG" - echo "OPENWRT_PKGARCH=$OPENWRT_PKGARCH" - echo "OPENWRT_TARGET=$OPENWRT_TARGET" - echo "OPENWRT_SUBTARGET=$OPENWRT_SUBTARGET" - echo "OPENWRT_VERMAGIC=$OPENWRT_VERMAGIC" + - npm install + - SDK_FILE=$(curl -fsSL "https://downloads.openwrt.org/releases/$OPENWRT_TAG/targets/$OPENWRT_TARGET/$OPENWRT_SUBTARGET/" | grep -o 'openwrt-sdk-[^"]*\.Linux-x86_64\.tar\.\(xz\|zst\)' | head -n1) + - test -n "$SDK_FILE" + - 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" + - 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 + - cd "$SDK_DIR" && ./scripts/feeds install -a + - cp -r "$DRONE_WORKSPACE/kmod-amneziawg" "$DRONE_WORKSPACE/$SDK_DIR/package/" + - cp -r "$DRONE_WORKSPACE/amneziawg-tools" "$DRONE_WORKSPACE/$SDK_DIR/package/" + - cp -r "$DRONE_WORKSPACE/luci-proto-amneziawg" "$DRONE_WORKSPACE/$SDK_DIR/package/" + - cd "$SDK_DIR" && printf '%s\n' 'CONFIG_PACKAGE_kmod-amneziawg=m' > .config + - cd "$SDK_DIR" && printf '%s\n' 'CONFIG_PACKAGE_amneziawg-tools=y' >> .config + - cd "$SDK_DIR" && printf '%s\n' 'CONFIG_PACKAGE_luci-proto-amneziawg=y' >> .config + - cd "$SDK_DIR" && printf '%s\n' 'CONFIG_PACKAGE_luci-i18n-amneziawg-ru=y' >> .config + - cd "$SDK_DIR" && make defconfig + - cd "$SDK_DIR" && make package/kmod-amneziawg/download V=s || true + - cd "$SDK_DIR" && make package/kmod-amneziawg/prepare V=s || true + - cd "$SDK_DIR" && make package/kmod-amneziawg/compile V=s + - cd "$SDK_DIR" && make package/luci-proto-amneziawg/download V=s + - cd "$SDK_DIR" && make package/luci-proto-amneziawg/prepare V=s + - cd "$SDK_DIR" && make package/luci-proto-amneziawg/compile V=s + - cd "$SDK_DIR" && make package/amneziawg-tools/download V=s + - cd "$SDK_DIR" && make package/amneziawg-tools/prepare V=s + - cd "$SDK_DIR" && make package/amneziawg-tools/compile V=s + - mkdir -p awgrelease + - POSTFIX="v$OPENWRT_TAG_$OPENWRT_PKGARCH_$OPENWRT_TARGET_$OPENWRT_SUBTARGET" + - KMOD_POSTFIX="v$OPENWRT_TAG_$OPENWRT_PKGARCH_$OPENWRT_TARGET_$OPENWRT_SUBTARGET_$OPENWRT_VERMAGIC" + - find "$SDK_DIR/bin/packages" -type f -name 'amneziawg-tools*.ipk' -exec cp {} awgrelease/ \; + - find "$SDK_DIR/bin/packages" -type f -name 'luci-proto-amneziawg*.ipk' -exec cp {} awgrelease/ \; + - find "$SDK_DIR/bin/packages" -type f -name 'luci-i18n-amneziawg-ru*.ipk' -exec cp {} awgrelease/ \; + - find "$SDK_DIR/bin/targets" -type f -name 'kmod-amneziawg*.ipk' -exec cp {} awgrelease/ \; + - ls -lah awgrelease + - test -n "$(find awgrelease -type f -name '*.ipk' | head -n1)" + + - name: publish-release + image: plugins/gitea-release + settings: + base_url: https://git.mzavitaev.ru + api_key: + from_secret: gitea_token + files: + - awgrelease/*.ipk + checksum: sha256 + file_exists: overwrite + title: AWG for OpenWrt 24.10.2