diff --git a/src/git-data.ts b/src/git-data.ts index 0780a7710..e8e5e9bd1 100644 --- a/src/git-data.ts +++ b/src/git-data.ts @@ -49,11 +49,6 @@ export class GitData { this.commit.SHA = stdout.trimEnd(); })); - const shortShaPromise = Utils.spawn(["git", "rev-parse", "--short", "HEAD"], cwd); - promises.push(shortShaPromise.then(({stdout}) => { - this.commit.SHORT_SHA = stdout.trimEnd(); - })); - try { await Promise.all(promises); } catch (e) { diff --git a/src/predefined-variables.ts b/src/predefined-variables.ts index d162bbcbc..173a2ea15 100644 --- a/src/predefined-variables.ts +++ b/src/predefined-variables.ts @@ -12,7 +12,7 @@ export function init ({gitData, argv}: PredefinedVariablesOpts): {[name: string] 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.SHORT_SHA, // Changes + 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)}`, diff --git a/tests/test-cases/predefined-variables/.gitlab-ci.yml b/tests/test-cases/predefined-variables/.gitlab-ci.yml index a391142d8..3a5f2e860 100644 --- a/tests/test-cases/predefined-variables/.gitlab-ci.yml +++ b/tests/test-cases/predefined-variables/.gitlab-ci.yml @@ -5,3 +5,8 @@ test-job: - echo ${CI_PROJECT_PATH_SLUG} - echo ${CI_PROJECT_NAMESPACE} - echo ${CI_PROJECT_DIR} + +test-job-commit-short-length: + script: + - echo ${CI_COMMIT_SHORT_SHA} + - "[ ${#CI_COMMIT_SHORT_SHA} -eq 8 ] || exit 1" diff --git a/tests/test-cases/predefined-variables/integration.predefined-variables.test.ts b/tests/test-cases/predefined-variables/integration.predefined-variables.test.ts index 3a8573e20..3e7b72c35 100644 --- a/tests/test-cases/predefined-variables/integration.predefined-variables.test.ts +++ b/tests/test-cases/predefined-variables/integration.predefined-variables.test.ts @@ -17,10 +17,10 @@ test("predefined-variables ", async () => { }, writeStreams); const expected = [ - chalk`{blueBright test-job} {greenBright >} predefined-variables`, - chalk`{blueBright test-job} {greenBright >} gcl-predefined-variables`, - chalk`{blueBright test-job} {greenBright >} gcl`, - chalk`{blueBright test-job} {greenBright >} ${process.cwd()}/tests/test-cases/predefined-variables`, + chalk`{blueBright test-job } {greenBright >} predefined-variables`, + chalk`{blueBright test-job } {greenBright >} gcl-predefined-variables`, + chalk`{blueBright test-job } {greenBright >} gcl`, + chalk`{blueBright test-job } {greenBright >} ${process.cwd()}/tests/test-cases/predefined-variables`, ]; expect(writeStreams.stdoutLines).toEqual(expect.arrayContaining(expected)); }); @@ -34,7 +34,21 @@ test("predefined-variables --shell-isolation", async () => { }, writeStreams); const expected = [ - chalk`{blueBright test-job} {greenBright >} ${process.cwd()}/tests/test-cases/predefined-variables/.gitlab-ci-local/builds/test-job`, + chalk`{blueBright test-job } {greenBright >} ${process.cwd()}/tests/test-cases/predefined-variables/.gitlab-ci-local/builds/test-job`, ]; expect(writeStreams.stdoutLines).toEqual(expect.arrayContaining(expected)); }); + +test("predefined-variables CI_COMMIT_SHORT_SHA length", async () => { + const writeStreams = new WriteStreamsMock(); + await handler({ + cwd: "tests/test-cases/predefined-variables", + job: ["test-job-commit-short-length"], + }, writeStreams); + + const expected = [ + chalk`{black.bgGreenBright PASS } {blueBright test-job-commit-short-length}`, + ]; + + expect(writeStreams.stdoutLines).toEqual(expect.arrayContaining(expected)); +});