1
0
Fork 0
mirror of https://gitlab.com/futo-org/fcast.git synced 2025-06-24 21:25:23 +00:00

Allow for channel update to stable

This commit is contained in:
Michael Hollister 2024-11-21 11:51:46 -06:00
parent fad2c2bfa2
commit a2ded729d1
4 changed files with 33 additions and 4 deletions

View file

@ -95,6 +95,7 @@ module.exports = {
],
hooks: {
readPackageJson: async (forgeConfig, packageJson) => {
packageJson.commit = cp.execSync('git rev-parse HEAD').toString().trim();
packageJson.channel = process.env.FCAST_CHANNEL ? process.env.FCAST_CHANNEL : 'stable';
if (packageJson.channel !== 'stable') {
packageJson.channelVersion = process.env.FCAST_CHANNEL_VERSION ? process.env.FCAST_CHANNEL_VERSION : '1';

View file

@ -5,6 +5,7 @@ import shutil
from functools import cmp_to_key
from util import BUCKET_NAME, S3Client, PackageFormat, ArtifactVersion, compare_versions, generate_update_tarball
COMMIT_SHA = os.environ.get('CI_COMMIT_SHA')
DEPLOY_DIR = os.environ.get('FCAST_DO_RUNNER_DEPLOY_DIR')
TEMP_DIR = os.path.join(DEPLOY_DIR, 'temp')
LOCAL_CACHE_DIR = os.path.join(DEPLOY_DIR, 'cache')
@ -163,6 +164,7 @@ def generate_releases_json(artifact_version, delta_info):
releases = json.load(file)
current_version = releases.get('currentVersion', '0.0.0')
current_commit = releases.get('currentCommit', '')
current_releases = releases.get('currentReleases', {})
channel_current_versions = releases.get('channelCurrentVersions', {})
@ -214,8 +216,10 @@ def generate_releases_json(artifact_version, delta_info):
if artifact_version.channel == 'stable' and max([artifact_version.version, current_version], key=cmp_to_key(compare_versions)):
releases['currentVersion'] = artifact_version.version
releases['currentCommit'] = COMMIT_SHA
else:
releases['currentVersion'] = current_version
releases['currentCommit'] = current_commit
releases['previousVersions'] = s3.get_versions(full=True)
releases['fileVersion'] = RELEASES_JSON_FILE_VERSION

View file

@ -95,7 +95,13 @@ export default class Main {
{
label: 'About',
click: async () => {
let aboutMessage = `Version: ${Main.application.getVersion()}\nRelease channel: ${Updater.releaseChannel}\n`;
let aboutMessage = `Version: ${Main.application.getVersion()}\n`;
if (Updater.getCommit()) {
aboutMessage += `Commit: ${Updater.getCommit()}\n`;
}
aboutMessage += `Release channel: ${Updater.releaseChannel}\n`;
if (Updater.releaseChannel !== 'stable') {
aboutMessage += `Release channel version: ${Updater.getChannelVersion()}\n`;
@ -446,6 +452,7 @@ export default class Main {
Main.logger = log4js.getLogger();
Main.logger.info(`Starting application: ${app.name} | ${app.getAppPath()}`);
Main.logger.info(`Version: ${app.getVersion()}`);
Main.logger.info(`Commit: ${Updater.getCommit()}`);
Main.logger.info(`Release channel: ${Updater.releaseChannel} - ${Updater.getChannelVersion()}`);
Main.logger.info(`OS: ${process.platform} ${process.arch}`);

View file

@ -241,6 +241,11 @@ export class Updater {
return Updater.localPackageJson.channelVersion;
}
public static getCommit(): string {
Updater.localPackageJson.commit = Updater.localPackageJson.commit ? Updater.localPackageJson.commit : null
return Updater.localPackageJson.commit;
}
public static async processUpdate(): Promise<void> {
try {
const updateInfo: UpdateInfo = JSON.parse(fs.readFileSync(Updater.updateMetadataPath, 'utf8'));
@ -319,10 +324,22 @@ export class Updater {
const localChannelVersion: number = Updater.localPackageJson.channelVersion ? Updater.localPackageJson.channelVersion : 0;
const currentChannelVersion: number = Updater.releasesJson.channelCurrentVersions[Updater.localPackageJson.channel] ? Updater.releasesJson.channelCurrentVersions[Updater.localPackageJson.channel] : 0;
logger.info('Update check', { channel: Updater.localPackageJson.channel, channel_version: localChannelVersion, localVersion: Updater.localPackageJson.version,
currentVersion: Updater.releasesJson.currentVersion, currentChannelVersion: currentChannelVersion });
logger.info('Update check', {
channel: Updater.localPackageJson.channel,
channel_version: localChannelVersion,
localVersion: Updater.localPackageJson.version,
currentVersion: Updater.releasesJson.currentVersion,
currentCommit: Updater.releasesJson.currentCommit,
currentChannelVersion: currentChannelVersion
});
if (Updater.localPackageJson.version !== Updater.releasesJson.currentVersion || (Updater.localPackageJson.channel !== 'stable' && localChannelVersion < currentChannelVersion)) {
const newVersion = Updater.localPackageJson.version !== Updater.releasesJson.currentVersion;
const newChannelVersion = (Updater.localPackageJson.channel !== 'stable' && localChannelVersion < currentChannelVersion);
// Allow for update promotion to stable, while still getting updates from the subscribed channel
const newCommit = (Updater.localPackageJson.channel !== 'stable' && Updater.localPackageJson.commit !== Updater.releasesJson.currentCommit);
if (newVersion || newChannelVersion || newCommit) {
logger.info('Update available...');
return true;
}