feat(version): единый файл версий и отображение client/server в настройках
This commit is contained in:
parent
e9f58ca004
commit
ecb018b32c
@ -7,3 +7,10 @@
|
||||
|
||||
## Примечание
|
||||
- Если внешний инструмент/интеграция требует английский формат, допускается английский, но рядом желательно дать краткое пояснение на русском.
|
||||
|
||||
## Версионирование
|
||||
- Единый файл версий проекта: `VERSION.properties` (в корне репозитория).
|
||||
- Перед каждым новым коммитом обязательно увеличивать версии в `VERSION.properties`:
|
||||
- `client.version` — версия клиентского UI.
|
||||
- `server.version` — версия серверной части.
|
||||
- Базовое правило инкремента: `+1` по последнему числовому сегменту (patch), если не оговорено иное.
|
||||
|
||||
2
VERSION.properties
Normal file
2
VERSION.properties
Normal file
@ -0,0 +1,2 @@
|
||||
client.version=1.2.0
|
||||
server.version=1.2.0
|
||||
@ -4,6 +4,13 @@ plugins {
|
||||
id 'com.github.johnrengelman.shadow' version '8.1.1'
|
||||
}
|
||||
|
||||
def appVersionProps = new Properties()
|
||||
def appVersionFile = file('VERSION.properties')
|
||||
if (appVersionFile.exists()) {
|
||||
appVersionFile.withInputStream { appVersionProps.load(it) }
|
||||
}
|
||||
def serverVersionFromFile = String.valueOf(appVersionProps.getProperty('server.version', '1.1_codex')).trim()
|
||||
|
||||
allprojects {
|
||||
tasks.withType(JavaCompile).configureEach {
|
||||
options.encoding = 'UTF-8'
|
||||
@ -11,7 +18,7 @@ allprojects {
|
||||
}
|
||||
|
||||
group = 'shine'
|
||||
version = '1.1_codex'
|
||||
version = serverVersionFromFile
|
||||
|
||||
tasks.jar {
|
||||
enabled = false // это что бы не создавала обычный джар, а будет только толстый джар
|
||||
|
||||
@ -5,9 +5,19 @@ SRC_DIR="shine-UI"
|
||||
REMOTE_HOST="root@194.87.0.247"
|
||||
REMOTE_DIR="/home/user/docker/caddyFile/sites/shine-UI"
|
||||
BUILD_VERSION="$(date -u +%Y%m%d%H%M%S)"
|
||||
VERSION_FILE="VERSION.properties"
|
||||
export BUILD_VERSION
|
||||
TMP_DIR="$(mktemp -d)"
|
||||
|
||||
CLIENT_VERSION="dev"
|
||||
if [[ -f "$VERSION_FILE" ]]; then
|
||||
CLIENT_VERSION="$(sed -n "s/^client\\.version[[:space:]]*=[[:space:]]*//p" "$VERSION_FILE" | head -n 1 | tr -d '\r' | xargs)"
|
||||
if [[ -z "$CLIENT_VERSION" ]]; then
|
||||
CLIENT_VERSION="dev"
|
||||
fi
|
||||
fi
|
||||
export CLIENT_VERSION
|
||||
|
||||
cleanup() {
|
||||
rm -rf "$TMP_DIR"
|
||||
}
|
||||
@ -28,6 +38,7 @@ if [[ ! -f "$INDEX_FILE" ]]; then
|
||||
fi
|
||||
|
||||
perl -0pi -e 's/window\.__SHINE_BUILD_HASH__\s*=\s*'\''[^'\'']*'\'';/window.__SHINE_BUILD_HASH__ = '\''$ENV{BUILD_VERSION}'\'';/' "$INDEX_FILE"
|
||||
perl -0pi -e 's/window\.__SHINE_CLIENT_VERSION__\s*=\s*'\''[^'\'']*'\'';/window.__SHINE_CLIENT_VERSION__ = '\''$ENV{CLIENT_VERSION}'\'';/' "$INDEX_FILE"
|
||||
|
||||
echo "==> Checking SSH connectivity to $REMOTE_HOST"
|
||||
ssh -o BatchMode=yes -o ConnectTimeout=10 "$REMOTE_HOST" "echo SSH OK" >/dev/null
|
||||
|
||||
@ -7,6 +7,7 @@
|
||||
<title>Shine UI Demo</title>
|
||||
<script>
|
||||
window.__SHINE_BUILD_HASH__ = '20260413151200';
|
||||
window.__SHINE_CLIENT_VERSION__ = '1.2.0';
|
||||
</script>
|
||||
<script>
|
||||
(function attachStylesWithBuildHash() {
|
||||
|
||||
@ -13,6 +13,7 @@ export const pageMeta = { id: 'settings-view', title: 'Настройки' };
|
||||
export function render({ navigate }) {
|
||||
const screen = document.createElement('section');
|
||||
screen.className = 'stack';
|
||||
let isDisposed = false;
|
||||
|
||||
screen.append(
|
||||
renderHeader({
|
||||
@ -119,9 +120,46 @@ export function render({ navigate }) {
|
||||
}
|
||||
});
|
||||
|
||||
const versionCard = document.createElement('div');
|
||||
versionCard.className = 'card stack';
|
||||
|
||||
const title = document.createElement('p');
|
||||
title.className = 'field-label';
|
||||
title.textContent = 'Версии';
|
||||
|
||||
const clientVersion = document.createElement('p');
|
||||
clientVersion.className = 'meta-muted';
|
||||
clientVersion.textContent = `Клиент: ${String(window.__SHINE_CLIENT_VERSION__ || 'n/a').trim() || 'n/a'}`;
|
||||
|
||||
const uiBuild = document.createElement('p');
|
||||
uiBuild.className = 'meta-muted';
|
||||
uiBuild.textContent = `Сборка UI: ${String(window.__SHINE_BUILD_HASH__ || 'n/a').trim() || 'n/a'}`;
|
||||
|
||||
const serverVersion = document.createElement('p');
|
||||
serverVersion.className = 'meta-muted';
|
||||
serverVersion.textContent = 'Сервер: загружается...';
|
||||
|
||||
versionCard.append(title, clientVersion, uiBuild, serverVersion);
|
||||
|
||||
void (async () => {
|
||||
try {
|
||||
const resp = await authService.ws.request('GetServerInfo', {});
|
||||
const value = String(resp?.payload?.version || '').trim() || 'n/a';
|
||||
if (!isDisposed) {
|
||||
serverVersion.textContent = `Сервер: ${value}`;
|
||||
}
|
||||
} catch {
|
||||
if (!isDisposed) {
|
||||
serverVersion.textContent = 'Сервер: недоступно';
|
||||
}
|
||||
}
|
||||
})();
|
||||
|
||||
screen.append(card);
|
||||
screen.cleanup = () => {
|
||||
isDisposed = true;
|
||||
unsubscribeInstallAvailability();
|
||||
};
|
||||
screen.append(versionCard);
|
||||
return screen;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user