Skip to content

Commit 654d2f5

Browse files
authored
Merge pull request #13 from gregoranders/development
0.0.6 Release
2 parents 75779d0 + 57485b2 commit 654d2f5

File tree

6 files changed

+76
-42
lines changed

6 files changed

+76
-42
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@ This action finds or creates a release, so your workflow can access it.
2323
...
2424
- name: nodejs project information
2525
id: projectinfo
26-
uses: gregoranders/nodejs-project-info@v0.0.5
26+
uses: gregoranders/nodejs-project-info@v0.0.6
2727
- name: create release
2828
id: createrelease
29-
uses: gregoranders/nodejs-create-release@v0.0.5
29+
uses: gregoranders/nodejs-create-release@v0.0.6
3030
env:
3131
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
3232
with:

dist/index.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "nodejs-create-release",
3-
"version": "0.0.5",
3+
"version": "0.0.6",
44
"description": "NodeJS Create Release",
55
"main": "./dist/index.js",
66
"scripts": {
@@ -62,24 +62,24 @@
6262
},
6363
"homepage": "https://gregoranders.github.io/nodejs-create-release/",
6464
"dependencies": {
65-
"@actions/core": "1.2.3",
66-
"@actions/github": "2.1.1"
65+
"@actions/core": "1.2.4",
66+
"@actions/github": "3.0.0"
6767
},
6868
"devDependencies": {
69-
"@octokit/rest": "17.4.0",
70-
"@types/jest": "25.2.1",
71-
"@zeit/ncc": "0.22.1",
72-
"@typescript-eslint/eslint-plugin": "2.28.0",
73-
"@typescript-eslint/parser": "2.28.0",
74-
"eslint": "6.8.0",
75-
"eslint-config-prettier": "6.10.1",
69+
"@octokit/rest": "17.10.0",
70+
"@types/jest": "25.2.3",
71+
"@typescript-eslint/eslint-plugin": "3.1.0",
72+
"@typescript-eslint/parser": "3.1.0",
73+
"@zeit/ncc": "0.22.3",
74+
"eslint": "7.2.0",
75+
"eslint-config-prettier": "6.11.0",
7676
"eslint-plugin-prettier": "3.1.3",
7777
"husky": "4.2.5",
78-
"jest": "25.4.0",
79-
"prettier": "2.0.4",
78+
"jest": "26.0.1",
79+
"prettier": "2.0.5",
8080
"rimraf": "3.0.2",
81-
"ts-jest": "25.4.0",
82-
"ts-node": "8.8.2",
83-
"typescript": "3.8.3"
81+
"ts-jest": "26.1.0",
82+
"ts-node": "8.10.2",
83+
"typescript": "3.9.5"
8484
}
8585
}

src/action.spec.ts

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
/* eslint-disable @typescript-eslint/camelcase */
21
import { clearTestEnvironment, createReleaseMock, listReleasesMock, setInput, setOutputMock } from './testUtils';
32

43
import { run as testSubject } from './action';
@@ -81,4 +80,30 @@ describe('nodejs-create-release', () => {
8180
expect(setOutputMock).toHaveCoreOutput('upload_url', 'upload_url2');
8281
});
8382
});
83+
84+
it('valid tag and GITHUB_TOKEN - create failed', async () => {
85+
setInput('tag', 'v0.0.1');
86+
process.env.GITHUB_TOKEN = 'abcd';
87+
listReleasesMock.mockReturnValue({ data: [] });
88+
createReleaseMock.mockReturnValue(undefined);
89+
return testSubject().then(() => {
90+
expect(listReleasesMock).toHaveBeenNthCalledWith(1, {
91+
owner: 'owner',
92+
page: 0,
93+
per_page: 10,
94+
repo: 'repo',
95+
});
96+
expect(createReleaseMock).toHaveBeenNthCalledWith(1, {
97+
body: 'v0.0.1 Release',
98+
draft: false,
99+
name: 'v0.0.1 Release',
100+
owner: 'owner',
101+
prerelease: false,
102+
repo: 'repo',
103+
tag_name: 'v0.0.1',
104+
target_commitish: 'master',
105+
});
106+
expect(setOutputMock).toHaveBeenCalledTimes(0);
107+
});
108+
});
84109
});

src/action.ts

Lines changed: 31 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
import * as core from '@actions/core';
2-
import { context, GitHub } from '@actions/github';
2+
import { context, getOctokit } from '@actions/github';
3+
import { RestEndpointMethodTypes } from '@octokit/plugin-rest-endpoint-methods/dist-types/';
34

4-
import { Context } from '@actions/github/lib/context';
5-
6-
import Octokit from '@actions/github/node_modules/@octokit/rest';
7-
8-
type ReposCreateReleaseParams = Octokit.Octokit.ReposCreateReleaseParams;
5+
type Context = typeof context;
6+
type GitHub = ReturnType<typeof getOctokit>;
7+
type ReposCreateReleaseParams = RestEndpointMethodTypes['repos']['createRelease']['parameters'];
98

109
const listReleases = async (client: GitHub, ctx: Context) => {
1110
const response = await client.repos.listReleases({
1211
owner: ctx.repo.owner,
1312
page: 0,
14-
// eslint-disable-next-line @typescript-eslint/camelcase
1513
per_page: 10,
1614
repo: ctx.repo.repo,
1715
});
@@ -34,9 +32,15 @@ const findRelease = async (client: GitHub, ctx: Context, tag: string) => {
3432
const createRelease = async (client: GitHub, params: ReposCreateReleaseParams) => {
3533
core.startGroup(`Creating ${params.tag_name} release`);
3634
const response = await client.repos.createRelease(params);
37-
core.info(`Release ${response.data.tag_name} created [id: ${response.data.id}]`);
38-
core.endGroup();
39-
return response.data;
35+
if (response) {
36+
core.info(`Release ${response.data.tag_name} created [id: ${response.data.id}]`);
37+
core.endGroup();
38+
return response.data;
39+
} else {
40+
core.info(`Unable to create release ${params.tag_name}`);
41+
core.endGroup();
42+
return undefined;
43+
}
4044
};
4145

4246
const prepareParams = (
@@ -46,22 +50,20 @@ const prepareParams = (
4650
prerelease: boolean,
4751
tag: string,
4852
target: string,
49-
): ReposCreateReleaseParams => {
53+
) => {
5054
return {
5155
body,
5256
draft,
5357
name,
5458
owner: context.repo.owner,
5559
prerelease,
5660
repo: context.repo.repo,
57-
// eslint-disable-next-line @typescript-eslint/camelcase
5861
tag_name: tag,
59-
// eslint-disable-next-line @typescript-eslint/camelcase
6062
target_commitish: target,
6163
};
6264
};
6365

64-
export const run = async () => {
66+
export const run = async (): Promise<void> => {
6567
const tag = core.getInput('tag', { required: true });
6668
const name = core.getInput('name', { required: false }) || `${tag} Release`;
6769
const body = core.getInput('body', { required: false }) || name;
@@ -74,17 +76,24 @@ export const run = async () => {
7476
throw Error('Missing GITHUB_TOKEN');
7577
}
7678

77-
const github = new GitHub(process.env.GITHUB_TOKEN);
79+
const octokit = getOctokit(process.env.GITHUB_TOKEN);
7880

79-
let release = await findRelease(github, context, tag);
81+
const release = await findRelease(octokit, context, tag);
8082

81-
if (!release) {
82-
release = await createRelease(github, prepareParams(body, draft, name, prerelease, tag, target));
83+
if (release) {
84+
core.setOutput('id', release.id.toString());
85+
core.setOutput('url', release.url);
86+
core.setOutput('upload_url', release.upload_url);
87+
} else {
88+
const newRelease = await createRelease(octokit, prepareParams(body, draft, name, prerelease, tag, target));
89+
if (newRelease) {
90+
core.setOutput('id', newRelease.id.toString());
91+
core.setOutput('url', newRelease.url);
92+
core.setOutput('upload_url', newRelease.upload_url);
93+
} else {
94+
throw Error('Unable to create release');
95+
}
8396
}
84-
85-
core.setOutput('id', release.id.toString());
86-
core.setOutput('url', release.url);
87-
core.setOutput('upload_url', release.upload_url);
8897
} catch (error) {
8998
core.setFailed(error);
9099
}

src/testUtils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ export const createReleaseMock = jest.fn();
4040

4141
const githubMock = jest.mock('@actions/github', () => {
4242
return {
43-
GitHub: jest.fn().mockImplementation(() => {
43+
getOctokit: jest.fn().mockImplementation(() => {
4444
return {
4545
repos: {
4646
createRelease: createReleaseMock,

0 commit comments

Comments
 (0)