feat: Add full_commit_message (#275)
* feat: Add full_commit_message * ci: Add full_commit_message * docs: Add full_commit_message cf. #274
This commit is contained in:
parent
750c807fa1
commit
0b7411e2cf
|
@ -131,7 +131,7 @@ jobs:
|
||||||
force_orphan: true
|
force_orphan: true
|
||||||
user_name: 'github-actions[bot]'
|
user_name: 'github-actions[bot]'
|
||||||
user_email: 'github-actions[bot]@users.noreply.github.com'
|
user_email: 'github-actions[bot]@users.noreply.github.com'
|
||||||
# commit_message: ${{ github.event.head_commit.message }}
|
full_commit_message: ${{ github.event.head_commit.message }}
|
||||||
|
|
||||||
- name: Deploy
|
- name: Deploy
|
||||||
if: |
|
if: |
|
||||||
|
|
12
README.md
12
README.md
|
@ -397,6 +397,18 @@ When we create a commit with a message `docs: Update some post`, a deployment co
|
||||||
commit_message: ${{ github.event.head_commit.message }}
|
commit_message: ${{ github.event.head_commit.message }}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
To set a full custom commit message without a triggered commit hash,
|
||||||
|
use the `full_commit_message` option instead of the `commit_message` option.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- name: Deploy
|
||||||
|
uses: peaceiris/actions-gh-pages@v3
|
||||||
|
with:
|
||||||
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
publish_dir: ./public
|
||||||
|
full_commit_message: ${{ github.event.head_commit.message }}
|
||||||
|
```
|
||||||
|
|
||||||
### ⭐️ Create Git tag
|
### ⭐️ Create Git tag
|
||||||
|
|
||||||
Here is an example workflow.
|
Here is an example workflow.
|
||||||
|
|
|
@ -51,6 +51,7 @@ function getInputsLog(authMethod: string, inps: Inputs): string {
|
||||||
[INFO] UserName: ${inps.UserName}
|
[INFO] UserName: ${inps.UserName}
|
||||||
[INFO] UserEmail: ${inps.UserEmail}
|
[INFO] UserEmail: ${inps.UserEmail}
|
||||||
[INFO] CommitMessage: ${inps.CommitMessage}
|
[INFO] CommitMessage: ${inps.CommitMessage}
|
||||||
|
[INFO] FullCommitMessage: ${inps.FullCommitMessage}
|
||||||
[INFO] TagName: ${inps.TagName}
|
[INFO] TagName: ${inps.TagName}
|
||||||
[INFO] TagMessage: ${inps.TagMessage}
|
[INFO] TagMessage: ${inps.TagMessage}
|
||||||
[INFO] EnableJekyll (DisableNoJekyll): ${inps.DisableNoJekyll}
|
[INFO] EnableJekyll (DisableNoJekyll): ${inps.DisableNoJekyll}
|
||||||
|
@ -117,6 +118,7 @@ describe('getInputs()', () => {
|
||||||
expect(inps.UserName).toMatch('');
|
expect(inps.UserName).toMatch('');
|
||||||
expect(inps.UserEmail).toMatch('');
|
expect(inps.UserEmail).toMatch('');
|
||||||
expect(inps.CommitMessage).toMatch('');
|
expect(inps.CommitMessage).toMatch('');
|
||||||
|
expect(inps.FullCommitMessage).toMatch('');
|
||||||
expect(inps.TagName).toMatch('');
|
expect(inps.TagName).toMatch('');
|
||||||
expect(inps.TagMessage).toMatch('');
|
expect(inps.TagMessage).toMatch('');
|
||||||
expect(inps.DisableNoJekyll).toBe(false);
|
expect(inps.DisableNoJekyll).toBe(false);
|
||||||
|
@ -136,6 +138,7 @@ describe('getInputs()', () => {
|
||||||
process.env['INPUT_USER_NAME'] = 'username';
|
process.env['INPUT_USER_NAME'] = 'username';
|
||||||
process.env['INPUT_USER_EMAIL'] = 'github@github.com';
|
process.env['INPUT_USER_EMAIL'] = 'github@github.com';
|
||||||
process.env['INPUT_COMMIT_MESSAGE'] = 'feat: Add new feature';
|
process.env['INPUT_COMMIT_MESSAGE'] = 'feat: Add new feature';
|
||||||
|
process.env['INPUT_FULL_COMMIT_MESSAGE'] = 'feat: Add new feature';
|
||||||
process.env['INPUT_TAG_NAME'] = 'deploy-v1.2.3';
|
process.env['INPUT_TAG_NAME'] = 'deploy-v1.2.3';
|
||||||
process.env['INPUT_TAG_MESSAGE'] = 'Deployment v1.2.3';
|
process.env['INPUT_TAG_MESSAGE'] = 'Deployment v1.2.3';
|
||||||
process.env['INPUT_DISABLE_NOJEKYLL'] = 'true';
|
process.env['INPUT_DISABLE_NOJEKYLL'] = 'true';
|
||||||
|
@ -155,12 +158,19 @@ describe('getInputs()', () => {
|
||||||
expect(inps.UserName).toMatch('username');
|
expect(inps.UserName).toMatch('username');
|
||||||
expect(inps.UserEmail).toMatch('github@github.com');
|
expect(inps.UserEmail).toMatch('github@github.com');
|
||||||
expect(inps.CommitMessage).toMatch('feat: Add new feature');
|
expect(inps.CommitMessage).toMatch('feat: Add new feature');
|
||||||
|
expect(inps.FullCommitMessage).toMatch('feat: Add new feature');
|
||||||
expect(inps.TagName).toMatch('deploy-v1.2.3');
|
expect(inps.TagName).toMatch('deploy-v1.2.3');
|
||||||
expect(inps.TagMessage).toMatch('Deployment v1.2.3');
|
expect(inps.TagMessage).toMatch('Deployment v1.2.3');
|
||||||
expect(inps.DisableNoJekyll).toBe(true);
|
expect(inps.DisableNoJekyll).toBe(true);
|
||||||
expect(inps.CNAME).toMatch('github.com');
|
expect(inps.CNAME).toMatch('github.com');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('get spec inputs enable_jekyll', () => {
|
||||||
|
process.env['INPUT_ENABLE_JEKYLL'] = 'true';
|
||||||
|
const inps: Inputs = getInputs();
|
||||||
|
expect(inps.DisableNoJekyll).toBe(true);
|
||||||
|
});
|
||||||
|
|
||||||
test('throw error enable_jekyll or disable_nojekyll', () => {
|
test('throw error enable_jekyll or disable_nojekyll', () => {
|
||||||
process.env['INPUT_DEPLOY_KEY'] = 'test_deploy_key';
|
process.env['INPUT_DEPLOY_KEY'] = 'test_deploy_key';
|
||||||
process.env['INPUT_ENABLE_JEKYLL'] = 'true';
|
process.env['INPUT_ENABLE_JEKYLL'] = 'true';
|
||||||
|
|
|
@ -1,4 +1,9 @@
|
||||||
import {getUserName, getUserEmail, setCommitAuthor} from '../src/git-utils';
|
import {
|
||||||
|
getUserName,
|
||||||
|
getUserEmail,
|
||||||
|
setCommitAuthor,
|
||||||
|
getCommitMessage
|
||||||
|
} from '../src/git-utils';
|
||||||
import {getWorkDirName, createWorkDir} from '../src/utils';
|
import {getWorkDirName, createWorkDir} from '../src/utils';
|
||||||
import {CmdResult} from '../src/interfaces';
|
import {CmdResult} from '../src/interfaces';
|
||||||
import * as exec from '@actions/exec';
|
import * as exec from '@actions/exec';
|
||||||
|
@ -114,3 +119,54 @@ describe('setCommitAuthor()', () => {
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('getCommitMessage()', () => {
|
||||||
|
test('get default message', () => {
|
||||||
|
const test = getCommitMessage('', '', '', 'actions/pages', 'commit_hash');
|
||||||
|
expect(test).toMatch('deploy: commit_hash');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('get default message for external repository', () => {
|
||||||
|
const test = getCommitMessage(
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'actions/actions.github.io',
|
||||||
|
'actions/pages',
|
||||||
|
'commit_hash'
|
||||||
|
);
|
||||||
|
expect(test).toMatch('deploy: actions/pages@commit_hash');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('get custom message', () => {
|
||||||
|
const test = getCommitMessage(
|
||||||
|
'Custom msg',
|
||||||
|
'',
|
||||||
|
'',
|
||||||
|
'actions/pages',
|
||||||
|
'commit_hash'
|
||||||
|
);
|
||||||
|
expect(test).toMatch('Custom msg commit_hash');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('get custom message for external repository', () => {
|
||||||
|
const test = getCommitMessage(
|
||||||
|
'Custom msg',
|
||||||
|
'',
|
||||||
|
'actions/actions.github.io',
|
||||||
|
'actions/pages',
|
||||||
|
'commit_hash'
|
||||||
|
);
|
||||||
|
expect(test).toMatch('Custom msg actions/pages@commit_hash');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('get full custom message', () => {
|
||||||
|
const test = getCommitMessage(
|
||||||
|
'',
|
||||||
|
'Full custom msg',
|
||||||
|
'',
|
||||||
|
'actions/pages',
|
||||||
|
'commit_hash'
|
||||||
|
);
|
||||||
|
expect(test).toMatch('Full custom msg');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
|
@ -47,7 +47,10 @@ inputs:
|
||||||
description: 'Set Git user.email'
|
description: 'Set Git user.email'
|
||||||
required: false
|
required: false
|
||||||
commit_message:
|
commit_message:
|
||||||
description: 'Set custom commit message'
|
description: 'Set a custom commit message with a triggered commit hash'
|
||||||
|
required: false
|
||||||
|
full_commit_message:
|
||||||
|
description: 'Set a custom full commit message without a triggered commit hash'
|
||||||
required: false
|
required: false
|
||||||
tag_name:
|
tag_name:
|
||||||
description: 'Set tag name'
|
description: 'Set tag name'
|
||||||
|
|
|
@ -22,6 +22,7 @@ export function showInputs(inps: Inputs): void {
|
||||||
[INFO] UserName: ${inps.UserName}
|
[INFO] UserName: ${inps.UserName}
|
||||||
[INFO] UserEmail: ${inps.UserEmail}
|
[INFO] UserEmail: ${inps.UserEmail}
|
||||||
[INFO] CommitMessage: ${inps.CommitMessage}
|
[INFO] CommitMessage: ${inps.CommitMessage}
|
||||||
|
[INFO] FullCommitMessage: ${inps.FullCommitMessage}
|
||||||
[INFO] TagName: ${inps.TagName}
|
[INFO] TagName: ${inps.TagName}
|
||||||
[INFO] TagMessage: ${inps.TagMessage}
|
[INFO] TagMessage: ${inps.TagMessage}
|
||||||
[INFO] EnableJekyll (DisableNoJekyll): ${inps.DisableNoJekyll}
|
[INFO] EnableJekyll (DisableNoJekyll): ${inps.DisableNoJekyll}
|
||||||
|
@ -61,6 +62,7 @@ export function getInputs(): Inputs {
|
||||||
UserName: core.getInput('user_name'),
|
UserName: core.getInput('user_name'),
|
||||||
UserEmail: core.getInput('user_email'),
|
UserEmail: core.getInput('user_email'),
|
||||||
CommitMessage: core.getInput('commit_message'),
|
CommitMessage: core.getInput('commit_message'),
|
||||||
|
FullCommitMessage: core.getInput('full_commit_message'),
|
||||||
TagName: core.getInput('tag_name'),
|
TagName: core.getInput('tag_name'),
|
||||||
TagMessage: core.getInput('tag_message'),
|
TagMessage: core.getInput('tag_message'),
|
||||||
DisableNoJekyll: useBuiltinJekyll,
|
DisableNoJekyll: useBuiltinJekyll,
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
import * as core from '@actions/core';
|
import * as core from '@actions/core';
|
||||||
import * as exec from '@actions/exec';
|
import * as exec from '@actions/exec';
|
||||||
import * as github from '@actions/github';
|
|
||||||
import * as io from '@actions/io';
|
import * as io from '@actions/io';
|
||||||
import path from 'path';
|
import path from 'path';
|
||||||
import fs from 'fs';
|
import fs from 'fs';
|
||||||
|
@ -133,26 +132,38 @@ export async function setCommitAuthor(
|
||||||
await exec.exec('git', ['config', 'user.email', getUserEmail(userEmail)]);
|
await exec.exec('git', ['config', 'user.email', getUserEmail(userEmail)]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getCommitMessage(
|
||||||
|
msg: string,
|
||||||
|
fullMsg: string,
|
||||||
|
extRepo: string,
|
||||||
|
baseRepo: string,
|
||||||
|
hash: string
|
||||||
|
): string {
|
||||||
|
const msgHash = ((): string => {
|
||||||
|
if (extRepo) {
|
||||||
|
return `${baseRepo}@${hash}`;
|
||||||
|
} else {
|
||||||
|
return hash;
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
|
||||||
|
const subject = ((): string => {
|
||||||
|
if (fullMsg) {
|
||||||
|
return fullMsg;
|
||||||
|
} else if (msg) {
|
||||||
|
return `${msg} ${msgHash}`;
|
||||||
|
} else {
|
||||||
|
return `deploy: ${msgHash}`;
|
||||||
|
}
|
||||||
|
})();
|
||||||
|
|
||||||
|
return subject;
|
||||||
|
}
|
||||||
|
|
||||||
export async function commit(
|
export async function commit(
|
||||||
allowEmptyCommit: boolean,
|
allowEmptyCommit: boolean,
|
||||||
externalRepository: string,
|
msg: string
|
||||||
message: string
|
|
||||||
): Promise<void> {
|
): Promise<void> {
|
||||||
let msg = '';
|
|
||||||
if (message) {
|
|
||||||
msg = message;
|
|
||||||
} else {
|
|
||||||
msg = 'deploy:';
|
|
||||||
}
|
|
||||||
|
|
||||||
const hash = `${process.env.GITHUB_SHA}`;
|
|
||||||
const baseRepo = `${github.context.repo.owner}/${github.context.repo.repo}`;
|
|
||||||
if (externalRepository) {
|
|
||||||
msg = `${msg} ${baseRepo}@${hash}`;
|
|
||||||
} else {
|
|
||||||
msg = `${msg} ${hash}`;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (allowEmptyCommit) {
|
if (allowEmptyCommit) {
|
||||||
await exec.exec('git', ['commit', '--allow-empty', '-m', `${msg}`]);
|
await exec.exec('git', ['commit', '--allow-empty', '-m', `${msg}`]);
|
||||||
|
|
|
@ -11,6 +11,7 @@ export interface Inputs {
|
||||||
readonly UserName: string;
|
readonly UserName: string;
|
||||||
readonly UserEmail: string;
|
readonly UserEmail: string;
|
||||||
readonly CommitMessage: string;
|
readonly CommitMessage: string;
|
||||||
|
readonly FullCommitMessage: string;
|
||||||
readonly TagName: string;
|
readonly TagName: string;
|
||||||
readonly TagMessage: string;
|
readonly TagMessage: string;
|
||||||
readonly DisableNoJekyll: boolean;
|
readonly DisableNoJekyll: boolean;
|
||||||
|
|
21
src/main.ts
21
src/main.ts
|
@ -1,10 +1,18 @@
|
||||||
import {context} from '@actions/github';
|
import {context} from '@actions/github';
|
||||||
import * as core from '@actions/core';
|
import * as core from '@actions/core';
|
||||||
import * as exec from '@actions/exec';
|
import * as exec from '@actions/exec';
|
||||||
|
import * as github from '@actions/github';
|
||||||
import {Inputs} from './interfaces';
|
import {Inputs} from './interfaces';
|
||||||
import {showInputs, getInputs} from './get-inputs';
|
import {showInputs, getInputs} from './get-inputs';
|
||||||
import {setTokens} from './set-tokens';
|
import {setTokens} from './set-tokens';
|
||||||
import {setRepo, setCommitAuthor, commit, push, pushTag} from './git-utils';
|
import {
|
||||||
|
setRepo,
|
||||||
|
setCommitAuthor,
|
||||||
|
getCommitMessage,
|
||||||
|
commit,
|
||||||
|
push,
|
||||||
|
pushTag
|
||||||
|
} from './git-utils';
|
||||||
import {getWorkDirName, addNoJekyll, addCNAME, skipOnFork} from './utils';
|
import {getWorkDirName, addNoJekyll, addCNAME, skipOnFork} from './utils';
|
||||||
|
|
||||||
export async function run(): Promise<void> {
|
export async function run(): Promise<void> {
|
||||||
|
@ -54,11 +62,16 @@ export async function run(): Promise<void> {
|
||||||
await exec.exec('git', ['remote', 'add', 'origin', remoteURL]);
|
await exec.exec('git', ['remote', 'add', 'origin', remoteURL]);
|
||||||
await exec.exec('git', ['add', '--all']);
|
await exec.exec('git', ['add', '--all']);
|
||||||
await setCommitAuthor(inps.UserName, inps.UserEmail);
|
await setCommitAuthor(inps.UserName, inps.UserEmail);
|
||||||
await commit(
|
const hash = `${process.env.GITHUB_SHA}`;
|
||||||
inps.AllowEmptyCommit,
|
const baseRepo = `${github.context.repo.owner}/${github.context.repo.repo}`;
|
||||||
|
const commitMessage = getCommitMessage(
|
||||||
|
inps.CommitMessage,
|
||||||
|
inps.FullCommitMessage,
|
||||||
inps.ExternalRepository,
|
inps.ExternalRepository,
|
||||||
inps.CommitMessage
|
baseRepo,
|
||||||
|
hash
|
||||||
);
|
);
|
||||||
|
await commit(inps.AllowEmptyCommit, commitMessage);
|
||||||
await push(inps.PublishBranch, inps.ForceOrphan);
|
await push(inps.PublishBranch, inps.ForceOrphan);
|
||||||
await pushTag(inps.TagName, inps.TagMessage);
|
await pushTag(inps.TagName, inps.TagMessage);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue