From 99ae09aa3feb2568e0df5bc418ec161a43f78198 Mon Sep 17 00:00:00 2001 From: PuqiAR Date: Sat, 3 Jan 2026 12:33:41 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=81=E4=BC=9ACI=E5=B8=AE=E6=88=91=E4=B8=8B?= =?UTF-8?q?=E6=88=91=E8=A6=81=E6=AD=BB=E4=BA=86=207?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .woodpecker.yml | 119 +++++++++++++++++++++++++++--------------------- 1 file changed, 66 insertions(+), 53 deletions(-) diff --git a/.woodpecker.yml b/.woodpecker.yml index 26599d2..438482e 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -1,70 +1,83 @@ # .woodpecker.yml -# Auto-build Fig only on new git tags -# Linux + Windows cross-build using xmake -# Output files: Fig-version-plat-arch -# Upload release to Gitea automatically - kind: pipeline -name: tag-build +type: docker +name: Fig CI -trigger: - event: - - tag # 只在 tag 创建时触发 +clone: + disable: false steps: - - name: setup + - name: setup-deps image: ubuntu:24.04 - shell: /bin/sh - commands: - - apt-get update -y - - DEBIAN_FRONTEND=noninteractive apt-get install -y git curl build-essential mingw-w64 python3 zip - - curl -fsSL https://xmake.io/shget.text | bash - - export PATH=$HOME/.xmake/bin:$PATH - - xmake --version + commands: | + apt-get update -y + DEBIAN_FRONTEND=noninteractive apt-get install -y \ + build-essential git curl wget python3 python3-pip unzip zip mingw-w64 xz-utils + + - name: install-xmake + image: ubuntu:24.04 + commands: | + curl -fsSL https://xmake.io/shget.text | bash + export PATH=$HOME/.xmake/bin:$PATH + xmake --version - name: build-linux image: ubuntu:24.04 - shell: /bin/sh - commands: - - export PATH=$HOME/.xmake/bin:$PATH - - TAG_VERSION=${DRONE_TAG#v} # 去掉前缀 v - - xmake f -p linux -a x86_64 -m release -y - - xmake b -y - - mv build/linux/x86_64/release/Fig "Fig-${TAG_VERSION}-linux-x86_64" + environment: + TAG_VERSION: ${DRONE_TAG#v} + commands: | + export PATH=$HOME/.xmake/bin:$PATH + xmake f -m release + xmake build + mkdir -p release + mv build/ Fig-${TAG_VERSION}-linux-x86_64 - name: build-windows image: ubuntu:24.04 - shell: /bin/sh - commands: - - export PATH=$HOME/.xmake/bin:$PATH - - TAG_VERSION=${DRONE_TAG#v} - - xmake f -p mingw -a x86_64 -m release -y - - xmake b -y - - mv build/mingw/x86_64/release/Fig.exe "Fig-${TAG_VERSION}-windows-x86_64.exe" + environment: + TAG_VERSION: ${DRONE_TAG#v} + commands: | + export PATH=$HOME/.xmake/bin:$PATH + xmake f -m release --plat=mingw --arch=x86_64 + xmake build + mkdir -p release + mv build/ Fig-${TAG_VERSION}-windows-x86_64.exe - name: release image: alpine:latest - shell: /bin/sh - commands: - - apk add --no-cache curl jq - - TAG_VERSION=${DRONE_TAG#v} - # 获取 Gitea release ID,如果没有就创建 - - RELEASE_JSON=$(curl -s -H "Authorization: token ${GITEA_TOKEN}" \ - "https://git.fig-lang.cn/api/v1/repos/PuqiAR/Fig/releases/tags/${TAG_VERSION}" || true) - - if [ "$(echo "$RELEASE_JSON" | jq -r .id)" = "null" ]; then - curl -s -X POST -H "Content-Type: application/json" \ + environment: + GITEA_TOKEN: + from_secret: GITEA_TOKEN + TAG_VERSION: ${DRONE_TAG#v} + commands: | + apk add --no-cache curl jq + + # 检查 release 是否存在 + RELEASE_JSON=$(curl -s -H "Authorization: token ${GITEA_TOKEN}" \ + "https://git.fig-lang.cn/api/v1/repos/PuqiAR/Fig/releases/tags/${TAG_VERSION}" || true) + + if [ "$(echo "$RELEASE_JSON" | jq -r .id)" = "null" ]; then + curl -s -X POST -H "Content-Type: application/json" \ -H "Authorization: token ${GITEA_TOKEN}" \ -d "{\"tag_name\":\"${DRONE_TAG}\",\"name\":\"${TAG_VERSION}\",\"draft\":false,\"prerelease\":false}" \ - https://git.fig-lang.cn/api/v1/repos/PuqiAR/Fig/releases; - fi - - RELEASE_ID=$(curl -s -H "Authorization: token ${GITEA_TOKEN}" \ - "https://git.fig-lang.cn/api/v1/repos/PuqiAR/Fig/releases/tags/${TAG_VERSION}" | jq -r .id) - # 上传 Linux & Windows 构建产物 - - curl -X POST -H "Content-Type: multipart/form-data" \ - -F "file=@Fig-${TAG_VERSION}-linux-x86_64" \ - -H "Authorization: token ${GITEA_TOKEN}" \ - "https://git.fig-lang.cn/api/v1/repos/PuqiAR/Fig/releases/${RELEASE_ID}/assets" - - curl -X POST -H "Content-Type: multipart/form-data" \ - -F "file=@Fig-${TAG_VERSION}-windows-x86_64.exe" \ - -H "Authorization: token ${GITEA_TOKEN}" \ - "https://git.fig-lang.cn/api/v1/repos/PuqiAR/Fig/releases/${RELEASE_ID}/assets" + https://git.fig-lang.cn/api/v1/repos/PuqiAR/Fig/releases + fi + + # 获取 release id + RELEASE_ID=$(curl -s -H "Authorization: token ${GITEA_TOKEN}" \ + "https://git.fig-lang.cn/api/v1/repos/PuqiAR/Fig/releases/tags/${TAG_VERSION}" | jq -r .id) + + # 上传资产 + curl -X POST -H "Content-Type: multipart/form-data" \ + -F "file=@release/Fig-${TAG_VERSION}-linux-x86_64" \ + -H "Authorization: token ${GITEA_TOKEN}" \ + "https://git.fig-lang.cn/api/v1/repos/PuqiAR/Fig/releases/${RELEASE_ID}/assets" + + curl -X POST -H "Content-Type: multipart/form-data" \ + -F "file=@release/Fig-${TAG_VERSION}-windows-x86_64.exe" \ + -H "Authorization: token ${GITEA_TOKEN}" \ + "https://git.fig-lang.cn/api/v1/repos/PuqiAR/Fig/releases/${RELEASE_ID}/assets" + +trigger: + event: + - tag