@catladder/pipeline
Version:
Panter workflow for cloud CI/CD and DevOps
67 lines (57 loc) • 1.65 kB
text/typescript
import type { GitlabRule } from "../types";
export const RULE_CONDITION_MAIN_BRANCH =
"$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH";
export const RULE_CONDITION_RELEASE_COMMIT =
"$CI_COMMIT_MESSAGE =~ /^chore\\(release\\).*/";
export const RULE_CONDITION_NOT_RELEASE_COMMIT =
"$CI_COMMIT_MESSAGE !~ /^chore\\(release\\).*/";
export const RULE_IS_MAIN_BRANCH: GitlabRule = {
if: RULE_CONDITION_MAIN_BRANCH,
};
export const RULE_IS_MAIN_BRANCH_AND_NOT_RELEASE_COMMIT: GitlabRule = {
if: RULE_CONDITION_MAIN_BRANCH + " && " + RULE_CONDITION_NOT_RELEASE_COMMIT,
};
export const RULE_NEVER_ON_RELEASE_COMMIT: GitlabRule = {
if: RULE_CONDITION_RELEASE_COMMIT,
when: "never",
};
export const RULE_NEVER_ON_SCHEDULE: GitlabRule = {
if: '$CI_PIPELINE_SOURCE == "schedule"',
when: "never",
};
export const RULE_IS_MERGE_REQUEST: GitlabRule = {
if: "$CI_MERGE_REQUEST_ID",
};
export const RULE_IS_TAGGED_RELEASE: GitlabRule = {
if: "$CI_COMMIT_TAG",
};
export const RULE_CONDITION_HOTFIX_BRANCH =
"$CI_COMMIT_BRANCH =~ /^[0-9]+.([0-9]+|x).x$/";
export const RULES_RELEASE: GitlabRule[] = [
RULE_NEVER_ON_RELEASE_COMMIT,
RULE_NEVER_ON_SCHEDULE,
{
if: RULE_CONDITION_MAIN_BRANCH + ' && $AUTO_RELEASE == "true"',
when: "on_success",
},
{
if: RULE_CONDITION_MAIN_BRANCH,
when: "manual",
},
{
if: RULE_CONDITION_HOTFIX_BRANCH,
when: "manual",
},
];
export const RULES_MANUAL_RELEASE: GitlabRule[] = [
RULE_NEVER_ON_RELEASE_COMMIT,
RULE_NEVER_ON_SCHEDULE,
{
if: RULE_CONDITION_MAIN_BRANCH,
when: "manual",
},
{
if: RULE_CONDITION_HOTFIX_BRANCH,
when: "manual",
},
];