Adguardhome/scripts
Maksim Kazantsev 5c44c4b260
Some checks failed
build / test (macOS-latest) (push) Has been cancelled
build / test (ubuntu-latest) (push) Has been cancelled
build / test (windows-latest) (push) Has been cancelled
lint / go-lint (push) Has been cancelled
lint / eslint (push) Has been cancelled
build / build-release (push) Has been cancelled
build / notify (push) Has been cancelled
lint / notify (push) Has been cancelled
Pull request 2731: ADG-12585-fix-ci
Squashed commit of the following:

commit 7abc4da755df09e2975b552cfe8fe30e94766745
Merge: cafaf7d56 e8e328709
Author: Maksim Kazantsev <m.kazantsev@adguard.com>
Date:   Fri Jul 24 15:12:47 2026 +0300

    Merge branch 'master' into ADG-12585-fix-ci

commit cafaf7d5678ef241d3284b4afca673aae0cb9a4b
Author: Maksim Kazantsev <m.kazantsev@adguard.com>
Date:   Fri Jul 24 14:45:51 2026 +0300

    bamboo-specs: fmt;

commit 5c1cb2be154dbf362c07b5470e7cbca9f69f590a
Author: Maksim Kazantsev <m.kazantsev@adguard.com>
Date:   Fri Jul 24 14:15:46 2026 +0300

    bamboo-specs: fmt;

commit 0497ddfa0544ce2f03e5fb54c3f80fe0a63992dd
Author: Maksim Kazantsev <m.kazantsev@adguard.com>
Date:   Fri Jul 24 13:54:20 2026 +0300

    bamboo-specs: fmt;

commit 52ab575f361698c4f463c2388cc9143b924e295a
Author: Maksim Kazantsev <m.kazantsev@adguard.com>
Date:   Fri Jul 24 13:44:28 2026 +0300

    bamboo-specs: imp docs;

commit 04b004aa816c97cdd7f4ad0077fd21541b21c7a0
Author: Maksim Kazantsev <m.kazantsev@adguard.com>
Date:   Fri Jul 24 13:40:49 2026 +0300

    bamboo-specs: fix ci;
2026-07-24 12:15:08 +00:00
..
blocked-services Pull request 2483: AGDNS-3175-sup-service-groups 2025-09-26 14:56:12 +03:00
companiesdb Pull request 2439: ADG-10291 Migrate frontend to SolidJS (client_v2) 2026-07-14 10:42:36 +00:00
hooks Pull request 2610: ADG-11715-all-update-skel 2026-03-19 12:24:04 +00:00
make Pull request 2731: ADG-12585-fix-ci 2026-07-24 12:15:08 +00:00
snap Pull request 2636: AGDNS-3914-increase-snapcraft-build-stability 2026-04-17 14:33:32 +00:00
translations Pull request 2702: AGDNS-4218-fix-translation-scripts 2026-07-10 16:21:47 +00:00
vetted-filters Pull request 2439: ADG-10291 Migrate frontend to SolidJS (client_v2) 2026-07-14 10:42:36 +00:00
install.sh Pull request 2482: AGDNS-3221-imp-functions-aghnet 2025-09-26 14:32:22 +03:00
README.md Pull request 2702: AGDNS-4218-fix-translation-scripts 2026-07-10 16:21:47 +00:00

AdGuard Home scripts

hooks/: Git hooks

Usage

Run make init from the project root.

make/: Makefile scripts

The release channels are: development (the default), edge, beta, and release. If verbosity levels arent documented here, there are only two: 0, dont print anything, and 1, be verbose.

build-docker.sh: Build a multi-architecture Docker image

Required environment:

  • CHANNEL: release channel, see above.

  • DIST_DIR: the directory where a release has previously been built.

  • REVISION: current Git revision.

  • VERSION: release version.

Optional environment:

  • DOCKER_IMAGE_NAME: the name of the resulting Docker container. By default its adguardhome-dev.

  • DOCKER_PUSH: 1 to push the image to DockerHub, 0 to not push. By default its 0.

  • SUDO: allow users to use sudo or doas with docker. By default none is used.

build-release.sh: Build a release for all platforms

Required environment:

  • CHANNEL: release channel, see above.

  • GPG_KEY and GPG_KEY_PASSPHRASE: data for gpg. Only required if SIGN is 1.

Optional environment:

  • ARCH and OS: space-separated list of architectures and operating systems for which to build a release. For example, to build only for 64-bit ARM and AMD on Linux and Darwin:

    make ARCH='amd64 arm64' OS='darwin linux' … build-release
    

    The default value is '', which means build everything.

  • DIST_DIR: the directory to build a release into. The default value is dist.

  • GO: set an alternative name for the Go compiler.

  • SIGN: 0 to not sign the resulting packages, 1 to sign. The default value is 1.

  • VERBOSE: 1 to be verbose, 2 to also print environment. This script calls go-build.sh with the verbosity level one level lower, so to get verbosity level 2 in go-build.sh, set this to 3 when calling build-release.sh.

  • VERSION: release version. Will be set by version.sh if it is unset or if it has the default Makefile value of v0.0.0.

Were using Gos forward compatibility mechanism for updating the Go version. This means that if your go version is 1.21+ but is different from the one required by AdGuard Home, the go tool will automatically download the required version.

If you want to use the version installed on your builder, run:

go get go@$YOUR_VERSION
go mod tidy

and call make with GOTOOLCHAIN=local.

go-bench.sh: Run backend benchmarks

Optional environment:

  • GO: set an alternative name for the Go compiler.

  • TIMEOUT_FLAGS: set timeout flags for tests. The default value is --timeout=30s.

  • VERBOSE: verbosity level. 1 shows every command that is run and every Go package that is processed. 2 also shows subcommands and environment. The default value is 0, dont be verbose.

go-build.sh: Build the backend

Optional environment:

  • GOAMD64: architectural level for AMD64. The default value is v1.

  • GOARM: ARM processor options for the Go compiler.

  • GOMIPS: ARM processor options for the Go compiler.

  • GO: set an alternative name for the Go compiler.

  • OUT: output binary name.

  • PARALLELISM: set the maximum number of concurrently run build commands (that is, compiler, linker, etc.).

  • SOURCE_DATE_EPOCH: the standardized environment variable for the Unix epoch time of the latest commit in the repository. If set, overrides the default obtained from Git. Useful for reproducible builds.

  • VERBOSE: verbosity level. 1 shows every command that is run and every Go package that is processed. 2 also shows subcommands and environment. The default value is 0, dont be verbose.

  • VERSION: release version. Will be set by version.sh if it is unset or if it has the default Makefile value of v0.0.0.

Required environment:

  • CHANNEL: release channel, see above.

go-deps.sh: Install backend dependencies

Optional environment:

  • GO: set an alternative name for the Go compiler.

  • VERBOSE: verbosity level. 1 shows every command that is run and every Go package that is processed. 2 also shows subcommands and environment. The default value is 0, dont be verbose.

go-fuzz.sh: Run backend fuzz tests

Optional environment:

  • GO: set an alternative name for the Go compiler.

  • FUZZTIME_FLAGS: set fuss flags for tests. The default value is --fuzztime=20s.

  • TIMEOUT_FLAGS: set timeout flags for tests. The default value is --timeout=30s.

  • VERBOSE: verbosity level. 1 shows every command that is run and every Go package that is processed. 2 also shows subcommands and environment. The default value is 0, dont be verbose.

go-lint.sh: Run backend static analyzers

Optional environment:

  • EXIT_ON_ERROR: if set to 0, dont exit the script after the first encountered error. The default value is 1.

  • GO: set an alternative name for the Go compiler.

  • VERBOSE: verbosity level. 1 shows every command that is run. 2 also shows subcommands. The default value is 0, dont be verbose.

go-test.sh: Run backend tests

Optional environment:

  • GO: set an alternative name for the Go compiler.

  • RACE: set to 0 to not use the Go race detector. The default value is 1, use the race detector.

  • TIMEOUT_FLAGS: set timeout flags for tests. The default value is --timeout=30s.

  • VERBOSE: verbosity level. 1 shows every command that is run and every Go package that is processed. 2 also shows subcommands. The default value is 0, dont be verbose.

version.sh: Generate And Print The Current Version

Required environment:

  • CHANNEL: release channel, see above.

snap/: Snapcraft scripts

build.sh

Builds the Snapcraft packages from the binaries created by download.sh.

Optional environment:

  • SNAPCRAFT_CMD: Overrides the Snapcraft command. Default: snapcraft.

download.sh

Downloads the binaries to pack them into Snapcraft packages.

Required environment:

  • CHANNEL: release channel, see above.

upload.sh

Uploads the Snapcraft packages created by build.sh.

Required environment:

  • SNAPCRAFT_CHANNEL: Snapcraft release channel: edge, beta, or candidate.

  • SNAPCRAFT_STORE_CREDENTIALS: Credentials for Snapcraft store.

Optional environment:

  • SNAPCRAFT_CMD: Overrides the Snapcraft command. Default: snapcraft.

translations/: Twosky Integration Script

Usage

  • go run ./scripts/translations help: print usage.

  • go run ./scripts/translations download [-n <count>]: download and save all translations. n is optional flag where count is a number of concurrent downloads. Note, that it downloads locales for all configurations in the .twosky.json file.

  • go run ./scripts/translations upload: upload the base en locale.

  • go run ./scripts/translations summary: show the current locales summary.

    Note

    The following script may produce false positives because JavaScript uses template literals like servicesgroup.${group.id}.name, so the actual key won't be found by substring search.

  • go run ./scripts/translations unused: show the list of unused strings.

  • go run ./scripts/translations auto-add: add locales with additions to the git and restore locales with deletions.

After the download youll find the output locales in the configured directory.

Optional environment:

  • DOWNLOAD_LANGUAGES: set a list of specific languages to download. For example ar be bg. If it set to blocker then script will download only those languages, which need to be fully translated (de en es fr it ja ko pt-br pt-pt ru zh-cn zh-tw).

  • UPLOAD_LANGUAGE: set an alternative language for upload.

  • TWOSKY_URI: set an alternative URL for download or upload.

  • TWOSKY_PROJECT_ID: set an alternative project ID. The default value is home.

companiesdb/: Whotracks.me database converter

A simple script that downloads and updates the companies DB in the client code from the repo.

Usage

sh ./scripts/companiesdb/download.sh

blocked-services/: Blocked-services updater

A simple script that downloads and updates the blocked services index from AdGuards Hostlists Registry.

Optional environment:

  • URL: the URL of the index file. By default its https://adguardteam.github.io/HostlistsRegistry/assets/services.json.

Usage

go run ./scripts/blocked-services/main.go

vetted-filters/: Vetted-filters updater

Similar to the one above, a script that downloads and updates the vetted filtering list data from AdGuards Hostlists Registry.

Optional environment:

  • URL: the URL of the index file. By default its https://adguardteam.github.io/HostlistsRegistry/assets/filters.json.

Usage

go run ./scripts/vetted-filters/main.go