diff --git a/__tests__/git.test.ts b/__tests__/git.test.ts index e943b29c..aa25dcdb 100644 --- a/__tests__/git.test.ts +++ b/__tests__/git.test.ts @@ -1,15 +1,30 @@ import * as git from '../src/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(); + console.log(`tag: ${tag}`); 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 () => { expect(await git.isTagDirty('v1.3.1')).toBe(true); }); it('returns short commit', async () => { const commit: string = await git.getShortCommit(); + console.log(`commit: ${commit}`); expect(commit).not.toEqual(''); }); }); diff --git a/__tests__/github.test.ts b/__tests__/github.test.ts index f18775f3..c8d3ea72 100644 --- a/__tests__/github.test.ts +++ b/__tests__/github.test.ts @@ -5,6 +5,7 @@ describe('github', () => { const release = await github.getRelease('latest'); expect(release).not.toBeNull(); expect(release?.tag_name).not.toEqual(''); + console.log(`tag_name: ${release?.tag_name}`); }); it('returns v0.117.0 GoReleaser GitHub release', async () => { const release = await github.getRelease('v0.117.0'); diff --git a/dist/index.js b/dist/index.js index 3e7abf16..08a146bb 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1797,7 +1797,18 @@ const git = (args = []) => __awaiter(void 0, void 0, void 0, function* () { function getTag() { return __awaiter(this, void 0, void 0, function* () { 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) { return ''; diff --git a/src/git.ts b/src/git.ts index 884f189f..23169b67 100644 --- a/src/git.ts +++ b/src/git.ts @@ -11,7 +11,20 @@ const git = async (args: string[] = []): Promise => { export async function getTag(): Promise { 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) { return ''; }