record pull base
This commit is contained in:
parent
356055f695
commit
a68750da04
|
|
@ -22,5 +22,8 @@ export interface GitCommitInfo {
|
||||||
'revision.timestamp'?: number | Date;
|
'revision.timestamp'?: number | Date;
|
||||||
'revision.link'?: string;
|
'revision.link'?: string;
|
||||||
'revision.diff'?: string;
|
'revision.diff'?: string;
|
||||||
|
'pull.link'?: string;
|
||||||
|
'pull.diff'?: string;
|
||||||
|
'pull.base'?: string;
|
||||||
'ci.link'?: string;
|
'ci.link'?: string;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ export const gitCommitInfo = (options?: GitCommitInfoPluginOptions): TestRunnerP
|
||||||
|
|
||||||
setup: async (config: FullConfig, configDir: string) => {
|
setup: async (config: FullConfig, configDir: string) => {
|
||||||
const fromEnv = linksFromEnv();
|
const fromEnv = linksFromEnv();
|
||||||
const fromCLI = await gitStatusFromCLI(options?.directory || configDir);
|
const fromCLI = await gitStatusFromCLI(options?.directory || configDir, fromEnv);
|
||||||
config.metadata = config.metadata || {};
|
config.metadata = config.metadata || {};
|
||||||
config.metadata['git.commit.info'] = { ...fromEnv, ...fromCLI };
|
config.metadata['git.commit.info'] = { ...fromEnv, ...fromCLI };
|
||||||
},
|
},
|
||||||
|
|
@ -44,8 +44,8 @@ interface GitCommitInfoPluginOptions {
|
||||||
directory?: string;
|
directory?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
function linksFromEnv(): Pick<GitCommitInfo, 'revision.link' | 'ci.link'> {
|
function linksFromEnv(): Pick<GitCommitInfo, 'revision.link' | 'ci.link' | 'pull.link' | 'pull.base'> {
|
||||||
const out: { 'revision.link'?: string; 'ci.link'?: string; } = {};
|
const out: { 'revision.link'?: string; 'ci.link'?: string; 'pull.link'?: string; 'pull.base'?: string; } = {};
|
||||||
// Jenkins: https://www.jenkins.io/doc/book/pipeline/jenkinsfile/#using-environment-variables
|
// Jenkins: https://www.jenkins.io/doc/book/pipeline/jenkinsfile/#using-environment-variables
|
||||||
if (process.env.BUILD_URL)
|
if (process.env.BUILD_URL)
|
||||||
out['ci.link'] = process.env.BUILD_URL;
|
out['ci.link'] = process.env.BUILD_URL;
|
||||||
|
|
@ -59,10 +59,15 @@ function linksFromEnv(): Pick<GitCommitInfo, 'revision.link' | 'ci.link'> {
|
||||||
out['revision.link'] = `${process.env.GITHUB_SERVER_URL}/${process.env.GITHUB_REPOSITORY}/commit/${process.env.GITHUB_SHA}`;
|
out['revision.link'] = `${process.env.GITHUB_SERVER_URL}/${process.env.GITHUB_REPOSITORY}/commit/${process.env.GITHUB_SHA}`;
|
||||||
if (process.env.GITHUB_SERVER_URL && process.env.GITHUB_REPOSITORY && process.env.GITHUB_RUN_ID)
|
if (process.env.GITHUB_SERVER_URL && process.env.GITHUB_REPOSITORY && process.env.GITHUB_RUN_ID)
|
||||||
out['ci.link'] = `${process.env.GITHUB_SERVER_URL}/${process.env.GITHUB_REPOSITORY}/actions/runs/${process.env.GITHUB_RUN_ID}`;
|
out['ci.link'] = `${process.env.GITHUB_SERVER_URL}/${process.env.GITHUB_REPOSITORY}/actions/runs/${process.env.GITHUB_RUN_ID}`;
|
||||||
|
if (process.env.GITHUB_REF_NAME && process.env.GITHUB_REF_NAME.endsWith('/merge')) {
|
||||||
|
const pullId = process.env.GITHUB_REF_NAME.substring(0, process.env.GITHUB_REF_NAME.indexOf('/merge'));
|
||||||
|
out['pull.link'] = `${process.env.GITHUB_SERVER_URL}/${process.env.GITHUB_REPOSITORY}/pull/${pullId}`;
|
||||||
|
out['pull.base'] = process.env.GITHUB_BASE_REF;
|
||||||
|
}
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
async function gitStatusFromCLI(gitDir: string): Promise<GitCommitInfo | undefined> {
|
async function gitStatusFromCLI(gitDir: string, envInfo: Pick<GitCommitInfo, 'pull.base'>): Promise<GitCommitInfo | undefined> {
|
||||||
const separator = `:${createGuid().slice(0, 4)}:`;
|
const separator = `:${createGuid().slice(0, 4)}:`;
|
||||||
const commitInfoResult = await spawnAsync(
|
const commitInfoResult = await spawnAsync(
|
||||||
'git',
|
'git',
|
||||||
|
|
@ -92,5 +97,15 @@ async function gitStatusFromCLI(gitDir: string): Promise<GitCommitInfo | undefin
|
||||||
if (!diffResult.code)
|
if (!diffResult.code)
|
||||||
result['revision.diff'] = diffResult.stdout;
|
result['revision.diff'] = diffResult.stdout;
|
||||||
|
|
||||||
|
if (envInfo['pull.base']) {
|
||||||
|
const pullDiffResult = await spawnAsync(
|
||||||
|
'git',
|
||||||
|
['diff', envInfo['pull.base']],
|
||||||
|
{ stdio: 'pipe', cwd: gitDir, timeout: GIT_OPERATIONS_TIMEOUT_MS }
|
||||||
|
);
|
||||||
|
if (!pullDiffResult.code)
|
||||||
|
result['pull.diff'] = pullDiffResult.stdout;
|
||||||
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue