diff --git a/.github/README.md b/.github/README.md
index a7393271c..6722b0c68 100644
--- a/.github/README.md
+++ b/.github/README.md
@@ -211,6 +211,7 @@
| 🟢 |
| Windows 系统 | https://www.microsoft.com/ | Docker 容器内的 Windows | OS |
| 🟢 |
| Mac OS | https://www.apple.com/ | Docker 容器内的 Mac OS | OS |
| 🟢 |
| WiseFlow | https://github.com/TeamWiseFlow/wiseflow/ | Wiseflow 首席情报官 | |
+| 🟢 |
| Woodpecker (啄木鸟) | https://woodpecker-ci.org/ | 啄木鸟是一个简单而强大的CI/CD引擎,具有很强的可扩展性 | |
| 🟢 |
| 悟空IM | https://githubim.com/ | 让信息传递更简单 | |
| 🟢 |
| 迅雷 NAS版 | https://github.com/cnk3x/xunlei/ | 迅雷远程下载服务 NAS移植版 | |
| 🔴 | | Yarr | https://github.com/nkanaev/yarr | Rss 阅读器 | |
diff --git a/README.md b/README.md
index 06b899131..7ee4755d2 100644
--- a/README.md
+++ b/README.md
@@ -206,6 +206,7 @@
| 🟢 |
| Windows 系统 | https://www.microsoft.com/ | Docker 容器内的 Windows | OS |
| 🟢 |
| Mac OS | https://www.apple.com/ | Docker 容器内的 Mac OS | OS |
| 🟢 |
| WiseFlow | https://github.com/TeamWiseFlow/wiseflow/ | Wiseflow 首席情报官 | |
+| 🟢 |
| Woodpecker (啄木鸟) | https://woodpecker-ci.org/ | 啄木鸟是一个简单而强大的CI/CD引擎,具有很强的可扩展性 | |
| 🟢 |
| 悟空IM | https://githubim.com/ | 让信息传递更简单 | |
| 🟢 |
| 迅雷 NAS版 | https://github.com/cnk3x/xunlei/ | 迅雷远程下载服务 NAS移植版 | |
| 🔴 | | Yarr | https://github.com/nkanaev/yarr | Rss 阅读器 | |
diff --git a/apps/woodpecker/3.12.0/data.yml b/apps/woodpecker/3.12.0/data.yml
new file mode 100644
index 000000000..19ec64401
--- /dev/null
+++ b/apps/woodpecker/3.12.0/data.yml
@@ -0,0 +1,78 @@
+additionalProperties:
+ formFields:
+ - default: "/home/woodpecker"
+ edit: true
+ envKey: WOODPECKER_ROOT_PATH
+ labelZh: 数据持久化路径
+ labelEn: Data persistence path
+ required: true
+ type: text
+ - default: 8000
+ edit: true
+ envKey: PANEL_APP_PORT_HTTP
+ labelZh: WebUI 端口
+ labelEn: WebUI port
+ required: true
+ rule: paramPort
+ type: number
+ - default: ""
+ edit: true
+ envKey: WOODPECKER_AGENT_SECRET
+ labelZh: 密钥
+ labelEn: Secret
+ required: true
+ type: text
+ - default: "http://localhost:8000"
+ edit: true
+ envKey: WOODPECKER_HOST
+ labelZh: 访问地址
+ labelEn: Host Address
+ required: true
+ type: text
+ - default: 4
+ edit: true
+ envKey: WOODPECKER_MAX_WORKFLOWS
+ labelZh: 最大任务数
+ labelEn: Maximum number of tasks
+ required: true
+ type: number
+ - default: "false"
+ edit: true
+ envKey: WOODPECKER_OPEN
+ labelZh: 是否允许注册
+ labelEn: Allow registration
+ required: true
+ type: select
+ values:
+ - label: 允许
+ value: "true"
+ - label: 禁止
+ value: "false"
+ - default: ""
+ edit: true
+ envKey: WOODPECKER_ADMIN
+ labelZh: 管理员账户列表
+ labelEn: Administrator account list
+ required: false
+ type: text
+ - default: ""
+ edit: true
+ envKey: WOODPECKER_ORGS
+ labelZh: 组织列表
+ labelEn: Organization list
+ required: false
+ type: text
+ - default: "72h"
+ edit: true
+ envKey: WOODPECKER_SESSION_EXPIRES
+ labelZh: 登录过期时间
+ labelEn: Login expiration time
+ required: true
+ type: text
+ - default: ""
+ edit: true
+ envKey: WOODPECKER_HOSTNAME
+ labelZh: 操作系统主机名
+ labelEn: Operating system host name
+ required: true
+ type: text
diff --git a/apps/woodpecker/3.12.0/docker-compose.yml b/apps/woodpecker/3.12.0/docker-compose.yml
new file mode 100644
index 000000000..337386f67
--- /dev/null
+++ b/apps/woodpecker/3.12.0/docker-compose.yml
@@ -0,0 +1,48 @@
+networks:
+ 1panel-network:
+ external: true
+
+services:
+ woodpecker-server:
+ image: woodpeckerci/woodpecker-server:v3.12.0
+ container_name: ${CONTAINER_NAME}
+ labels:
+ createdBy: "Apps"
+ restart: always
+ networks:
+ - 1panel-network
+ ports:
+ - ${PANEL_APP_PORT_HTTP}:8000
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - ${WOODPECKER_ROOT_PATH}/server:/var/lib/woodpecker/
+ environment:
+ - TZ=Asia/Shanghai
+ - WOODPECKER_OPEN=true
+ - WOODPECKER_SERVER_ADDR=:8000
+ - WOODPECKER_GRPC_ADDR=:9000
+ - WOODPECKER_HOST=${WOODPECKER_HOST}
+ - WOODPECKER_GITHUB=true
+ - WOODPECKER_GITHUB_CLIENT=${WOODPECKER_GITHUB_CLIENT}
+ - WOODPECKER_GITHUB_SECRET=${WOODPECKER_GITHUB_SECRET}
+ - WOODPECKER_AGENT_SECRET=${WOODPECKER_AGENT_SECRET}
+
+ woodpecker-agent:
+ depends_on:
+ - woodpecker-server
+ image: woodpeckerci/woodpecker-agent:v3.12.0
+ command: agent
+ restart: always
+ networks:
+ - 1panel-network
+ env_file:
+ - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env}
+ - ${ENV_FILE:-/etc/1panel/envs/default.env}
+ volumes:
+ - /var/run/docker.sock:/var/run/docker.sock
+ - ${WOODPECKER_ROOT_PATH}/agent:/etc/woodpecker
+ environment:
+ - WOODPECKER_SERVER=woodpecker-server:9000
+ - WOODPECKER_AGENT_SECRET=${WOODPECKER_AGENT_SECRET}
diff --git a/apps/woodpecker/3.12.0/envs/default.env b/apps/woodpecker/3.12.0/envs/default.env
new file mode 100644
index 000000000..cd05f46e6
--- /dev/null
+++ b/apps/woodpecker/3.12.0/envs/default.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+ENV_FILE=.env
diff --git a/apps/woodpecker/3.12.0/envs/global.env b/apps/woodpecker/3.12.0/envs/global.env
new file mode 100644
index 000000000..e10989fe4
--- /dev/null
+++ b/apps/woodpecker/3.12.0/envs/global.env
@@ -0,0 +1,2 @@
+# copyright© 2024 XinJiang Ms Studio
+TZ=Asia/Shanghai
diff --git a/apps/woodpecker/3.12.0/scripts/init.sh b/apps/woodpecker/3.12.0/scripts/init.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/woodpecker/3.12.0/scripts/init.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/woodpecker/3.12.0/scripts/uninstall.sh b/apps/woodpecker/3.12.0/scripts/uninstall.sh
new file mode 100644
index 000000000..c86c4fbca
--- /dev/null
+++ b/apps/woodpecker/3.12.0/scripts/uninstall.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/woodpecker/3.12.0/scripts/upgrade.sh b/apps/woodpecker/3.12.0/scripts/upgrade.sh
new file mode 100644
index 000000000..07fb8c3fe
--- /dev/null
+++ b/apps/woodpecker/3.12.0/scripts/upgrade.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+if [ -f .env ]; then
+ source .env
+
+ # setup-1 add default values
+ CURRENT_DIR=$(pwd)
+ sed -i '/^ENV_FILE=/d' .env
+ sed -i '/^GLOBAL_ENV_FILE=/d' .env
+ echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env
+ echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env
+
+ echo "Check Finish."
+
+else
+ echo "Error: .env file not found."
+fi
diff --git a/apps/woodpecker/README.md b/apps/woodpecker/README.md
new file mode 100644
index 000000000..99f969b31
--- /dev/null
+++ b/apps/woodpecker/README.md
@@ -0,0 +1,20 @@
+# Woodpecker (啄木鸟)
+
+简单而强大的CI/CD引擎,具有很强的可扩展性
+
+
+
+
+
+## 特性
+
++ 开源且免费
+
++ 基于 Docker 容器
+
++ 多工作流程
+
+---
+
+
+
diff --git a/apps/woodpecker/data.yml b/apps/woodpecker/data.yml
new file mode 100644
index 000000000..b5ecf3ad4
--- /dev/null
+++ b/apps/woodpecker/data.yml
@@ -0,0 +1,16 @@
+additionalProperties:
+ key: woodpecker
+ name: Woodpecker (啄木鸟)
+ tags:
+ - WebSite
+ - Local
+ shortDescZh: 啄木鸟是一个简单而强大的CI/CD引擎,具有很强的可扩展性
+ shortDescEn: Woodpecker is a simple, yet powerful CI/CD engine with great extensibility
+ type: website
+ crossVersionUpdate: true
+ limit: 0
+ website: https://woodpecker-ci.org/
+ github: https://github.com/woodpecker-ci/woodpecker/
+ document: https://woodpecker-ci.org/
+ architectures:
+ - amd64
diff --git a/apps/woodpecker/logo.png b/apps/woodpecker/logo.png
new file mode 100644
index 000000000..2782883f6
Binary files /dev/null and b/apps/woodpecker/logo.png differ
diff --git a/apps/woodpecker/logo.svg b/apps/woodpecker/logo.svg
new file mode 100644
index 000000000..1cd49a8f9
--- /dev/null
+++ b/apps/woodpecker/logo.svg
@@ -0,0 +1,10 @@
+