1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/ipvb-baligo

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Бали — минималистичный инструмент для сборки и упаковки приложений на Golang

Бали (Bali) — это минималистичный инструмент, разработанный на языке Golang, который помогает собирать и упаковывать приложения.

Особенности

У инструмента есть несколько полезных функций:

  • поддержка параметров сборки для определения переменных среды;
  • упаковка, создание сжатых пакетов, поддержка форматов rpm, tar, zip и sh.

На платформе Windows инструмент поддерживает встроенную информацию о версии, значки и манифест приложения.

Поддерживаемые форматы сжатия

Формат Поддерживаемые методы сжатия
rpm gzip, zstd, lzma, xz
tar none (чистый tar), gzip (tar.gz), zstd (tar.zst), xz (tar.xz), bzip2 (tar.bz2), brotli (tar.br)
sh none (чистый tar), gzip (tar.gz), zstd (tar.zst), xz (tar.xz), bzip2 (tar.bz2)
zip deflate, zstd, bzip2, xz

Справка по командной строке

Использование: bali <команда> [флаги]

Бали — минималистичный инструмент для сборки и упаковки приложений на Golang.

Флаги:
  -h, --help             Показать контекстно-зависимую справку.
  -M, --module="."      Явно указать каталог модуля.
  -B, --build="build"   Явно указать директорию сборки.
  -V, --verbose          Сделать операцию более разговорчивой.
  -v, --version          Вывести информацию о версии и выйти.

Команды:
  build     Скомпилировать текущий модуль (по умолчанию).
  update    Обновить зависимости, как записано в go.mod.
  clean     Удалить сгенерированные артефакты.

Для получения дополнительной информации о команде выполните «bali <command> --help».

Команда сборки Bali

Использование: bali build [флаги]

Скомпилируйте текущий модуль (по умолчанию)

Флаги:
  -h, --help                  Показать контекстно-зависимую справку.
  -M, --module="."            Явно указать каталог модуля.
  -B, --build="build"         Явно указать директорию сборки.
  -V, --verbose               Сделать операцию более разговорчивой.
  -v, --version               Вывести информацию о версии и выйти.

  -T, --target="windows"      Целевая ОС, для которой компилируется код.
  -A, --arch="amd64"          Целевая архитектура, для которой компилируется код.
      --release=STRING        Указывает тег версии пакета rpm.
  -D, --destination="dest"    Указать место сохранения пакета.
      --pack=PACK,...         Упаковать в определённом формате. Поддерживается: zip,
                              tar, sh, rpm
      --compression=STRING    Указывает метод сжатия.

Инструкции

Обычная сборка:

cd /path/to/project
bali

Создать сжатый пакет Tar.gz:

bali --pack=tar

Создайте установочный пакет STGZ, который в основном используется на платформах Linux/macOS:

bali --pack=sh --target=linux --arch=amd64

Выведите установочный пакет в указанный каталог:

bali --pack=rpm --target=linux --arch=amd64 --dest=/tmp/output

Создание нескольких пакетов одновременно:

bali --target=linux --arch=arm64 '--pack=sh,rpm,tar' 

Формат файла сборки Bali

Файл проекта bali.toml:

# https://toml.io/en/
name = "bali"
summary = "Bali — Minimalist Golang build and packaging tool"
description = "Bali — Minimalist Golang build and packaging tool"
package-name = "bali-dev"
version = "3.1.0"
license = "MIT"
prefix = "/usr/local"
crates = [
    "cmd/bali",     # crates
    "cmd/peassets",
]

[[include]]
path = "LICENSE"
destination = "share"
rename = "BALI-COPYRIGHT.txt"
permissions = "0664"

Встроенные переменные среды:

  • BUILD_VERSION заполняется полем version файла balisrc.json;
  • BUILD_TIME заполняется временем сборки в соответствии с RFC3339;
  • BUILD_COMMIT заполняется идентификатором фиксации репозитория (когда это репозиторий git);
  • BUILD_GOVERSION заполняется выводом go version (префикс go version удалён);
  • BUILD_BRANCH заполняется именем ветки репозитория (если это репозиторий git).

Другие переменные среды можно использовать в goflags.

Файл сборки программы crate.toml:

name = Бали  минималистичный инструмент для сборки и упаковки приложений на Golang

destination = "bin"
version = "3.1.0"
goflags = [
    "-ldflags",
    "-X 'main.VERSION=$BUILD_VERSION' -X 'main.BUILD_TIME=$BUILD_TIME' -X 'main.BUILD_BRANCH=$BUILD_BRANCH' -X 'main.BUILD_COMMIT=$BUILD_COMMIT'  -X 'main.BUILD_REFNAME=$BUILD_REFNAME' -X 'main.BUILD_GOVERSION=$BUILD_GOVERSION'",
]

Файлы манифеста, связанные с crate.toml (Windows): winres.toml:

```toml
icon = "res/bali.ico" # data:base64-content
manifest = """data:<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
  <description>Bali</description>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="asInvoker" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>
  <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
      <!-- Windows 10 -->
      <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
    </application>
  </compatibility>
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
      <longPathAware xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">true</longPathAware>
    </asmv3:windowsSettings>
  </asmv3:application>
</assembly>
"""

[FixedFileInfo]
FileFlagsMask = "3f"
FileFlags = "00"
FileOS = "40004"
FileType = "01"
FileSubType = "00"

[FixedFileInfo.FileVersion]
Major = 0
Minor = 0
Patch = 0
Build = 0

[FixedFileInfo.ProductVersion]
Major = 0
Minor = 0
Patch = 0
Build = 0

[StringFileInfo]
Comments = ""
CompanyName = "Bali Team"
FileDescription = "Bali — минималистичный инструмент для сборки и упаковки приложений на Golang"
FileVersion = ""
InternalName = "bali.exe"
LegalCopyright = "Copyright © 2024. Bali contributors"
LegalTrademarks = ""
OriginalFilename = "bali.exe"
PrivateBuild = ""
ProductName = "Bali"
ProductVersion = ""
SpecialBuild = ""

[VarFileInfo]
[VarFileInfo.Translation]
LangID = "0409"
CharsetID = "04B0"

Бали интегрирует goversioninfo. Когда целью является Windows, он может встраивать информацию о версии (winres.toml) в исполняемую программу.

Преимущества добавления ссылки на программный манифест очевидны. Например, эскалация привилегий UAC в Windows, поддержка длинных путей в Windows 10 (т. е. поддержка путей > 260 символов), элементы управления в стиле Windows Vista, TaskDialog, настройки DPI и т. д.  всё это требует изменения манифеста приложения.

## Bootstrap

Обычно после установки и настройки среды Golang вы можете выполнить следующую команду для завершения начальной загрузки Bali:

UNIX:

```shell
./script/bootstrap.sh

Windows:

# powershell
pwsh ./script/bootstrap.ps1
# cmd
script/bootstrap.bat

Использование bali в Github Actions

go install github.com/balibuild/bali/v3/cmd/bali@latest

Спасибо!

Способность Bali автоматически добавлять информацию о версии в файлы PE неотделима от вклада проектов с открытым исходным кодом. Большое спасибо разработчику и сопровождающему двух проектов akavel/rsrc и josephspurrier/goversioninfo.

Иконки организации Bali Github и собственные иконки Bali взяты с сайта www.flaticon.com. Создатель — Smashicons.

Введение

**Чрезвычайно простой Golang инструмент для сборки и упаковки.** * *Примечание: в запросе нет текста, который можно было бы перевести.* Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/ipvb-baligo.git
git@api.gitlife.ru:oschina-mirror/ipvb-baligo.git
oschina-mirror
ipvb-baligo
ipvb-baligo
master