forked from feast-dev/feast
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.releaserc.js
95 lines (83 loc) · 3.5 KB
/
.releaserc.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
// Release script for semantic-release.gitbook.io
const execSync = require("child_process").execSync;
// Get the current branch
const current_branch = execSync("git rev-parse --abbrev-ref HEAD").toString("utf8").trim();
// Validate the current branch
if (current_branch !== 'master') {
// Should be a release branch like v0.18-branch
is_valid = /v[0-9]\.[0-9][0-9]\-branch/gm.test(current_branch)
if (!is_valid) {
throw new Error(`Invalid branch name: ${current_branch}. Must be in release branch form like v0.18-branch or master`)
}
}
// We have to dynamically generate all the supported branches for Feast because we use the `vA.B-branch` pattern for
// maintenance branches
possible_branches = [{name: "master"}, {name: current_branch}]
// Below is the configuration for semantic release
module.exports = {
branches: possible_branches,
plugins: [
// Try to guess the type of release we should be doing (minor, patch)
["@semantic-release/commit-analyzer", {
// Ensure that breaking changes trigger minor instead of major releases
"releaseRules": [
{breaking: true, release: 'minor'},
{tag: 'Breaking', release: 'minor'},
{type: '*!', release: 'minor'},
],
// Ensure that the "BREAKING CHANGE" notes in commit footers are parsed
"parserOpts": {
"noteKeywords": ["BREAKING CHANGE", "BREAKING CHANGES"]
}
}],
["@semantic-release/exec", {
// Validate the type of release we are doing
"verifyReleaseCmd": "./infra/scripts/validate-release.sh ${nextRelease.type} " + current_branch,
// Bump all version files and build UI / update yarn.lock / helm charts
"prepareCmd": "python ./infra/scripts/release/bump_file_versions.py ${lastRelease.version} ${nextRelease.version}; make build-ui; make build-helm-docs"
}],
["@semantic-release/release-notes-generator", {
// Ensure that a "Breaking Changes" section is added to the release notes
"preset": "angular"
}],
// Update the changelog
[
"@semantic-release/changelog",
{
changelogFile: "CHANGELOG.md",
changelogTitle: "# Changelog",
}
],
// Make a git commit, tag, and push the changes
[
"@semantic-release/git",
{
assets: [
"CHANGELOG.md",
"java/pom.xml",
"infra/charts/**/*.*",
"infra/feast-helm-operator/**/*",
"infra/feast-operator/**/*",
"ui/package.json",
"sdk/python/feast/ui/package.json",
"sdk/python/feast/ui/yarn.lock"
],
message: "chore(release): release ${nextRelease.version}\n\n${nextRelease.notes}"
}
],
// Publish a GitHub release (but don't spam issues/PRs with comments)
[
"@semantic-release/github",
{
successComment: false,
failComment: false,
failTitle: false,
labels: false,
}
],
// For some reason all patches are tagged as pre-release. This step undoes that.
["@semantic-release/exec", {
"publishCmd": "python ./infra/scripts/release/unset_prerelease.py ${nextRelease.version}"
}],
]
}