fix: Use GITHUB_REF to retrieve tag before checking the most recent tag (#238)
* fix: Use GITHUB_REF to retrieve tag before checking the most recent tag (#238) * Update tests * Check also tags sorted by creatordate for the current GITHUB_SHA * fix: Check tags length Co-authored-by: CrazyMax <crazy-max@users.noreply.github.com>
This commit is contained in:
parent
309312125e
commit
90d3577f6e
|
@ -1,15 +1,30 @@
|
||||||
import * as git from '../src/git';
|
import * as git from '../src/git';
|
||||||
|
|
||||||
describe('git', () => {
|
describe('git', () => {
|
||||||
it('returns git tag', async () => {
|
it('returns git tag through describe', async () => {
|
||||||
|
process.env.GITHUB_SHA = '309312125ed7a32fcd48f3a1e24dcafe669c186a';
|
||||||
const tag: string = await git.getTag();
|
const tag: string = await git.getTag();
|
||||||
|
console.log(`tag: ${tag}`);
|
||||||
expect(tag).not.toEqual('');
|
expect(tag).not.toEqual('');
|
||||||
});
|
});
|
||||||
|
it('returns git tag through GITHUB_SHA', async () => {
|
||||||
|
process.env.GITHUB_SHA = '6e37040623d14330555c7be1603a9182cf92d32a';
|
||||||
|
const tag: string = await git.getTag();
|
||||||
|
console.log(`tag: ${tag}`);
|
||||||
|
expect(tag).toEqual('v1');
|
||||||
|
});
|
||||||
|
it('returns git tag through GITHUB_REF', async () => {
|
||||||
|
process.env.GITHUB_REF = 'refs/tags/v2.2.1';
|
||||||
|
const tag: string = await git.getTag();
|
||||||
|
console.log(`tag: ${tag}`);
|
||||||
|
expect(tag).toEqual('v2.2.1');
|
||||||
|
});
|
||||||
it('checks if tag is dirty', async () => {
|
it('checks if tag is dirty', async () => {
|
||||||
expect(await git.isTagDirty('v1.3.1')).toBe(true);
|
expect(await git.isTagDirty('v1.3.1')).toBe(true);
|
||||||
});
|
});
|
||||||
it('returns short commit', async () => {
|
it('returns short commit', async () => {
|
||||||
const commit: string = await git.getShortCommit();
|
const commit: string = await git.getShortCommit();
|
||||||
|
console.log(`commit: ${commit}`);
|
||||||
expect(commit).not.toEqual('');
|
expect(commit).not.toEqual('');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -5,6 +5,7 @@ describe('github', () => {
|
||||||
const release = await github.getRelease('latest');
|
const release = await github.getRelease('latest');
|
||||||
expect(release).not.toBeNull();
|
expect(release).not.toBeNull();
|
||||||
expect(release?.tag_name).not.toEqual('');
|
expect(release?.tag_name).not.toEqual('');
|
||||||
|
console.log(`tag_name: ${release?.tag_name}`);
|
||||||
});
|
});
|
||||||
it('returns v0.117.0 GoReleaser GitHub release', async () => {
|
it('returns v0.117.0 GoReleaser GitHub release', async () => {
|
||||||
const release = await github.getRelease('v0.117.0');
|
const release = await github.getRelease('v0.117.0');
|
||||||
|
|
|
@ -1797,7 +1797,18 @@ const git = (args = []) => __awaiter(void 0, void 0, void 0, function* () {
|
||||||
function getTag() {
|
function getTag() {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
try {
|
try {
|
||||||
return yield git(['describe', '--tags', '--abbrev=0']);
|
if ((process.env.GITHUB_REF || '').startsWith('refs/tags')) {
|
||||||
|
const tag = (process.env.GITHUB_REF || '').split('/').pop();
|
||||||
|
if (tag !== '' && tag !== undefined) {
|
||||||
|
return tag;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return yield git(['tag', '--points-at', `${process.env.GITHUB_SHA}`, '--sort', '-version:creatordate']).then(tags => {
|
||||||
|
if (tags.length == 0) {
|
||||||
|
return git(['describe', '--tags', '--abbrev=0']);
|
||||||
|
}
|
||||||
|
return tags.split('\n')[0];
|
||||||
|
});
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
return '';
|
return '';
|
||||||
|
|
15
src/git.ts
15
src/git.ts
|
@ -11,7 +11,20 @@ const git = async (args: string[] = []): Promise<string> => {
|
||||||
|
|
||||||
export async function getTag(): Promise<string> {
|
export async function getTag(): Promise<string> {
|
||||||
try {
|
try {
|
||||||
return await git(['describe', '--tags', '--abbrev=0']);
|
if ((process.env.GITHUB_REF || '').startsWith('refs/tags')) {
|
||||||
|
const tag = (process.env.GITHUB_REF || '').split('/').pop();
|
||||||
|
if (tag !== '' && tag !== undefined) {
|
||||||
|
return tag;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return await git(['tag', '--points-at', `${process.env.GITHUB_SHA}`, '--sort', '-version:creatordate']).then(
|
||||||
|
tags => {
|
||||||
|
if (tags.length == 0) {
|
||||||
|
return git(['describe', '--tags', '--abbrev=0']);
|
||||||
|
}
|
||||||
|
return tags.split('\n')[0];
|
||||||
|
}
|
||||||
|
);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue