Работа с ALS
ALS (ALT Linux Services) это платформа разработки ALT Linux на домене altlinux.space. Это Forgejo, форк Gitea: репозитории, ветки, pull request, CI, релизы и реестр контейнерных образов. Здесь собирается и хранится разработка Atomic Niri, а эта страница описывает общие приёмы работы с платформой.
Что есть на платформе#
| Возможность | Что даёт | Адрес |
|---|---|---|
| Git-хостинг | репозитории, ветки, теги, pull request | https://altlinux.space/{владелец}/{репозиторий} |
| Forgejo Actions | CI и CD, workflow в .forgejo/workflows/ | вкладка «Actions» репозитория |
| REST API | совместимо с Gitea и Forgejo | https://altlinux.space/api/v1 |
| Реестр образов | OCI-образы для bootc и podman | altlinux.space/{владелец}/{репозиторий} |
| Релизы | git-релизы с приложенными файлами | вкладка «Релизы» репозитория |
| ALS Pages | статические сайты | https://{владелец}.altlinux.team/{репозиторий}/ |
| Раннеры | машины для CI | метки als-tiny, als-huge |
Учётная запись и доступ#
- Зарегистрируйтесь на altlinux.space.
- Создайте токен доступа: «Настройки», затем «Приложения», затем «Создать токен». Выдайте права на репозитории (чтение и запись). Для публикации пакетов и реестра добавьте права на пакеты.
- Токен это пароль. Не вставляйте его в адрес remote и не коммитьте.
Чтобы git сам подставлял токен, включите хранилище учётных данных:
git config --global credential.helper store
git clone https://altlinux.space/ВЛАДЕЛЕЦ/РЕПОЗИТОРИЙ.gitПри первом push git спросит имя и пароль. Пароль это ваш токен, имя пользователя это ваш логин, а git запомнит их в ~/.git-credentials.
Осторожно. Файл ~/.git-credentials хранит токен открытым текстом. Ограничьте доступ: chmod 600 ~/.git-credentials.
Как предложить правку#
Для чужого репозитория обычный путь такой:
- Нажмите «Форкнуть» на странице репозитория.
- Склонируйте свой форк и создайте ветку от основной ветки проекта (в репозиториях Atomic Niri это
dev). - Внесите правки, проверьте их (проверка без пересборки).
- Отправьте ветку в свой форк и откройте pull request в ту же ветку исходного репозитория.
git clone https://altlinux.space/ВАШ_ЛОГИН/РЕПОЗИТОРИЙ.git
cd РЕПОЗИТОРИЙ
git checkout -b my-feature dev
git add -A
git commit -m "Описание правки"
git push origin my-featureСвой репозиторий#
Проект живёт в собственном репозитории под вашей учётной записью или организацией. Репозиторий можно создать в веб-интерфейсе или через API:
curl -X POST -H "Authorization: token $TOKEN" -H "Content-Type: application/json" \
-d '{"name":"my-project","description":"Описание проекта","private":false}' \
https://altlinux.space/api/v1/user/reposДля плагинов Tuner принято своё имя, см. плагины Tuner.
CI: Forgejo Actions#
Workflow лежат в .forgejo/workflows/*.yml (не в .github). В новом репозитории Actions могут быть выключены. Включить их можно в настройках репозитория или через API:
curl -X PATCH -H "Authorization: token $TOKEN" -H "Content-Type: application/json" \
-d '{"has_actions":true}' https://altlinux.space/api/v1/repos/ВЛАДЕЛЕЦ/РЕПОЗИТОРИЙРаннеры#
Образ для задачи выбирается параметром container.image, а метка раннера определяет только мощность:
| Метка | Предел времени | Для чего |
|---|---|---|
als-tiny | 5 минут | линтеры, форматирование, быстрые тесты |
als-huge | 5 часов | сборки и долгие задачи |
Пример: собрать проект на meson#
name: Build
on:
push:
branches: [main, dev]
pull_request:
jobs:
build:
runs-on: als-huge
container:
image: altlinux.space/actions/runner/containers:sisyphus
steps:
- uses: actions/checkout@v4
- name: Зависимости
run: |
apt-get update -qq
apt-get install -y -qq meson gcc pkgconfig libgtk4-devel
- name: Сборка
run: |
meson setup build --prefix=/usr
meson compile -C buildЗапуск вручную через API (workflow_dispatch):
curl -X POST -H "Authorization: token $TOKEN" -H "Content-Type: application/json" \
-d '{"ref":"main"}' \
https://altlinux.space/api/v1/repos/ВЛАДЕЛЕЦ/РЕПОЗИТОРИЙ/actions/workflows/build.yml/dispatchesОтвет 204 значит успех, 404 значит, что Actions выключены или такого workflow нет, а 422 значит подождать несколько секунд.
Секреты#
Токен для CI кладут в секреты репозитория (secrets.REGISTRY_TOKEN) и берут оттуда в workflow. В коде и в логах его быть не должно.
Релизы#
Релиз это тег с приложенными файлами. Через API:
# создать релиз (тег создастся сам)
curl -X POST -H "Authorization: token $TOKEN" -H "Content-Type: application/json" \
-d '{"tag_name":"v1.0","target_commitish":"main","name":"v1.0","body":"Первая версия"}' \
https://altlinux.space/api/v1/repos/ВЛАДЕЛЕЦ/РЕПОЗИТОРИЙ/releases
# приложить файл (подставьте id релиза из ответа)
curl -X POST -H "Authorization: token $TOKEN" -H "Content-Type: application/octet-stream" \
--data-binary @archive.tar.gz \
"https://altlinux.space/api/v1/repos/ВЛАДЕЛЕЦ/РЕПОЗИТОРИЙ/releases/ID/assets?name=archive.tar.gz"Через релизы с приложенными файлами публикуются и виджеты Niti, см. публикация плагина Niti.
Реестр образов#
Образы лежат в реестре altlinux.space/ВЛАДЕЛЕЦ/ИМЯ_ОБРАЗА с метками. Вход и загрузка:
podman login altlinux.space
podman pull altlinux.space/ВЛАДЕЛЕЦ/ИМЯ_ОБРАЗА:МЕТКАДля входа имя любое непустое, а пароль это токен. Список образов и меток: https://altlinux.space/ВЛАДЕЛЕЦ/ИМЯ_ОБРАЗА/packages. Метки образа Atomic Niri описаны на странице каналов.
ALS Pages#
Сайт можно публиковать из репозитория. Адрес выглядит так: https://ВЛАДЕЛЕЦ.altlinux.team/РЕПОЗИТОРИЙ/. Сайт собирается workflow и публикуется в ветку pages действием actions/deploy-pages. Кэш занимает около десяти минут, поэтому правка видна не сразу.
Так устроен и этот сайт: в репозитории лежит генератор, а workflow собирает страницы при каждом изменении в main.
Правила хорошего тона#
- Не занимайте общие раннеры долгими ненужными сборками.
- Не удаляйте чужие запуски, ветки и репозитории.
- Обсуждайте крупные правки заранее: в issue репозитория или в чате ALT Atomic.