1
0
mirror of https://github.com/Unleash/unleash.git synced 2026-01-05 20:06:22 +01:00

feat: setup initial release template (#11113)

This PR adds a migration that will insert a default unleash release
template into the database. It adds a release template with 4 milestones
(25%/50%/75%/100%).
This commit is contained in:
Fredrik Strand Oseberg 2025-12-12 09:28:34 +01:00 committed by GitHub
parent 9e1865d727
commit 65b68ede90
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -0,0 +1,54 @@
'use strict';
const TEMPLATE_NAME = 'Unleash Release Template';
const TEMPLATE_ID = '01KC6TD3HASJWRPMKT1ACY8M3A';
exports.up = function (db, callback) {
const milestoneIds = ['01KC6VHE9VYKDN12C5VASZ5GQY', '01KC6VHE9VB6YX6B3QVJ6J8M7D', '01KC6VHE9V0JFJSTHY5AYMSF0G', '01KC6VHE9VJSFWF0RJDYCVMWBC'];
const strategyIds = ['01KC6VJDDYAYBRCZT92YFF1H5Q', '01KC6VJDDYMA9W74KJ4TJ9EEK6', '01KC6VJDDYD4VX407YX4QA3AVJ', '01KC6VJDDYVR43TJTWY1BZ2SYF'];
db.runSql(
`
INSERT INTO release_plan_definitions (id, discriminator, name, description, created_by_user_id)
SELECT '${TEMPLATE_ID}', 'template', '${TEMPLATE_NAME}',
'A built-in progressive rollout template with 25%, 50%, 75%, and 100% milestones.',
-1337
WHERE NOT EXISTS (
SELECT 1 FROM release_plan_definitions
WHERE discriminator = 'template'
);
INSERT INTO milestones (id, name, sort_order, release_plan_definition_id)
SELECT v.id, v.name, v.sort_order, '${TEMPLATE_ID}'
FROM (VALUES
('${milestoneIds[0]}', 'Rollout 25%', 0),
('${milestoneIds[1]}', 'Rollout 50%', 1),
('${milestoneIds[2]}', 'Rollout 75%', 2),
('${milestoneIds[3]}', 'Rollout 100%', 3)
) AS v(id, name, sort_order)
WHERE EXISTS (
SELECT 1 FROM release_plan_definitions WHERE id = '${TEMPLATE_ID}'
);
INSERT INTO milestone_strategies (id, milestone_id, sort_order, title, strategy_name, parameters, constraints)
SELECT v.strategy_id, v.milestone_id, 0, '', 'flexibleRollout', v.params::jsonb, '[]'::jsonb
FROM (VALUES
('${strategyIds[0]}', '${milestoneIds[0]}', '{"rollout":"25","stickiness":"default","groupId":"{{featureName}}"}'),
('${strategyIds[1]}', '${milestoneIds[1]}', '{"rollout":"50","stickiness":"default","groupId":"{{featureName}}"}'),
('${strategyIds[2]}', '${milestoneIds[2]}', '{"rollout":"75","stickiness":"default","groupId":"{{featureName}}"}'),
('${strategyIds[3]}', '${milestoneIds[3]}', '{"rollout":"100","stickiness":"default","groupId":"{{featureName}}"}')
) AS v(strategy_id, milestone_id, params)
WHERE EXISTS (
SELECT 1 FROM milestones WHERE id = v.milestone_id
);
`,
callback,
);
};
exports.down = function (db, callback) {
db.runSql(
`DELETE FROM release_plan_definitions WHERE id = '${TEMPLATE_ID}'`,
callback,
);
};