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:
CrazyMax 2020-08-27 17:28:00 +02:00 committed by GitHub
parent 309312125e
commit 90d3577f6e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 43 additions and 3 deletions

View File

@ -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('');
});
});

View File

@ -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');

13
dist/index.js generated vendored
View File

@ -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 '';

View File

@ -11,7 +11,20 @@ const git = async (args: string[] = []): Promise<string> => {
export async function getTag(): Promise<string> {
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 '';
}