35 Commits

Author SHA1 Message Date
svk
c2ebf1e724 Исправлен скрипт сборки бсд-пакета
All checks were successful
Build and Release / build (push) Successful in 30s
2026-01-23 14:00:49 +03:00
svk
72a23954f6 Тесты сборки
All checks were successful
Build and Release / build (push) Successful in 21s
2026-01-22 22:07:34 +03:00
svk
f865cc2b5e Тесты сборки
Some checks failed
Build and Release / build (push) Failing after 18s
2026-01-22 22:05:56 +03:00
svk
6fd0d2a77b Тесты сборки
All checks were successful
Build and Release / build (push) Successful in 22s
2026-01-22 22:04:14 +03:00
svk
ebc2e2eef8 Тесты сборки
Some checks failed
Build and Release / build (push) Failing after 18s
2026-01-22 22:02:55 +03:00
svk
b12273809b Тесты сборки
All checks were successful
Build and Release / build (push) Successful in 22s
2026-01-22 21:59:31 +03:00
svk
611ed34dc1 Тесты сборки
All checks were successful
Build and Release / build (push) Successful in 21s
2026-01-22 21:55:40 +03:00
svk
d4b7e4e453 Тесты сборки
Some checks failed
Build and Release / build (push) Failing after 19s
2026-01-22 21:52:47 +03:00
svk
80d7fc1256 Тесты сборки
Some checks failed
Build and Release / build (push) Failing after 17s
2026-01-22 21:42:34 +03:00
svk
2e5c7640e5 Тесты сборки
Some checks failed
Build and Release / build (push) Failing after 17s
2026-01-22 21:41:04 +03:00
svk
0c3ef13f25 Тесты сборки
Some checks failed
Build and Release / build (push) Failing after 18s
2026-01-22 21:38:44 +03:00
svk
6f858814ce Тесты сборки
Some checks failed
Build and Release / build (push) Failing after 17s
2026-01-22 21:36:36 +03:00
svk
5f8f7a64c3 Тесты сборки
Some checks failed
Build and Release / build (push) Failing after 18s
2026-01-22 21:33:58 +03:00
svk
a6ad7c7720 Тесты сборки
Some checks failed
Build and Release / build (push) Failing after 18s
2026-01-22 21:31:13 +03:00
svk
ff1e9dcf8e Тесты сборки
Some checks failed
Build and Release / build (push) Failing after 18s
2026-01-22 21:28:21 +03:00
svk
c26301d611 Тесты сборки
Some checks failed
Build and Release / build (push) Failing after 17s
2026-01-22 21:25:03 +03:00
svk
faaecbb271 Тесты сборки
Some checks failed
Build and Release / build (push) Failing after 18s
2026-01-22 21:18:59 +03:00
svk
d60bef5de3 Тесты сборки
Some checks failed
Build and Release / build (push) Failing after 19s
2026-01-22 21:10:56 +03:00
svk
b8ada446e1 Тесты сборки
Some checks failed
Build and Create Tag Release / build (push) Failing after 9s
2026-01-22 21:07:33 +03:00
svk
47f1473167 Тесты сборки
Some checks failed
Build and Create Tag Release / build (push) Failing after 18s
2026-01-22 21:06:17 +03:00
svk
72101c90d5 Тесты сборки
Some checks failed
Build and Create Tag Release / build (push) Failing after 12s
2026-01-22 21:03:55 +03:00
svk
261dc38748 Тесты сборки
Some checks failed
Build and Create Tag Release / build (push) Failing after 12s
2026-01-22 21:02:54 +03:00
svk
e20cb3464f Тесты сборки
All checks were successful
Simple Release / build (push) Successful in 17s
2026-01-22 20:59:04 +03:00
svk
d4ed578178 Тесты сборки
Some checks failed
Simple Release / build (push) Failing after 19s
2026-01-22 20:55:46 +03:00
svk
46017d027a Тесты сборки
All checks were successful
Simple Release / build (push) Successful in 17s
2026-01-22 20:52:47 +03:00
svk
d4d38e26ce Тесты сборки 2026-01-22 20:51:35 +03:00
svk
a2c525ecd1 Тесты сборки 2026-01-22 20:50:36 +03:00
svk
f743c47d6b Тесты сборки
Some checks failed
Сборка Projman / build (push) Failing after 16s
2026-01-22 20:48:40 +03:00
svk
08ba3678f8 Тесты сборки
Some checks failed
Сборка Projman / build (push) Failing after 16s
2026-01-22 20:46:48 +03:00
svk
9cc837bdd8 Тесты сборки
All checks were successful
Сборка Projman / build (push) Successful in 15s
2026-01-22 20:42:53 +03:00
svk
9eb32586c7 Тесты сборки
Some checks failed
Сборка Projman / build (push) Failing after 9s
2026-01-22 20:40:38 +03:00
svk
ff18a032f4 Тесты сборки
All checks were successful
Сборка Projman / build (push) Successful in 15s
2026-01-22 20:38:00 +03:00
svk
debcffb9a2 Тесты сборки
Some checks failed
Gitea Actions / Explore-Gitea-Actions (push) Failing after 10s
2026-01-22 20:35:54 +03:00
svk
9c15f23987 Тесты сборки
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Has been cancelled
2026-01-22 20:31:16 +03:00
svk
5f89f0ce31 Тесты сборки
Some checks failed
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 16s
2026-01-22 20:25:21 +03:00
2 changed files with 261 additions and 47 deletions

View File

@@ -1,54 +1,269 @@
name: Gitea Actions Demo
run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀
on: [push]
name: Build and Release
on:
push:
branches:
- master
- main
workflow_dispatch: # Ручной запуск
jobs:
Explore-Gitea-Actions:
build:
runs-on: tcl-tk-builder
steps:
- name: Build the DEB-packages
- name: Клонирование
run: |
git clone ${{ vars.main_url }}${{ gitea.repository }}
pwd
cd projman/debian
./build-deb-projman.sh
cd ../openbsd
./build-package-bsd.sh
cd ../../
curl --user ${{secrets.USER}}:${{secrets.API_TOKEN}} --upload-file "$(ls -1| grep projman | grep -E 'deb$')" ${{vars.main_url}}api/packages/${{vars.user}}/debian/pool/bookworm/main/upload
- run: echo "This job's status is ${{ job.status }}."
git clone "${{ vars.main_url }}${{ gitea.repository }}.git" .
- name: Create release
- name: Получение версии
id: get_version
run: |
# Создаем релиз через API
curl -X POST \
VERSION=$(grep "Version" projman.tcl | head -1 | grep -o '[0-9.]\+[a-zA-Z0-9]*' || echo "1.0.0")
RELEASE=$(grep "# Release" projman.tcl | tail -1 | awk '{print $NF}' || echo "$(date +%Y%m%d)")
# Создаем имя тега
TAG="v${VERSION}"
echo "TAG=$TAG" >> $GITEA_ENV
echo "VERSION=$VERSION" >> $GITEA_ENV
echo "RELEASE=$RELEASE" >> $GITEA_ENV
echo "Тег: $TAG"
echo "Версия: $VERSION"
echo "Ревизия: $RELEASE"
- name: Проверка существования тега
id: check_tag
run: |
echo "Проверяем тег: $TAG"
# Проверяем на удаленном сервере
if git ls-remote --tags origin "$TAG" 2>/dev/null | grep -q "$TAG"; then
echo "Тег $TAG уже существует на удаленном сервере"
echo "TAG_EXISTS_REMOTE=true" >> $GITEA_ENV
else
echo "Тег $TAG не существует на удаленном сервере"
echo "TAG_EXISTS_REMOTE=false" >> $GITEA_ENV
fi
- name: Создание тега (только если не существует)
if: env.TAG_EXISTS_REMOTE == 'false'
run: |
echo "Создаем новый тег: $TAG"
git config user.email "svk@nuk-svk.ru"
git config user.name "svk"
# Создаем тег локально
git tag -a "$TAG" -m "Release $TAG - $RELEASE"
# Настраиваем URL для push
git remote set-url origin "https://${{ secrets.USER }}:${{ secrets.API_TOKEN }}@git.nuk-svk.ru/${{ gitea.repository }}.git"
# Пушим тег на сервер
git push origin "$TAG"
- name: Сборка пакетов
run: |
echo "=== Сборка DEB пакета ==="
cd debian && ./build-deb-projman.sh
echo "=== Сборка OpenBSD пакета ==="
cd ../openbsd && ./build-package-bsd.sh
echo "=== Собранные файлы ==="
find . -maxdepth 1 -name "projman*" -type f | xargs ls -la 2>/dev/null || echo "Файлы не найдены"
- name: Проверка существования релиза
id: check_release
run: |
# Проверяем, существует ли уже релиз для этого тега
RESPONSE=$(curl -s -u "${{ secrets.USER }}:${{ secrets.API_TOKEN }}" \
"${{ vars.main_url }}api/v1/repos/${{ gitea.repository }}/releases/tags/$TAG" || echo "{}")
echo "Ответ API проверки релиза: $RESPONSE"
# Извлекаем id релиза - первый id в JSON
if echo "$RESPONSE" | grep -q '"id"'; then
# Извлекаем только первый id (id релиза), игнорируем id автора
# Используем awk для точного извлечения
REL_ID=$(echo "$RESPONSE" | awk -F'"id":' '{print $2}' | awk -F',' '{print $1}' | head -1 | tr -d ' ')
echo "Релиз уже существует. ID: $REL_ID"
echo "RELEASE_EXISTS=true" >> $GITEA_ENV
# Очищаем и сохраняем REL_ID в файл
echo -n "$REL_ID" | tr -d '\n' > /tmp/rel_id.txt
else
echo "Релиз не существует"
echo "RELEASE_EXISTS=false" >> $GITEA_ENV
echo -n "" > /tmp/rel_id.txt
fi
- name: Создание или обновление релиза
id: create_release
run: |
# Читаем REL_ID из файла и очищаем от лишних символов
REL_ID=$(cat /tmp/rel_id.txt 2>/dev/null | tr -d '\n\r ' || echo "")
echo "=== Работа с релизом для тега $TAG ==="
echo "RELEASE_EXISTS: $RELEASE_EXISTS"
echo "REL_ID: '$REL_ID'"
RELEASE_BODY="## Projman $VERSION
**Ревизия:** $RELEASE
**Дата сборки:** $(date)
**Коммит:** $(git rev-parse --short HEAD)"
# Экранируем переносы строк для JSON
ESCAPED_BODY=$(echo "$RELEASE_BODY" | sed ':a;N;$!ba;s/\n/\\n/g')
if [ "$RELEASE_EXISTS" = "true" ] && [ -n "$REL_ID" ]; then
echo "Обновляем существующий релиз ID: $REL_ID"
# Обновляем существующий релиз
RESPONSE=$(curl -s -X PATCH \
-u "${{ secrets.USER }}:${{ secrets.API_TOKEN }}" \
-H "Content-Type: application/json" \
-d '{
"tag_name": "'"${{ gitea.ref_name }}"'",
"name": "Release '"${{ gitea.ref_name }}"'",
"body": "Automated release for '"${{ gitea.ref_name }}"'",
"name": "Projman '"$VERSION"'",
"body": "'"$ESCAPED_BODY"'",
"draft": false,
"prerelease": false
}' \
"${{vars.main_url}}/api/v1/repos/${{ gitea.repository }}/releases"
"${{ vars.main_url }}api/v1/repos/${{ gitea.repository }}/releases/$REL_ID")
- name: Get release ID
id: release_info
echo "Ответ обновления релиза: $RESPONSE"
# Проверяем ответ
if echo "$RESPONSE" | grep -q '"id"'; then
echo "Релиз успешно обновлен"
else
echo "ОШИБКА: Не удалось обновить релиз"
echo "Ответ: $RESPONSE"
exit 1
fi
else
echo "Создаем новый релиз"
# Создаем новый релиз
RESPONSE=$(curl -s -X POST \
-u "${{ secrets.USER }}:${{ secrets.API_TOKEN }}" \
-H "Content-Type: application/json" \
-d '{
"tag_name": "'"$TAG"'",
"name": "Projman '"$VERSION"'",
"body": "'"$ESCAPED_BODY"'",
"draft": false,
"prerelease": false
}' \
"${{ vars.main_url }}api/v1/repos/${{ gitea.repository }}/releases")
echo "Ответ создания релиза: $RESPONSE"
# Получаем ID нового релиза
NEW_REL_ID=$(echo "$RESPONSE" | awk -F'"id":' '{print $2}' | awk -F',' '{print $1}' | head -1 | tr -d ' ')
if [ -n "$NEW_REL_ID" ]; then
echo "Новый ID релиза: $NEW_REL_ID"
echo -n "$NEW_REL_ID" > /tmp/rel_id.txt
else
echo "ОШИБКА: Не удалось получить ID релиза из ответа"
echo "Ответ: $RESPONSE"
echo -n "" > /tmp/rel_id.txt
exit 1
fi
fi
- name: Загрузка файлов в релиз
run: |
response=$(curl -s -u "${{ secrets.USER }}:${{ secrets.API_TOKEN }}" \
"${{vars.main_url}}/api/v1/repos/${{ gitea.repository }}/releases/tags/${{ gitea.ref_name }}")
# Читаем REL_ID из файла и очищаем
REL_ID=$(cat /tmp/rel_id.txt 2>/dev/null | tr -d '\n\r ' || echo "")
echo "id=$(echo $response | jq -r '.id')" >> $GITHUB_OUTPUT
if [ -z "$REL_ID" ]; then
echo "Нет ID релиза, пропускаем загрузку файлов"
exit 0
fi
- name: Upload Linux package
echo "=== Загрузка файлов в релиз ==="
echo "ID релиза для загрузки: $REL_ID"
# Находим все файлы projman
FILES=$(find ../ -maxdepth 1 \( -name "*projman*deb" -o -name "*projman*tgz" \) -type f)
if [ -z "$FILES" ]; then
echo "Нет файлов projman для загрузки"
exit 0
fi
echo "Найдены файлы:"
echo "$FILES"
# Сначала проверим существующие ассеты
echo "=== Проверяем существующие ассеты ==="
curl -s -u "${{ secrets.USER }}:${{ secrets.API_TOKEN }}" \
"${{ vars.main_url }}api/v1/repos/${{ gitea.repository }}/releases/$REL_ID/assets" | \
jq -r '.[].name' 2>/dev/null || echo "Не удалось получить список ассетов"
# Загружаем каждый файл
for FILE in $FILES; do
FILENAME=$(basename "$FILE")
echo "Загружаем: $FILENAME"
# Используем правильный endpoint для загрузки ассетов
UPLOAD_URL="${{ vars.main_url }}api/v1/repos/${{ gitea.repository }}/releases/$REL_ID/assets"
echo "URL загрузки: $UPLOAD_URL?name=$FILENAME"
# Загружаем файл
RESPONSE=$(curl -s -w "\nHTTP_STATUS:%{http_code}" \
--user "${{ secrets.USER }}:${{ secrets.API_TOKEN }}" \
-H "Content-Type: application/octet-stream" \
-X POST \
--data-binary @"$FILE" \
"$UPLOAD_URL?name=$FILENAME")
HTTP_STATUS=$(echo "$RESPONSE" | grep "HTTP_STATUS:" | cut -d':' -f2)
API_RESPONSE=$(echo "$RESPONSE" | grep -v "HTTP_STATUS:")
echo "Статус: $HTTP_STATUS"
echo "Ответ API: $API_RESPONSE"
if [ "$HTTP_STATUS" = "201" ] || [ "$HTTP_STATUS" = "200" ]; then
echo "✅ Файл загружен: $FILENAME"
else
echo "❌ ОШИБКА загрузки: $FILENAME"
echo "Детали: $API_RESPONSE"
fi
echo "---"
done
# Проверяем итоговый список ассетов
echo "=== Итоговый список ассетов ==="
curl -s -u "${{ secrets.USER }}:${{ secrets.API_TOKEN }}" \
"${{ vars.main_url }}api/v1/repos/${{ gitea.repository }}/releases/$REL_ID/assets" | \
jq -r '.[] | "\(.name) - \(.browser_download_url)"' 2>/dev/null || \
curl -s -u "${{ secrets.USER }}:${{ secrets.API_TOKEN }}" \
"${{ vars.main_url }}api/v1/repos/${{ gitea.repository }}/releases/$REL_ID/assets" | \
grep -o '"name":"[^"]*"' | cut -d'"' -f4
- name: Финализация
run: |
curl --user "${{ secrets.USER }}:${{ secrets.API_TOKEN }}" \
--upload-file "$(ls -1| grep projman | grep -E 'deb$')" \
"${{vars.main_url}}/api/v1/repos/${{ gitea.repository }}/releases/${{ steps.release_info.outputs.id }}/assets?name=$(ls -1| grep projman | grep -E 'deb$')"
# Читаем REL_ID из файла
REL_ID=$(cat /tmp/rel_id.txt 2>/dev/null | tr -d '\n\r ' || echo "")
- name: Upload OpenBSD package
run: |
curl --user "${{ secrets.USER }}:${{ secrets.API_TOKEN }}" \
--upload-file "$(ls -1| grep projman | grep -E 'tgz$')" \
"${{vars.main_url}}/api/v1/repos/${{ gitea.repository }}/releases/${{ steps.release_info.outputs.id }}/assets?name=$(ls -1| grep projman | grep -E 'tgz$')"
echo "=== Сборка завершена ==="
echo "Тег: $TAG"
echo "Версия: $VERSION"
echo "Ревизия: $RELEASE"
echo "ID релиза: $REL_ID"
if [ -n "$REL_ID" ]; then
echo "Проверяем файлы в релизе..."
curl -s -u "${{ secrets.USER }}:${{ secrets.API_TOKEN }}" \
"${{ vars.main_url }}api/v1/repos/${{ gitea.repository }}/releases/$REL_ID/assets" | \
grep -o '"name":"[^"]*"' | cut -d'"' -f4 || echo "Не удалось получить список файлов"
else
echo "Релиз не был создан или ID не получен"
fi
echo "Собранные файлы:"
find ../ -maxdepth 1 \( -name "*projman*deb" -o -name "*projman*tgz" \) -type f | xargs ls -la 2>/dev/null || echo "Файлы не найдены"

View File

@@ -49,7 +49,6 @@ cat > ${WORK_DIR}/${PKG_FULLNAME}/+CONTENTS << EOF
@depend devel/tklib:tklib-*:tcl-*
@comment Editor for Tcl/Tk and other languages.
@arch amd64
@wantlib pthread
@ignore
@cwd /usr/local
EOF
@@ -78,7 +77,7 @@ Supported languages for highlighting and navigation:
Tcl/Tk, GO, Perl, Python, Ruby, Shell (BASH), Markdown, YAML (Ansible), Lua.
EOF
(cd ${WORK_DIR} && tar -czf ../../../${PKG_FULLNAME}.tgz ${PKG_FULLNAME}/)
(cd ${WORK_DIR}/${PKG_FULLNAME}/ && pwd && ls -1 && tar -czf ../../../../${PKG_FULLNAME}.tgz .)
echo "Package created: ${PKG_FULLNAME}.tgz"