Skip to content

Commit b3d033d

Browse files
authored
labelでリリースするバージョンを制御する (#27)
* labelでリリースするバージョンを制御する * Fix indent * contains -> includes * Add debug output * 一旦PR前提にする * メジャーバージョンのインクリメント修正 * 形を整える
1 parent 49b2599 commit b3d033d

2 files changed

Lines changed: 34 additions & 24 deletions

File tree

.github/workflows/create-release.yml

Lines changed: 34 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -12,42 +12,51 @@ jobs:
1212
create-release:
1313
runs-on: ubuntu-latest
1414
steps:
15-
- uses: actions/checkout@v3.0.2
16-
- name: Get latest release version
17-
id: get_latest_release_version
15+
- name: Increment version
16+
id: increment_version
1817
uses: actions/github-script@v6.1.0
1918
with:
2019
github-token: ${{secrets.GITHUB_TOKEN}}
2120
result-encoding: string
2221
script: |
22+
let latestReleaseVersion = '';
23+
2324
try {
24-
return (await github.rest.repos.getLatestRelease({
25+
const getLatestReleaseParams = {
2526
owner: context.repo.owner,
2627
repo: context.repo.repo
27-
})).data.tag_name;
28+
};
29+
console.log("call repos.getLatestRelease:", getLatestReleaseParams);
30+
const latestRelease = await github.rest.repos.getLatestRelease(getLatestReleaseParams);
31+
latestReleaseVersion = latestRelease.data.tag_name;
2832
} catch (e) {
2933
if (e.status === 404) {
30-
return 'v0.0.0';
34+
latestReleaseVersion = 'v0.0.0';
35+
} else {
36+
throw e;
3137
}
32-
33-
throw e;
3438
}
35-
- run: echo "MAJOR_VERSION=$(cat .version)" >> "${GITHUB_ENV}"
36-
- name: Increment version
37-
id: increment_version
38-
uses: actions/github-script@v6.1.0
39-
with:
40-
github-token: ${{secrets.GITHUB_TOKEN}}
41-
result-encoding: string
42-
script: |
43-
const majorVersion = process.env['MAJOR_VERSION'];
39+
40+
const listPullRequestsAssociatedWithCommitParams = {
41+
owner: context.repo.owner,
42+
repo: context.repo.repo,
43+
commit_sha: '${{ github.sha }}',
44+
};
45+
console.log("call repos.listPullRequestsAssociatedWithCommit:", listPullRequestsAssociatedWithCommitParams);
46+
const pulls = await github.paginate(
47+
github.rest.repos.listPullRequestsAssociatedWithCommit,
48+
listPullRequestsAssociatedWithCommitParams
49+
);
50+
const labels = pulls.flatMap(p => p.labels.map(l => l.name));
51+
const tagNames = latestReleaseVersion.split('.');
4452
let version = [];
4553
46-
if ('${{ steps.get_latest_release_version.outputs.result }}'.startsWith(majorVersion)) {
47-
const tagNames = '${{ steps.get_latest_release_version.outputs.result }}'.split('.');
48-
version = [tagNames[0], tagNames[1], Number(tagNames[2]) + 1];
54+
if (labels.includes('major release')) {
55+
version = [`v${Number(tagNames[0].replace('v', '')) + 1}`, 0, 0];
56+
} else if (labels.includes('minor release')) {
57+
version = [tagNames[0], Number(tagNames[1]) + 1, 0];
4958
} else {
50-
version = [majorVersion, 0];
59+
version = [tagNames[0], tagNames[1], Number(tagNames[2]) + 1];
5160
}
5261
5362
return version.join('.');
@@ -56,9 +65,11 @@ jobs:
5665
with:
5766
github-token: ${{secrets.GITHUB_TOKEN}}
5867
script: |
59-
await github.rest.repos.createRelease({
68+
const createReleaseParams = {
6069
owner: context.repo.owner,
6170
repo: context.repo.repo,
6271
tag_name: '${{ steps.increment_version.outputs.result }}',
6372
generate_release_notes: true
64-
});
73+
};
74+
console.log("call repos.createRelease:", createReleaseParams);
75+
await github.rest.repos.createRelease(createReleaseParams);

.version

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)