Files
openwrt-ci-ipq60xx/docs/SKILLS.md

116 lines
3.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# OpenWrt/ImmortalWrt IPQ60XX — Woodpecker Build Skills
## Repo role
This repo is a build-orchestration repo (configs + scripts + woodpecker pipeline).
Upstream source is cloned during CI.
## Upstream config sync strategy
### Three-layer upstream model
1. **SOURCE 上游(固件源码)**
- `WRT_REPO = https://github.com/VIKINGYFY/immortalwrt.git`
- `WRT_BRANCH = main`
2. **CI-TEMPLATE 上游(配置/脚本参考)**
- 设备集(固定):
- VIKINGYFY/OpenWRT-CI: `Config/IPQ60XX-WIFI-YES.txt`
- davidtall/OpenWRT-CI: `Config/IPQ60XX-WIFI.txt`
- 通用包(动态拉取):
- `Config/GENERAL.upstream.txt` 编译时从 davidtall/OpenWRT-CI 下载
3. **YOUR-DELTA你自己的增量永远只改这里**
- `Config/GENERAL.local.txt` - 你的包/功能增量
- `Scripts/Packages.sh` - 需要固定仓库版本的第三方包/去冲突
- `Scripts/Handles.sh` - 脚本辅助函数
- `Scripts/Settings.sh` - kconfig 设置调整
- `files/` - 固件内默认配置覆盖
## How config merging works
During build, `.config` is assembled from THREE files in this order:
```
cat Config/IPQ60XX-WIFI-*.txt \
Config/GENERAL.upstream.txt \
Config/GENERAL.local.txt > .config
```
Later entries override earlier ones, so:
- Device set config < Upstream GENERAL
- Upstream GENERAL < Your local overrides
## Where to add your packages
### 1) If package exists in feeds
Simply append `CONFIG_PACKAGE_xxx=y` to `Config/GENERAL.local.txt`
Example:
```
CONFIG_PACKAGE_luci-app-adguardhome=y
CONFIG_PACKAGE_luci-app-wireguard=y
```
### 2) If package is not in feeds / you need pinned repo
Add clone/remove conflict logic in `Scripts/Packages.sh`
This runs after feeds, before defconfig.
Example:
```bash
# Clone a custom package repo
git clone --depth=1 https://github.com/user/package.git package/custom-package
# Remove conflicting packages
rm -rf package/conflicting-package
```
## Fixing build issues with upstream changes
If upstream GENERAL.txt breaks your build:
### Quick fix (pin to a known good commit)
Set `UPSTREAM_GENERAL_REF` in Woodpecker variables to a specific commit hash:
```
UPSTREAM_GENERAL_REF=abc123def456
```
### Permanent fix
Override the problematic config in `Config/GENERAL.local.txt`
## Woodpecker cron builds
Create a cron job in Woodpecker UI for this repo:
1. Go to Repository Settings > Schedules
2. Add new schedule (e.g., daily at 03:00)
3. Pipeline runs automatically on `event: cron`
## Debugging
To test config merging locally:
```bash
./Scripts/sync_upstream_config.sh
cat Config/IPQ60XX-WIFI-YES.txt Config/GENERAL.upstream.txt Config/GENERAL.local.txt > test.config
```
## File structure
```
.
├── .woodpecker/
│ └── ipq60xx.yml # Woodpecker pipeline
├── Config/
│ ├── IPQ60XX-WIFI-YES.txt # Device set A (static)
│ ├── IPQ60XX-WIFI.txt # Device set B (static)
│ ├── GENERAL.local.txt # YOUR overrides (edit this!)
│ └── GENERAL.upstream.txt # Fetched at build time (DO NOT EDIT)
├── Scripts/
│ ├── sync_upstream_config.sh # Pull GENERAL.txt from upstream
│ ├── Packages.sh # Package injection (edit as needed)
│ ├── Handles.sh # Helper functions
│ └── Settings.sh # kconfig tweaks
├── files/ # Rootfs overlay (optional)
├── artifacts/ # Build outputs (gitignored)
└── docs/
└── SKILLS.md # This file
```