chore: cut GitHub, make vrcx Gitea-only

- relink README/CHANGELOG/pyproject to git.engelgardt23.ru; drop github build badge
- update-check + clone URL point to Gitea; rename GITHUB_REPO -> REPO
- port CI to .gitea/workflows (self-contained, publishes Gitea release)
- remove .github (workflow + issue templates)
This commit is contained in:
Engelgardt23
2026-06-01 13:04:49 +03:00
parent fcf5424735
commit 5783b2c17d
11 changed files with 50 additions and 113 deletions
@@ -8,24 +8,30 @@ on:
permissions: permissions:
contents: write contents: write
# Self-contained: no external (GitHub-hosted) actions. Runs on a self-hosted
# Windows runner (label `windows`) that already has Python 3.12 on PATH.
jobs: jobs:
build: build:
runs-on: windows-latest runs-on: windows
steps: steps:
- uses: actions/checkout@v4 - name: Checkout repository at tag
shell: pwsh
- name: Set up Python env:
uses: actions/setup-python@v5 TOKEN: ${{ github.token }}
with: run: |
python-version: '3.12' $base = "${{ github.server_url }}" -replace '^https://', ''
$url = "https://oauth2:$env:TOKEN@$base/${{ github.repository }}.git"
git clone --depth 1 --branch "$env:GITHUB_REF_NAME" $url .
- name: Install build dependencies - name: Install build dependencies
run: python -m pip install --upgrade pip pyinstaller rich paramiko run: python -m pip install --upgrade pip pyinstaller rich paramiko
- name: Resolve version from tag - name: Resolve version from tag
id: ver id: ver
shell: bash shell: pwsh
run: echo "version=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT" run: |
$v = "$env:GITHUB_REF_NAME" -replace '^v', ''
"version=$v" | Out-File -FilePath $env:GITHUB_OUTPUT -Append -Encoding utf8
- name: Build executable - name: Build executable
run: python -m PyInstaller --onefile --console --name vrcx --icon dev/assets/icon.ico --paths dev/src dev/vrcx-launcher.py run: python -m PyInstaller --onefile --console --name vrcx --icon dev/assets/icon.ico --paths dev/src dev/vrcx-launcher.py
@@ -75,10 +81,19 @@ jobs:
"$hash $zip" | Out-File -FilePath "$zip.sha256" -Encoding ASCII -NoNewline "$hash $zip" | Out-File -FilePath "$zip.sha256" -Encoding ASCII -NoNewline
Get-Content "$zip.sha256" Get-Content "$zip.sha256"
- name: Create release - name: Publish Gitea release
uses: softprops/action-gh-release@v2 shell: pwsh
with: env:
files: | TOKEN: ${{ github.token }}
vrcx-portable-v${{ steps.ver.outputs.version }}.zip run: |
vrcx-portable-v${{ steps.ver.outputs.version }}.zip.sha256 $ver = '${{ steps.ver.outputs.version }}'
generate_release_notes: true $tag = "v$ver"
$api = "${{ github.server_url }}/api/v1/repos/${{ github.repository }}"
$hdr = @{ Authorization = "token $env:TOKEN" }
$body = @{ tag_name = $tag; name = $tag; draft = $false; prerelease = $false } | ConvertTo-Json
$rel = Invoke-RestMethod -Method Post -Uri "$api/releases" -Headers $hdr -ContentType 'application/json' -Body $body
$rid = $rel.id
foreach ($f in @("vrcx-portable-v$ver.zip", "vrcx-portable-v$ver.zip.sha256")) {
curl.exe -s -H "Authorization: token $env:TOKEN" -F "attachment=@$f" "$api/releases/$rid/assets?name=$f" | Out-Null
Write-Host "uploaded $f"
}
-49
View File
@@ -1,49 +0,0 @@
name: Bug report
description: Something doesn't work as expected
labels: ["bug"]
body:
- type: input
id: version
attributes:
label: Version
description: Visible in the startup banner.
placeholder: v0.1.0
validations:
required: true
- type: textarea
id: steps
attributes:
label: Steps to reproduce
placeholder: |
1. ...
2. ...
3. ...
validations:
required: true
- type: textarea
id: expected
attributes:
label: What you expected to happen
validations:
required: true
- type: textarea
id: actual
attributes:
label: What actually happened
description: Paste any error output verbatim. Screenshots are welcome.
validations:
required: true
- type: input
id: bmc_fw
attributes:
label: BMC firmware version (if relevant)
placeholder: e.g. YADRO VEGMAN Sx20 BMC Firmware v1.8r1389cd
- type: textarea
id: extra
attributes:
label: Anything else?
-5
View File
@@ -1,5 +0,0 @@
blank_issues_enabled: false
contact_links:
- name: Security vulnerability
url: https://github.com/Engelgardt23/vrcx/security/advisories/new
about: Please report security issues privately via GitHub Security Advisories — not as a public issue.
@@ -1,22 +0,0 @@
name: Feature request
description: Suggest a new feature or an improvement
labels: ["enhancement"]
body:
- type: textarea
id: motivation
attributes:
label: What's the use case?
validations:
required: true
- type: textarea
id: proposal
attributes:
label: Proposed solution
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Alternatives considered
+3 -3
View File
@@ -29,8 +29,8 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and
- Multi-BMC parallel collection over SSH, with the YADRO BMC CLI command set + raw shell + `cat` + `journalctl` + Redfish. - Multi-BMC parallel collection over SSH, with the YADRO BMC CLI command set + raw shell + `cat` + `journalctl` + Redfish.
- Output structure 1:1 with VRC v1.1b — same per-host `<serial>_bmcdump_<datetime>` layout inside a single session `tar.gz`. - Output structure 1:1 with VRC v1.1b — same per-host `<serial>_bmcdump_<datetime>` layout inside a single session `tar.gz`.
- Full-screen rich-based TUI: per-host progress table + rolling events panel. - Full-screen rich-based TUI: per-host progress table + rolling events panel.
- Auto-update check on startup against GitHub `/releases/latest`. - Auto-update check on startup against the Gitea instance `/releases/latest`.
- MIT licensed. - MIT licensed.
[Unreleased]: https://github.com/Engelgardt23/vrcx/compare/v0.1.0...HEAD [Unreleased]: https://git.engelgardt23.ru/engel/vrcx/compare/v0.1.0...HEAD
[0.1.0]: https://github.com/Engelgardt23/vrcx/releases/tag/v0.1.0 [0.1.0]: https://git.engelgardt23.ru/engel/vrcx/releases/tag/v0.1.0
+3 -4
View File
@@ -1,7 +1,6 @@
# vrcx # vrcx
[![Latest release](https://img.shields.io/github/v/release/Engelgardt23/vrcx?include_prereleases&label=release)](https://github.com/Engelgardt23/vrcx/releases/latest) [![Latest release](https://img.shields.io/gitea/v/release/engel/vrcx?gitea_url=https%3A%2F%2Fgit.engelgardt23.ru&include_prereleases&label=release)](https://git.engelgardt23.ru/engel/vrcx/releases/latest)
[![Build](https://img.shields.io/github/actions/workflow/status/Engelgardt23/vrcx/release.yml?label=build)](https://github.com/Engelgardt23/vrcx/actions)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
[![Lang: en \| ru](https://img.shields.io/badge/lang-en%20%7C%20ru-blue)](#) [![Lang: en \| ru](https://img.shields.io/badge/lang-en%20%7C%20ru-blue)](#)
@@ -22,7 +21,7 @@ The original VRC only touches the BMC. In real incidents support almost always a
## Download ## Download
Grab the latest release: [**releases page**](https://github.com/Engelgardt23/vrcx/releases/latest). Grab the latest release: [**releases page**](https://git.engelgardt23.ru/engel/vrcx/releases/latest).
The asset is `vrcx-portable-vX.Y.Z.zip`. The asset is `vrcx-portable-vX.Y.Z.zip`.
## Run ## Run
@@ -86,7 +85,7 @@ Adding a new artefact = one line in the relevant table.
## Build from source ## Build from source
``` ```
git clone https://github.com/Engelgardt23/vrcx.git git clone https://git.engelgardt23.ru/engel/vrcx.git
cd vrcx cd vrcx
python -m pip install rich paramiko pyinstaller python -m pip install rich paramiko pyinstaller
python -m PyInstaller --onefile --console --name vrcx --icon dev/assets/icon.ico --paths dev/src dev/vrcx-launcher.py python -m PyInstaller --onefile --console --name vrcx --icon dev/assets/icon.ico --paths dev/src dev/vrcx-launcher.py
+3 -4
View File
@@ -1,7 +1,6 @@
# vrcx # vrcx
[![Последний релиз](https://img.shields.io/github/v/release/Engelgardt23/vrcx?include_prereleases&label=release)](https://github.com/Engelgardt23/vrcx/releases/latest) [![Последний релиз](https://img.shields.io/gitea/v/release/engel/vrcx?gitea_url=https%3A%2F%2Fgit.engelgardt23.ru&include_prereleases&label=release)](https://git.engelgardt23.ru/engel/vrcx/releases/latest)
[![Сборка](https://img.shields.io/github/actions/workflow/status/Engelgardt23/vrcx/release.yml?label=build)](https://github.com/Engelgardt23/vrcx/actions)
[![Лицензия: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Лицензия: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
[![Язык: en \| ru](https://img.shields.io/badge/lang-en%20%7C%20ru-blue)](#) [![Язык: en \| ru](https://img.shields.io/badge/lang-en%20%7C%20ru-blue)](#)
@@ -22,7 +21,7 @@
## Скачать ## Скачать
Последний релиз: [**страница релизов**](https://github.com/Engelgardt23/vrcx/releases/latest). Последний релиз: [**страница релизов**](https://git.engelgardt23.ru/engel/vrcx/releases/latest).
Архив: `vrcx-portable-vX.Y.Z.zip`. Архив: `vrcx-portable-vX.Y.Z.zip`.
## Запуск ## Запуск
@@ -86,7 +85,7 @@ out/<ДДММГГГГ_ЧЧММСС>.tar.gz ← готовый бандл дл
## Сборка из исходников ## Сборка из исходников
``` ```
git clone https://github.com/Engelgardt23/vrcx.git git clone https://git.engelgardt23.ru/engel/vrcx.git
cd vrcx cd vrcx
python -m pip install rich paramiko pyinstaller python -m pip install rich paramiko pyinstaller
python -m PyInstaller --onefile --console --name vrcx --icon dev/assets/icon.ico --paths dev/src dev/vrcx-launcher.py python -m PyInstaller --onefile --console --name vrcx --icon dev/assets/icon.ico --paths dev/src dev/vrcx-launcher.py
+2 -2
View File
@@ -13,8 +13,8 @@ dependencies = ["rich>=13", "paramiko>=3"]
dynamic = ["version"] dynamic = ["version"]
[project.urls] [project.urls]
Homepage = "https://github.com/Engelgardt23/vrcx" Homepage = "https://git.engelgardt23.ru/engel/vrcx"
Issues = "https://github.com/Engelgardt23/vrcx/issues" Issues = "https://git.engelgardt23.ru/engel/vrcx/issues"
[project.scripts] [project.scripts]
vrcx = "vrcx.app:main" vrcx = "vrcx.app:main"
+1 -1
View File
@@ -10,4 +10,4 @@ The single source of truth for the project version. Bump this before tagging
a release; CI reads the tag, the code reads this constant.""" a release; CI reads the tag, the code reads this constant."""
__version__ = "0.2.0-dev" __version__ = "0.2.0-dev"
GITHUB_REPO = "engel/vrcx" # на Forgejo (git.engelgardt23.ru) REPO = "engel/vrcx" # self-hosted Gitea (git.engelgardt23.ru)
+2 -2
View File
@@ -19,7 +19,7 @@ from rich.console import Console
from rich.prompt import Confirm, Prompt from rich.prompt import Confirm, Prompt
from rich.table import Table from rich.table import Table
from . import __version__, GITHUB_REPO from . import __version__, REPO
from .bmc import BmcSession from .bmc import BmcSession
from .collector import collect_host from .collector import collect_host
from .config import load_config, Config from .config import load_config, Config
@@ -170,7 +170,7 @@ def _print_header(console: Console) -> None:
title = f"[bold cyan]vrcx v{__version__}[/] {t('tagline')}" title = f"[bold cyan]vrcx v{__version__}[/] {t('tagline')}"
latest = check_for_update() latest = check_for_update()
if latest: if latest:
release_url = f"https://git.engelgardt23.ru/{GITHUB_REPO}/releases/latest" release_url = f"https://git.engelgardt23.ru/{REPO}/releases/latest"
notice = t("update_available", tag=latest) notice = t("update_available", tag=latest)
header = Table.grid(expand=True) header = Table.grid(expand=True)
header.add_column(justify="left", ratio=1) header.add_column(justify="left", ratio=1)
+5 -5
View File
@@ -1,16 +1,16 @@
""" """
Auto-update check. Auto-update check.
On startup, ask GitHub for the latest release tag. If it's newer than the On startup, ask the Gitea instance for the latest release tag. If it's newer
local `__version__`, return the tag string — the caller renders a clickable than the local `__version__`, return the tag string — the caller renders a
hint next to the title. Silent on any error (offline, rate-limit, etc.). clickable hint next to the title. Silent on any error (offline, rate-limit, etc.).
""" """
from __future__ import annotations from __future__ import annotations
import json import json
import urllib.request import urllib.request
from . import __version__, GITHUB_REPO from . import __version__, REPO
def _parse_version(s: str) -> tuple[int, int, int]: def _parse_version(s: str) -> tuple[int, int, int]:
@@ -29,7 +29,7 @@ def check_for_update() -> str | None:
the currently running version. Returns None when up-to-date, offline, the currently running version. Returns None when up-to-date, offline,
rate-limited or on any error — caller decides how to render.""" rate-limited or on any error — caller decides how to render."""
try: try:
url = f"https://git.engelgardt23.ru/api/v1/repos/{GITHUB_REPO}/releases/latest" url = f"https://git.engelgardt23.ru/api/v1/repos/{REPO}/releases/latest"
req = urllib.request.Request(url, headers={ req = urllib.request.Request(url, headers={
"User-Agent": f"vrcx/{__version__}", "User-Agent": f"vrcx/{__version__}",
}) })