Вот и хорошо, да только временно: с каждым изменением в /binaries/
репка будет расти большая-пребольшая, без внучки и Жучки не выпуллишь.
Да, вот ты прав, у того же GoodbyeDPI действительно решение полумерное: бинарники собираются, а в релизах вдруг появляются хостлисты и скрипты, которых в самом репозитории нет. Но разве нельзя сделать всё нормально? Можно и релизы организовать по каждому тегу, и пререлизы по каждому коммиту.
Например, если делать по твоим тегам, без semver, но с нотацией ^v[\d.]*
, можно выставить вот такой триггер для основных релизов:
on:
push:
tags:
- 'v*'
Тогда каждый раз, когда создаётся тег, начинающийся с v
, будет собираться релиз. Чтобы версию из тега получить, можно полагаться на ${GITHUB_REF#refs/tags/}
. А для создания релизов на GitHub удобно использовать официальную утилиту:
gh release create "${GITHUB_REF#refs/tags/}" --title "Релиз ${GITHUB_REF#refs/tags/}" --notes "Релиз моей замечательной программы zapret, собранный автоматически."
Если хочешь более готовое решение, есть такие варианты, например, softprops/action-gh-release@v2. Там всё проще пареной редьки, просто укажи что-то вроде:
with:
prerelease: false
files: |
./autobuild/arm64.tar.xz
./autobuild/openwrt-tpws-only.tar.gz
./autobuild/win32.zip
и прочие файлики
И всё будет, как сейчас модно говорить, чики-пуки. Пререлизы тоже можно сделать, просто поменяй триггер на пуш в master
, который меняет код, чтобы на каждую правку в документации не теребонькать.
Вот если бы был репозиторий, где всё по уму собрано без блобов, то любой ламер, даже не очень опытный, за пять минут налепит workflow для actions - там большого ума-то и не надо.
Взял директорию zapret от 24 октября (я тогда её обнолял через git pull) и скопировал её в новую директорию zapret-test.
Через TortoiseGit удалил в репо zapret-test директорию binaries и всё её содержимое. Сделал коммит в этот локальный репо.
В директории zapret-test запустил консоль гита (я использую винду) и ввёл такую команду:
git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch binaries' HEAD
Эта команда будет исполняться очень долго.
Затем я создал в своём профиле на гитхабе новый репо zapret и скопировал ссылку к нему.
Через TortoiseGit поменял у локального репо zapret-test настройки у remote репозиториев.
Изменил оригинальную ссылку origin на путь к своему репозиторию на гитхабе: git@github.com:remittor/zapret.git
Ну а далее я через TortoiseGit вызвал sync и запустил заливку изменений в remote git:
git.exe push -v --progress --force "origin" master:master
Pushing to github.com:remittor/zapret.git
Enumerating objects: 6249, done.
Counting objects: 100% (6249/6249), done.
Delta compression using up to 12 threads
Compressing objects: 100% (3028/3028), done.
Writing objects: 100% (6249/6249), 1.81 MiB | 368.00 KiB/s, done.
Total 6249 (delta 4455), reused 3721 (delta 3177), pack-reused 0
remote: Resolving deltas: 100% (4455/4455), done.
To github.com:remittor/zapret.git
* [new branch] master -> master
updating local tracking ref 'refs/remotes/origin/master'
И вот теперь вот тут GitHub - remittor/zapret находится очень компактный репозиторий (3.6 МБ).
Правда теги нужно заного расставить.
Там статические блобы есть только для win64. Все остальное вполне может жить и с пустым binaries, если можно сделать make. Собранное через make помещается в binaries/my, который является приоритетным для инсталяции через install_bin.sh.Это работает на всех платформах, кроме windows.
Инсталятор, если не находит бинарей готовых, сам запускает make Если есть нужные пакеты на linux, оно соберется. На mac/BSD соберется без пакетов.
Под windows надо использовать отдельно cygwin для winws и mingw для mdig и ip2net. + подтягивать cygwin1.dll и всякие батники по желанию.
Так что для классических unix платформ эта репа была бы вполне готовым решением и без бинарей.
Но ситуевину осложняют только прошивки, где ничего не собрать, и винда.
Если для винды еще как-то не очень сложно собрать, то для прошивок это реальная боль. Для несведущих - задача невозможная.
Этот вариант тоже ломает старую историю с commit hash ?
Я это делал через git rebase, потом расставил тэги по названию комитов и их новым хэшам, а старые снес. Стало 18 мб. За счет удаления истории, а не всех бинариков.
Мой первый недодел в том, что не дошло почему остается мусор. Колобок обьяснил, за что благодарность.
Бинарики пока нет приемлемого решения с actions, придется руками тащить
Нет конечно. Я же специально дал ссылку на свой репо что бы вы посмотрели и проверили что да как.
Вы как то не так проверяете размер всего репо.
Через actions можно что угодно делать!
Но как правило их складывают в релизах.
Для виндовых бинарников , которые не собираются из сорцов, можно сделать доп. репо. И уже при сборке релизов тащить от туда нужные бинари.
Первый вариант держал старый мусор за счет тэгов.
После их перестройки и удаления старых мусор ушел. 128->18
Но как правило их складывают в релизах.
Угу, надо бы сделать , чтобы бралась вся репа, засовывались бы туда собранные бинариес и выкладывался бы релиз с этим всем. А в основной тогда можно убрать бинарики
Точно. Сейчас проверил: 18 МБ.
Вчера было не так.
На GH пробовал собирать статические c musl libc для кучи архитектур и для винды тоже: Releases · spvkgn/zapret · GitHub
Наверное, еще можно и macOS добавить, там есть runner.
Настраиваю zapret на Keenetic Extra (KN-1710), при запущенном скрипте zapret проверка с помощью curl работает, при выключенном соответственно не работает. Но youtube так и не работает (превьюшки грузятся моментально, но само видео нет). В какую сторону копать? Получается проверка с помощью curl ничего не дает?
Нужно curl’ом дергать *.googlevideo.com вашего провайдера
так и делаю
curl --connect-to ::speedtest.selectel.ru https://manifest.googlevideo.com/100MB -k -o nul
Не то дёргаете. надо домены типа rr1---sn-n8v7znse.googlevideo.com
дёргать. Как узнать ваши - можете глянуть тут, например (вам будет интересно с пятого пункта) - Подбор рабочего конфига для GGC ютуба через blockcheck
Спасибо, почитаю, попробую.
Бегло нашел 4 адреса
https://rr2---sn-t0a7lnee.googlevideo.com
https://rr3---sn-jvhnu5g-31oe.googlevideo.com
https://rr2---sn-q4fl6ns7.googlevideo.com
https://rr1---sn-jvhnu5g-n8vr.googlevideo.com
через curl так же все качает … но видео нет.
Если есть возможность - скиньте свой рабочий конфиг, для примера.
Здорово. А довести дело до конца сможете ?
Чтобы бралась оригинальная репа и на ее базе образовывался весь каталог binaries в его текущем виде ? Результат - совмещенное содержимое репы и полученных binaries
freebsd - собирать под BSD 11 x64. нужно для pf/opnsense, чтобы не ставить компиляторы или отдельно полноценную фрю
x86 - i586
arm - armv6 soft float. можно armv5.
mips32 - release 1 (r1)
arm64 - тут вроде все стандартно. без неонов только
x86_64 - тоже стандартно, без доп extensions
mips64 - нужен только big endian под octeon
mac - совмещенный бинарик x64+arm. способ сборки в makefile (make mac) -target arm64-apple-macos10.8
windows - cygwin надо брать последний для win7. ip2net и mdig собирать в mingw, а не cygwin, чтобы не тянуть толстую зависимость. x86 - брать последний под x86
потом упаковать последним upx --lzma бинарики для linux
Я так понимаю 32-х битная под винду с гитхаба все, кто успел тот и съел? Или когда-нибудь вернется?
Эта не подойдет? https://github.com/spvkgn/zapret/releases/download/latest/zapret-cygwin-x86.zip
Там только сами бинарники, скрипты в основной репе есть.
BSD - нашлось только 12.4 через vmactions.org
Остальное вроде все решаемо.
--filter-tcp=443 --hostlist=C:\Soft\zapret\zapret-winws\googlevideo.txt --dpi-desync=fake,split --dpi-desync-fooling=badseq --dpi-desync-fake-tls=C:\Soft\zapret\my_fakes\tls_clienthello_drive_google_com.bin --dpi-desync-repeats=10
В googlevideo.txt
у меня собственно только googlevideo.com
- на моём провайдере как выяснилось разные стратегии для провайдерских ютуб-серверов и зарубежных не нужны.
tls_clienthello_drive_google_com.bin (316 байтов)
ok, пусть будет 12. более-менее актуальные версии pfsense на 12 минимум.
а остальные сами соберут
вот это плохо. собирается под cygwin, а не mingw
Dump of file mdig.exe
File Type: EXECUTABLE IMAGE
Section contains the following imports:
cygwin1.dll
4080F8 Import Address Table
40803C Import Name Table
0 time date stamp
0 Index of first forwarder reference
1B __cxa_atexit
48 __getreent
53 __main
E1 _dll_crt0@0