UNPKG

gitlab-ci-local

Version:

Tired of pushing to test your .gitlab-ci.yml?

67 lines 15.5 kB
import camelCase from "camelcase"; export function init({ gitData, argv, envMatchedVariables }) { const _variables = { ...envMatchedVariables, ...argv.variable }; // precedence: // 1. cli option // 2. gitlab variables files // 3. values derieved implicitly from `git remote -v` // 4. default value const CI_SERVER_PROTOCOL = _variables["CI_SERVER_PROTOCOL"] ?? ((gitData.remote.schema === "http" || gitData.remote.schema === "https") ? gitData.remote.schema : "https"); const CI_SERVER_PORT = _variables["CI_SERVER_PORT"] ?? ((gitData.remote.schema === "http" || gitData.remote.schema === "https") ? gitData.remote.port : "443"); const CI_SERVER_SHELL_SSH_PORT = _variables["CI_SERVER_SHELL_SSH_PORT"] ?? ((gitData.remote.schema === "ssh") ? gitData.remote.port : "22"); const CI_SERVER_HOST = _variables["CI_SERVER_HOST"] ?? `${gitData.remote.host}`; const CI_SERVER_FQDN = _variables["CI_SERVER_FQDN"] ?? (CI_SERVER_PORT == "443" ? gitData.remote.host : `${gitData.remote.host}:${CI_SERVER_PORT}`); const CI_SERVER_URL = _variables["CI_SERVER_URL"] ?? `${CI_SERVER_PROTOCOL}://${CI_SERVER_FQDN}`; const CI_PROJECT_ROOT_NAMESPACE = gitData.remote.group.split("/")[0]; const CI_PROJECT_NAMESPACE = gitData.remote.group; const CI_DEPENDENCY_PROXY_SERVER = CI_SERVER_FQDN.includes(":") ? CI_SERVER_FQDN : `${CI_SERVER_HOST}:${CI_SERVER_PORT}`; const predefinedVariables = { CI: "true", GITLAB_USER_LOGIN: gitData.user["GITLAB_USER_LOGIN"], GITLAB_USER_EMAIL: gitData.user["GITLAB_USER_EMAIL"], GITLAB_USER_NAME: gitData.user["GITLAB_USER_NAME"], GITLAB_USER_ID: gitData.user["GITLAB_USER_ID"], CI_COMMIT_SHORT_SHA: gitData.commit.SHA.slice(0, 8), // Changes CI_COMMIT_SHA: gitData.commit.SHA, CI_PROJECT_NAME: gitData.remote.project, CI_PROJECT_TITLE: `${camelCase(gitData.remote.project)}`, CI_PROJECT_PATH: `${gitData.remote.group}/${gitData.remote.project}`, CI_PROJECT_PATH_SLUG: `${gitData.remote.group.replace(/\//g, "-")}-${gitData.remote.project}`.toLowerCase(), CI_PROJECT_ROOT_NAMESPACE: CI_PROJECT_ROOT_NAMESPACE, CI_PROJECT_NAMESPACE: CI_PROJECT_NAMESPACE, CI_PROJECT_VISIBILITY: "internal", CI_PROJECT_ID: "1217", CI_COMMIT_REF_PROTECTED: "false", CI_COMMIT_BRANCH: gitData.commit.REF_NAME, // Not available in merge request or tag pipelines CI_COMMIT_REF_NAME: gitData.commit.REF_NAME, // Tag or branch name CI_COMMIT_REF_SLUG: gitData.commit.REF_NAME.replace(/[^a-z\d]+/ig, "-").replace(/^-/, "").slice(0, 63).replace(/-$/, "").toLowerCase(), CI_COMMIT_TIMESTAMP: gitData.commit.TIMESTAMP, CI_PIPELINE_CREATED_AT: new Date().toISOString().split(".")[0] + "Z", CI_COMMIT_TITLE: "Commit Title", // First line of commit message. CI_COMMIT_MESSAGE: "Commit Title\nMore commit text", // Full commit message CI_COMMIT_DESCRIPTION: "More commit text", CI_DEFAULT_BRANCH: gitData.branches.default, CI_PIPELINE_SOURCE: "push", CI_SERVER_FQDN: CI_SERVER_FQDN, CI_SERVER_HOST: CI_SERVER_HOST, CI_SERVER_PORT: CI_SERVER_PORT, CI_SERVER_SHELL_SSH_PORT: CI_SERVER_SHELL_SSH_PORT, CI_SERVER_URL: CI_SERVER_URL, CI_SERVER_PROTOCOL: CI_SERVER_PROTOCOL, CI_API_V4_URL: `${CI_SERVER_URL}/api/v4`, CI_PROJECT_URL: `${CI_SERVER_URL}/${gitData.remote.group}/${gitData.remote.project}`, CI_TEMPLATE_REGISTRY_HOST: "registry.gitlab.com", GITLAB_CI: "false", FF_DISABLE_UMASK_FOR_DOCKER_EXECUTOR: argv.umask ? "false" : "true", CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX: `${CI_DEPENDENCY_PROXY_SERVER}/${CI_PROJECT_NAMESPACE}/dependency_proxy/containers`, CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX: `${CI_DEPENDENCY_PROXY_SERVER}/${CI_PROJECT_ROOT_NAMESPACE}/dependency_proxy/containers`, CI_DEPENDENCY_PROXY_SERVER: CI_DEPENDENCY_PROXY_SERVER, CI_DEPENDENCY_PROXY_USER: "gitlab-ci-token", }; // Delete variables the user intentionally wants unset for (const unsetVariable of argv.unsetVariables) { delete predefinedVariables[unsetVariable]; } return predefinedVariables; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZGVmaW5lZC12YXJpYWJsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwcmVkZWZpbmVkLXZhcmlhYmxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFNBQVMsTUFBTSxXQUFXLENBQUM7QUFVbEMsTUFBTSxVQUFVLElBQUksQ0FBRSxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQTBCO0lBRS9FLE1BQU0sVUFBVSxHQUFHLEVBQUMsR0FBRyxtQkFBbUIsRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUMsQ0FBQztJQUU5RCxjQUFjO0lBQ2QsZ0JBQWdCO0lBQ2hCLDRCQUE0QjtJQUM1QixxREFBcUQ7SUFDckQsbUJBQW1CO0lBQ25CLE1BQU0sa0JBQWtCLEdBQUcsVUFBVSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNLLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxNQUFNLElBQUksT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvSixNQUFNLHdCQUF3QixHQUFHLFVBQVUsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0s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QUFDO0lBQzlDLENBQUM7SUFFRCxPQUFPLG1CQUFtQixDQUFDO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2FtZWxDYXNlIGZyb20gXCJjYW1lbGNhc2VcIjtcbmltcG9ydCB7R2l0RGF0YX0gZnJvbSBcIi4vZ2l0LWRhdGEuanNcIjtcbmltcG9ydCB7QXJndn0gZnJvbSBcIi4vYXJndi5qc1wiO1xuXG50eXBlIFByZWRlZmluZWRWYXJpYWJsZXNPcHRzID0ge1xuICAgIGdpdERhdGE6IEdpdERhdGE7XG4gICAgYXJndjogQXJndjtcbiAgICBlbnZNYXRjaGVkVmFyaWFibGVzOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0ICh7Z2l0RGF0YSwgYXJndiwgZW52TWF0Y2hlZFZhcmlhYmxlc306IFByZWRlZmluZWRWYXJpYWJsZXNPcHRzKToge1tuYW1lOiBzdHJpbmddOiBzdHJpbmd9IHtcblxuICAgIGNvbnN0IF92YXJpYWJsZXMgPSB7Li4uZW52TWF0Y2hlZFZhcmlhYmxlcywgLi4uYXJndi52YXJpYWJsZX07XG5cbiAgICAvLyBwcmVjZWRlbmNlOlxuICAgIC8vIDEuIGNsaSBvcHRpb25cbiAgICAvLyAyLiBnaXRsYWIgdmFyaWFibGVzIGZpbGVzXG4gICAgLy8gMy4gdmFsdWVzIGRlcmlldmVkIGltcGxpY2l0bHkgZnJvbSBgZ2l0IHJlbW90ZSAtdmBcbiAgICAvLyA0LiBkZWZhdWx0IHZhbHVlXG4gICAgY29uc3QgQ0lfU0VSVkVSX1BST1RPQ09MID0gX3ZhcmlhYmxlc1tcIkNJX1NFUlZFUl9QUk9UT0NPTFwiXSA/PyAoKGdpdERhdGEucmVtb3RlLnNjaGVtYSA9PT0gXCJodHRwXCIgfHwgZ2l0RGF0YS5yZW1vdGUuc2NoZW1hID09PSBcImh0dHBzXCIpID8gZ2l0RGF0YS5yZW1vdGUuc2NoZW1hIDogXCJodHRwc1wiKTtcbiAgICBjb25zdCBDSV9TRVJWRVJfUE9SVCA9IF92YXJpYWJsZXNbXCJDSV9TRVJWRVJfUE9SVFwiXSA/PyAoKGdpdERhdGEucmVtb3RlLnNjaGVtYSA9PT0gXCJodHRwXCIgfHwgZ2l0RGF0YS5yZW1vdGUuc2NoZW1hID09PSBcImh0dHBzXCIpID8gZ2l0RGF0YS5yZW1vdGUucG9ydCA6IFwiNDQzXCIpO1xuICAgIGNvbnN0IENJX1NFUlZFUl9TSEVMTF9TU0hfUE9SVCA9IF92YXJpYWJsZXNbXCJDSV9TRVJWRVJfU0hFTExfU1NIX1BPUlRcIl0gPz8gKChnaXREYXRhLnJlbW90ZS5zY2hlbWEgPT09IFwic3NoXCIpID8gZ2l0RGF0YS5yZW1vdGUucG9ydCA6IFwiMjJcIik7XG4gICAgY29uc3QgQ0lfU0VSVkVSX0hPU1QgPSBfdmFyaWFibGVzW1wiQ0lfU0VSVkVSX0hPU1RcIl0gPz8gYCR7Z2l0RGF0YS5yZW1vdGUuaG9zdH1gO1xuICAgIGNvbnN0IENJX1NFUlZFUl9GUUROID0gX3ZhcmlhYmxlc1tcIkNJX1NFUlZFUl9GUUROXCJdID8/IChDSV9TRVJWRVJfUE9SVCA9PSBcIjQ0M1wiID8gZ2l0RGF0YS5yZW1vdGUuaG9zdCA6IGAke2dpdERhdGEucmVtb3RlLmhvc3R9OiR7Q0lfU0VSVkVSX1BPUlR9YCk7XG4gICAgY29uc3QgQ0lfU0VSVkVSX1VSTCA9IF92YXJpYWJsZXNbXCJDSV9TRVJWRVJfVVJMXCJdID8/IGAke0NJX1NFUlZFUl9QUk9UT0NPTH06Ly8ke0NJX1NFUlZFUl9GUUROfWA7XG4gICAgY29uc3QgQ0lfUFJPSkVDVF9ST09UX05BTUVTUEFDRSA9IGdpdERhdGEucmVtb3RlLmdyb3VwLnNwbGl0KFwiL1wiKVswXTtcbiAgICBjb25zdCBDSV9QUk9KRUNUX05BTUVTUEFDRSA9IGdpdERhdGEucmVtb3RlLmdyb3VwO1xuICAgIGNvbnN0IENJX0RFUEVOREVOQ1lfUFJPWFlfU0VSVkVSID0gQ0lfU0VSVkVSX0ZRRE4uaW5jbHVkZXMoXCI6XCIpID8gQ0lfU0VSVkVSX0ZRRE4gOiBgJHtDSV9TRVJWRVJfSE9TVH06JHtDSV9TRVJWRVJfUE9SVH1gO1xuXG4gICAgY29uc3QgcHJlZGVmaW5lZFZhcmlhYmxlczoge1trZXk6IHN0cmluZ106IHN0cmluZ30gPSB7XG4gICAgICAgIENJOiBcInRydWVcIixcbiAgICAgICAgR0lUTEFCX1VTRVJfTE9HSU46IGdpdERhdGEudXNlcltcIkdJVExBQl9VU0VSX0xPR0lOXCJdLFxuICAgICAgICBHSVRMQUJfVVNFUl9FTUFJTDogZ2l0RGF0YS51c2VyW1wiR0lUTEFCX1VTRVJfRU1BSUxcIl0sXG4gICAgICAgIEdJVExBQl9VU0VSX05BTUU6IGdpdERhdGEudXNlcltcIkdJVExBQl9VU0VSX05BTUVcIl0sXG4gICAgICAgIEdJVExBQl9VU0VSX0lEOiBnaXREYXRhLnVzZXJbXCJHSVRMQUJfVVNFUl9JRFwiXSxcbiAgICAgICAgQ0lfQ09NTUlUX1NIT1JUX1NIQTogZ2l0RGF0YS5jb21taXQuU0hBLnNsaWNlKDAsIDgpLCAvLyBDaGFuZ2VzXG4gICAgICAgIENJX0NPTU1JVF9TSEE6IGdpdERhdGEuY29tbWl0LlNIQSxcbiAgICAgICAgQ0lfUFJPSkVDVF9OQU1FOiBnaXREYXRhLnJlbW90ZS5wcm9qZWN0LFxuICAgICAgICBDSV9QUk9KRUNUX1RJVExFOiBgJHtjYW1lbENhc2UoZ2l0RGF0YS5yZW1vdGUucHJvamVjdCl9YCxcbiAgICAgICAgQ0lfUFJPSkVDVF9QQVRIOiBgJHtnaXREYXRhLnJlbW90ZS5ncm91cH0vJHtnaXREYXRhLnJlbW90ZS5wcm9qZWN0fWAsXG4gICAgICAgIENJX1BST0pFQ1RfUEFUSF9TTFVHOiBgJHtnaXREYXRhLnJlbW90ZS5ncm91cC5yZXBsYWNlKC9cXC8vZywgXCItXCIpfS0ke2dpdERhdGEucmVtb3RlLnByb2plY3R9YC50b0xvd2VyQ2FzZSgpLFxuICAgICAgICBDSV9QUk9KRUNUX1JPT1RfTkFNRVNQQUNFOiBDSV9QUk9KRUNUX1JPT1RfTkFNRVNQQUNFLFxuICAgICAgICBDSV9QUk9KRUNUX05BTUVTUEFDRTogQ0lfUFJPSkVDVF9OQU1FU1BBQ0UsXG4gICAgICAgIENJX1BST0pFQ1RfVklTSUJJTElUWTogXCJpbnRlcm5hbFwiLFxuICAgICAgICBDSV9QUk9KRUNUX0lEOiBcIjEyMTdcIixcbiAgICAgICAgQ0lfQ09NTUlUX1JFRl9QUk9URUNURUQ6IFwiZmFsc2VcIixcbiAgICAgICAgQ0lfQ09NTUlUX0JSQU5DSDogZ2l0RGF0YS5jb21taXQuUkVGX05BTUUsIC8vIE5vdCBhdmFpbGFibGUgaW4gbWVyZ2UgcmVxdWVzdCBvciB0YWcgcGlwZWxpbmVzXG4gICAgICAgIENJX0NPTU1JVF9SRUZfTkFNRTogZ2l0RGF0YS5jb21taXQuUkVGX05BTUUsIC8vIFRhZyBvciBicmFuY2ggbmFtZVxuICAgICAgICBDSV9DT01NSVRfUkVGX1NMVUc6IGdpdERhdGEuY29tbWl0LlJFRl9OQU1FLnJlcGxhY2UoL1teYS16XFxkXSsvaWcsIFwiLVwiKS5yZXBsYWNlKC9eLS8sIFwiXCIpLnNsaWNlKDAsIDYzKS5yZXBsYWNlKC8tJC8sIFwiXCIpLnRvTG93ZXJDYXNlKCksXG4gICAgICAgIENJX0NPTU1JVF9USU1FU1RBTVA6IGdpdERhdGEuY29tbWl0LlRJTUVTVEFNUCxcbiAgICAgICAgQ0lfUElQRUxJTkVfQ1JFQVRFRF9BVDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLnNwbGl0KFwiLlwiKVswXSArIFwiWlwiLFxuICAgICAgICBDSV9DT01NSVRfVElUTEU6IFwiQ29tbWl0IFRpdGxlXCIsIC8vIEZpcnN0IGxpbmUgb2YgY29tbWl0IG1lc3NhZ2UuXG4gICAgICAgIENJX0NPTU1JVF9NRVNTQUdFOiBcIkNvbW1pdCBUaXRsZVxcbk1vcmUgY29tbWl0IHRleHRcIiwgLy8gRnVsbCBjb21taXQgbWVzc2FnZVxuICAgICAgICBDSV9DT01NSVRfREVTQ1JJUFRJT046IFwiTW9yZSBjb21taXQgdGV4dFwiLFxuICAgICAgICBDSV9ERUZBVUxUX0JSQU5DSDogZ2l0RGF0YS5icmFuY2hlcy5kZWZhdWx0LFxuICAgICAgICBDSV9QSVBFTElORV9TT1VSQ0U6IFwicHVzaFwiLFxuICAgICAgICBDSV9TRVJWRVJfRlFETjogQ0lfU0VSVkVSX0ZRRE4sXG4gICAgICAgIENJX1NFUlZFUl9IT1NUOiBDSV9TRVJWRVJfSE9TVCxcbiAgICAgICAgQ0lfU0VSVkVSX1BPUlQ6IENJX1NFUlZFUl9QT1JULFxuICAgICAgICBDSV9TRVJWRVJfU0hFTExfU1NIX1BPUlQ6IENJX1NFUlZFUl9TSEVMTF9TU0hfUE9SVCxcbiAgICAgICAgQ0lfU0VSVkVSX1VSTDogQ0lfU0VSVkVSX1VSTCxcbiAgICAgICAgQ0lfU0VSVkVSX1BST1RPQ09MOiBDSV9TRVJWRVJfUFJPVE9DT0wsXG4gICAgICAgIENJX0FQSV9WNF9VUkw6IGAke0NJX1NFUlZFUl9VUkx9L2FwaS92NGAsXG4gICAgICAgIENJX1BST0pFQ1RfVVJMOiBgJHtDSV9TRVJWRVJfVVJMfS8ke2dpdERhdGEucmVtb3RlLmdyb3VwfS8ke2dpdERhdGEucmVtb3RlLnByb2plY3R9YCxcbiAgICAgICAgQ0lfVEVNUExBVEVfUkVHSVNUUllfSE9TVDogXCJyZWdpc3RyeS5naXRsYWIuY29tXCIsXG4gICAgICAgIEdJVExBQl9DSTogXCJmYWxzZVwiLFxuICAgICAgICBGRl9ESVNBQkxFX1VNQVNLX0ZPUl9ET0NLRVJfRVhFQ1VUT1I6IGFyZ3YudW1hc2sgPyBcImZhbHNlXCIgOiBcInRydWVcIixcblxuICAgICAgICBDSV9ERVBFTkRFTkNZX1BST1hZX0RJUkVDVF9HUk9VUF9JTUFHRV9QUkVGSVg6IGAke0NJX0RFUEVOREVOQ1lfUFJPWFlfU0VSVkVSfS8ke0NJX1BST0pFQ1RfTkFNRVNQQUNFfS9kZXBlbmRlbmN5X3Byb3h5L2NvbnRhaW5lcnNgLFxuICAgICAgICBDSV9ERVBFTkRFTkNZX1BST1hZX0dST1VQX0lNQUdFX1BSRUZJWDogYCR7Q0lfREVQRU5ERU5DWV9QUk9YWV9TRVJWRVJ9LyR7Q0lfUFJPSkVDVF9ST09UX05BTUVTUEFDRX0vZGVwZW5kZW5jeV9wcm94eS9jb250YWluZXJzYCxcbiAgICAgICAgQ0lfREVQRU5ERU5DWV9QUk9YWV9TRVJWRVI6IENJX0RFUEVOREVOQ1lfUFJPWFlfU0VSVkVSLFxuICAgICAgICBDSV9ERVBFTkRFTkNZX1BST1hZX1VTRVI6IFwiZ2l0bGFiLWNpLXRva2VuXCIsXG4gICAgfTtcblxuICAgIC8vIERlbGV0ZSB2YXJpYWJsZXMgdGhlIHVzZXIgaW50ZW50aW9uYWxseSB3YW50cyB1bnNldFxuICAgIGZvciAoY29uc3QgdW5zZXRWYXJpYWJsZSBvZiBhcmd2LnVuc2V0VmFyaWFibGVzKSB7XG4gICAgICAgIGRlbGV0ZSBwcmVkZWZpbmVkVmFyaWFibGVzW3Vuc2V0VmFyaWFibGVdO1xuICAgIH1cblxuICAgIHJldHVybiBwcmVkZWZpbmVkVmFyaWFibGVzO1xufVxuIl19