- kit update ставит только релизы, у которых SHA256SUMS подписан ключом автора (ssh-keygen -Y verify), версия внутри подписи совпадает, файлы сошлись с хешами; откат на старую версию запрещён; после обновления проверяется подписка, иначе возврат - автообновление: systemd-таймер раз в сутки ночью со случайной задержкой, kit update --manual / --auto, журнал /var/log/kit-update.log - hy2 update тоже проверяет подпись - tools/release.sh: проверка версий и хеша установщика 3X-UI, SHA256SUMS и подпись - kit backup и 3x-ui.sh --restore: архив 600, строгая проверка архива, конфиги nginx и kit-sub собираются заново, смена IP в подключениях - сайт-заглушка: случайный из шести шаблонов внутри скрипта - zashboard закреплён на v3.29.1, короткие тире и 192.168.x.x в текстах и картинках - CI: ключ подписи одинаковый в kit и hy2, проверка подписи релиза - CHANGELOG, README, инструкция, SECURITY.md Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q7GrBSRPVXhrz3RAprWDnt
38 lines
1.6 KiB
YAML
38 lines
1.6 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
pull_request:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
check:
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: ShellCheck
|
|
run: shellcheck -S warning -e SC1090,SC2034,SC2211 scripts/*.sh tools/release.sh
|
|
- name: Python
|
|
run: python3 -m py_compile scripts/kit-sub.py
|
|
- name: Генераторы
|
|
run: node --test tools/test/*.test.js
|
|
- name: Версия в скриптах совпадает с VERSION
|
|
run: |
|
|
v=$(cat VERSION)
|
|
grep -q "^KIT_VERSION=\"$v\"" scripts/3x-ui.sh
|
|
grep -q "^KIT_VERSION=\"$v\"" scripts/hysteria2.sh
|
|
grep -q "^KIT_VERSION=\"$v\"" scripts/kit.sh
|
|
- name: Ключ подписи одинаковый в kit и hy2
|
|
run: |
|
|
signers() { awk '/^KIT_SIGNERS=\(/ {on = 1; next} on && /^\)/ {exit} on' "$1"; }
|
|
diff <(signers scripts/kit.sh) <(signers scripts/hysteria2.sh)
|
|
- name: Подпись релиза совпадает с файлами
|
|
run: |
|
|
[ -f SHA256SUMS ] || { echo "SHA256SUMS нет – релиз ещё не подписан"; exit 0; }
|
|
grep -qx "# 3X-UI KIT $(cat VERSION)" SHA256SUMS
|
|
grep -v '^#' SHA256SUMS | sha256sum -c -
|
|
awk '/^KIT_SIGNERS=\(/ {on = 1; next} on && /^\)/ {exit} on && /^ *"/ {gsub(/^ *"|"$/, ""); print "releases@3x-ui-kit namespaces=\"3x-ui-kit-release\" " $0}' scripts/kit.sh >allowed_signers
|
|
ssh-keygen -Y verify -f allowed_signers -I releases@3x-ui-kit -n 3x-ui-kit-release -s SHA256SUMS.sig <SHA256SUMS
|