ZincSearch использует Go (для сервера) и VueJS (для веб-интерфейса).
Вы должны иметь установленными следующие компоненты:
git clone https://github.com/zincsearch/zincsearch
cd zincsearch
cd web
npm install
npm run build
cd ..
Результат будет сохранен в папке web/dist
. Папка web/dist
будет встроена в бинарник ZincSearch при сборке go-приложения.
Важно, чтобы вы собирали веб-приложение каждый раз, когда вносите изменения в код на языке JavaScript, так как собранный код затем встраивается в go-приложение.
Загрузим зависимости
go mod tidy # это загрузит go-библиотеки, используемые в zincsearch
Простая команда:
go build -o zincsearch cmd/zincsearch/main.go # соберет бинарник ZincSearch
Расширенная команда:
CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -ldflags="-s -w -X github.com/zincsearch/zincsearch/pkg/meta.Version=${VERSION} -X github.com/zincsearch/zincsearch/pkg/meta.CommitHash=${COMMIT_HASH} -X github.com/zincsearch/zincsearch/pkg/meta.BuildDate=${BUILD_DATE}" -o zincsearch cmd/zincsearch/main.go
Установка GOOS
и GOARCH
позволяет выполнять кросс-платформенную компиляцию. Проверьте официальную документацию для всех возможных значений и комбинаций. Этот gist также полезен.Установка CGO_ENABLED=0
позволяет выполнять статическую компиляцию, что приводит к созданию одного бинарного файла без зависимостей.
Настройка ldflags
позволяет передавать значения, такие как номер версии, в бинарник во время сборки, вместо жесткого кодирования значения в исходном коде. Обычно номер версии устанавливается CI-транспортной лентой во время сборки с использованием git-тега
.
После клонирования исходного кода вы можете начать разработку.
Существует два направления разработки.
go mod tidy
ZINC_FIRST_ADMIN_USER=admin ZINC_FIRST_ADMIN_PASSWORD=Complexpass#123 go run cmd/zincsearch/main.go
Это запустит сервер API ZincSearch на порту 4080. Переменные окружения ZINC_FIRST_ADMIN_USER
и ZINC_FIRST_ADMIN_PASSWORD
требуются только в первый раз при запуске ZincSearch.
cd web
npm install
npm run dev
Это запустит сервер интерфейса на порту 8080.
Чтобы эффективно использовать интерфейс, вам потребуется запустить сервер API ZincSearch в отдельном окне, который будет принимать запросы от интерфейса.
Сервер также предоставляет конечную точку API Swagger, которую можно увидеть, посетив путь /swagger/index.html
. Он использует gin-swagger для пометки конечных точек API с аннотациями комментариев и swag для генерации спецификации API из аннотаций в документацию Swagger 2.0.Если вы обновите аннотации, вам также потребуется перегенерировать документацию Swagger, запустив скрипт swagger.sh
, расположенный в корневой папке проекта:
./swagger.sh
2022/05/31 10:18:13 Генерация документации Swagger....
2022/05/31 10:18:13 Генерация общего API Info, папка поиска:./
2022/05/31 10:18:13 Генерация auth.LoginRequest
2022/05/31 10:18:13 Генерация auth.LoginSuccess
2022/05/31 10:18:13 Генерация auth.SimpleUser
2022/05/31 10:18:13 Генерация auth.LoginError
2022/05/31 10:18:13 Создание docs.go в docs/docs.go
2022/05/31 10:18:13 Создание swagger.json в docs/swagger.json
2022/05/31 10:18:13 Создание swagger.yaml в docs/swagger.yaml
Убедитесь, что у вас установлен docker.
Простое создание:
docker build --tag zincsearch:latest . -f Dockerfile
Создание образа для нескольких архитектур
Для создания образов для нескольких архитектур вам потребуется установленный buildx. Вам потребуется передать флаг платформы для платформы, которую вы хотите построить.
docker buildx build --platform linux/amd64 --tag zinc:latest-linux-amd64 . -f Dockerfile.hub
Охват юнит-тестов для кода на Go.
./coverage.sh
.Линтер для JavaScript в GUI
./lint.sh
в папке web.npm run lint-autofix
.Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )