1
0
mirror of https://github.com/Bayselonarrend/OpenIntegrations.git synced 2025-11-25 22:12:29 +02:00
This commit is contained in:
Anton Titovets
2025-05-05 15:44:08 +03:00
parent a2c38e7487
commit e6052f5926
2 changed files with 0 additions and 140 deletions

View File

@@ -1,140 +0,0 @@
name: Update APT Repo
on:
workflow_dispatch:
release:
types: [published]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Setup GPG
env:
GPG_PASSPHRASE: ${{ secrets.ENC_JSON }}
GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }}
run: |
# Создаем директорию GPG
mkdir -p ~/.gnupg
chmod 700 ~/.gnupg
# Настройка GPG для работы без терминала
cat <<EOF > ~/.gnupg/gpg.conf
batch
no-tty
use-agent
pinentry-mode loopback
EOF
# Сохраняем пароль во временный файл
echo "$GPG_PASSPHRASE" > ~/gpg-passphrase.txt
chmod 600 ~/gpg-passphrase.txt
# Импортируем приватный ключ
echo "$GPG_PRIVATE_KEY" | gpg --batch --pinentry-mode loopback --passphrase-file ~/gpg-passphrase.txt --import
# Проверяем, что ключ импортирован
gpg --list-secret-keys
# Удаляем пароль из файловой системы
rm ~/gpg-passphrase.txt
- name: Install dependencies
run: |
sudo apt update
sudo apt install -y reprepro nginx gnupg
- name: Find and download correct .deb file
run: |
REPO_NAME="${{ github.repository }}"
# Получаем ID последнего релиза
LATEST_RELEASE_JSON=$(mktemp)
curl -s -H "Authorization: Bearer ${{ secrets.TOKEN }}" \
-H "Accept: application/vnd.github+json" \
"https://api.github.com/repos/$REPO_NAME/releases/latest" > "$LATEST_RELEASE_JSON"
RELEASE_ID=$(jq -r '.id' "$LATEST_RELEASE_JSON")
if [[ "$RELEASE_ID" == "null" ]]; then
echo "❌ Failed to get release ID"
exit 1
fi
# Получаем список ассетов
ASSET_JSON=$(mktemp)
curl -s -H "Authorization: Bearer ${{ secrets.TOKEN }}" \
-H "Accept: application/vnd.github+json" \
"https://api.github.com/repos/$REPO_NAME/releases/$RELEASE_ID/assets" > "$ASSET_JSON"
# Ищем первый файл, подходящий под маску 'oint_*_all_ru.deb'
FILENAME=$(jq -r '.[] | select(.name | startswith("oint_") and endswith("_all_ru.deb")) | .name' "$ASSET_JSON" | head -n 1)
if [[ -z "$FILENAME" || "$FILENAME" == "null" ]]; then
echo "❌ No matching file found (mask: oint_*_all_ru.deb)"
echo "📎 Available assets:"
jq -r '.[].name' "$ASSET_JSON"
exit 1
fi
echo "📎 Selected file: $FILENAME"
# Получаем URL файла
ASSET_URL=$(jq -r ".[] | select(.name == \"$FILENAME\") | .url" "$ASSET_JSON")
# Скачиваем .deb
echo "📥 Downloading: $FILENAME"
curl -L -o "oint.deb" \
-H "Authorization: Bearer ${{ secrets.TOKEN }}" \
-H "Accept: application/octet-stream" \
"$ASSET_URL"
# Проверяем, что это настоящий .deb
echo "🔍 Verifying file type..."
file "oint.deb"
ar tvf "oint.deb" || echo "⚠️ This may not be a valid .deb file!"
- name: Setup repo structure
run: |
mkdir -p oint/{conf,dists,pool/main}
cat <<EOT > oint/conf/distributions
Origin: bayselonarrend
Label: oint
Suite: stable
Codename: focal
Architectures: amd64
Components: main
Description: OpenIntegrations CLI repo
SignWith: ${{ secrets.GPG_KEY_ID }}
EOT
- name: Add package to repo
env:
GPG_PASSPHRASE: ${{ secrets.ENC_JSON }}
run: |
cd oint
# Установить максимальное доверие к ключу
echo "${{ secrets.GPG_KEY_ID }}:6:" | gpg --import-ownertrust
# Добавляем пакет в репозиторий с подробным логом
GPG="gpg --verbose --pinentry-mode loopback --passphrase=$GPG_PASSPHRASE" \
reprepro includedeb focal ../oint.deb
- name: Deploy to GitHub Pages
run: |
cd oint
git init
git config user.name "Vitaly the Alpaca (bot) "
git config user.email "vitaly.the.alpaca@gmail.com"
git add .
git commit -m "Update APT repo"
git branch -M gh-pages
git remote add origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}
git push -f origin gh-pages
- name: Cleanup
run: |
rm -rf oint

Binary file not shown.