Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
f26ee0a
chore(release): update changelog and bump version to 0.24.0-dev.1
Dec 2, 2021
ae1a228
chore: test
Dec 2, 2021
4b18762
chore: release script
Dec 2, 2021
cdc8524
chore: release script
Dec 2, 2021
318fb23
Merge branch 'master' into release_script
Dec 2, 2021
0b1797d
chore: release script
Dec 2, 2021
4a67155
chore: release script
Dec 2, 2021
cc157d0
chore: release script
Dec 3, 2021
81b1e00
chore: release script
Dec 3, 2021
b2c84d0
chore: release script
Dec 3, 2021
b350715
chore: release script
Dec 3, 2021
5e669fd
chore: release script
Dec 3, 2021
b618c20
chore: release script
Dec 3, 2021
779499a
chore: release script
Dec 3, 2021
1b6eda9
chore: release script
Dec 3, 2021
8367606
chore: release script
Dec 3, 2021
881d792
chore: release script
Dec 6, 2021
e0016f8
chore: remove packster
Dec 6, 2021
bc3b14b
chore: add some changes
shumkov Dec 6, 2021
95a8ce9
chore: fix PR comments
Dec 6, 2021
391bdf6
Merge remote-tracking branch 'origin/release_script' into release_script
Dec 6, 2021
752618a
chore: fix PR comments
Dec 6, 2021
af0b411
chore: fix PR comments
Dec 6, 2021
d6be7fc
chore: fix PR comments
Dec 6, 2021
d573a60
chore: broke everythinh
shumkov Dec 6, 2021
712b49f
add specific files
shumkov Dec 6, 2021
8957b1b
chore: fix stuff
shumkov Dec 7, 2021
b24be17
fix
shumkov Dec 7, 2021
98a7336
fix
shumkov Dec 7, 2021
2adabdb
fix
shumkov Dec 7, 2021
0793846
fix
shumkov Dec 7, 2021
08c6808
chore: fix PR comments
Dec 7, 2021
82b6b3e
chore: fix PR comments
Dec 7, 2021
05dbefe
chore: fix
shumkov Dec 7, 2021
e62fc52
Merge branch 'release_script' of github.com:dashevo/platform into rel…
shumkov Dec 7, 2021
4245262
chore: switch back to base branch
shumkov Dec 7, 2021
b74fbfd
Update generate_changelog.js
shumkov Dec 7, 2021
99fb3c4
Update package.json
shumkov Dec 7, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 7 additions & 41 deletions .pnp.cjs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
5 changes: 2 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,7 @@
"clean:data": "yarn run dashmate group:reset --verbose --group=local --hard",
"clean": "yarn run clean:data && yarn run build",
"dashmate": "yarn pnpify packages/dashmate/bin/dashmate",
"bump": "packster bump",
"changelog": "./scripts/generate_changelog.sh"
"release": "yarn exec ./scripts/release/release.sh"
},
"packageManager": "yarn@3.1.0",
"ultra": {
Expand All @@ -45,7 +44,7 @@
"add-stream": "^1.0.0",
"conventional-changelog": "^3.1.24",
"conventional-changelog-dash": "github:dashevo/conventional-changelog-dash",
"packster": "^0.4.0",
"semver": "^7.3.2",
"tempfile": "^3.0.0",
"ultra-runner": "^3.10.5"
},
Expand Down
75 changes: 75 additions & 0 deletions scripts/release/bump_version.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
const fs = require('fs');
const path = require('path');
const semver = require('semver');
const packagesIterator = require('../utils/packagesIterator');
const rootPackageJson = require('../../package.json');

const convertReleaseToPrerelease = (version) => {
const bumpedVersion = semver.inc(version, 'minor');

return `${semver.major(bumpedVersion)}.${semver.minor(bumpedVersion)}.0-dev.1`;
};

(async () => {
let [ releaseType ] = process.argv.slice(2);

const packagesDir = path.join(__dirname, '..', '..', 'packages');
const { version: rootVersion } = rootPackageJson;
const rootVersionType = semver.prerelease(rootVersion) !== null ? 'prerelease' : 'release';

// Figure out release type using current version if not set
if (releaseType === undefined) {
// get releaseType from root package.json
releaseType = rootVersionType;
}

if (rootVersionType === releaseType && releaseType === 'release') {
// release to release
for (const { filename, json } of packagesIterator(packagesDir)) {
const { version } = json;
json.version = semver.inc(version, 'patch');

fs.writeFileSync(filename, `${JSON.stringify(json, null, 2)}\n`);
}

// root version
rootPackageJson.version = semver.inc(rootPackageJson.version, 'patch');
fs.writeFileSync(path.join(__dirname, '..', '..', 'package.json'), `${JSON.stringify(rootPackageJson, null, 2)}\n`);
} else if (rootVersionType === 'release' && releaseType === 'prerelease') {
// release to prerelease
for (const { filename, json } of packagesIterator(packagesDir)) {
const { version } = json;
json.version = convertReleaseToPrerelease(version);

fs.writeFileSync(filename, `${JSON.stringify(json, null, 2)}\n`);
}

// root version
rootPackageJson.version = convertReleaseToPrerelease(rootPackageJson.version);
fs.writeFileSync(path.join(__dirname, '..', '..', 'package.json'), `${JSON.stringify(rootPackageJson, null, 2)}\n`);
} else if (rootVersionType === 'prerelease' && releaseType === 'release') {
// prerelease to release
for (const { filename, json } of packagesIterator(packagesDir)) {
const { version } = json;
json.version = semver.inc(version, 'minor');

fs.writeFileSync(filename, `${JSON.stringify(json, null, 2)}\n`);
}

// root version
rootPackageJson.version = semver.inc(rootPackageJson.version, 'minor');
fs.writeFileSync(path.join(__dirname, '..', '..', 'package.json'), `${JSON.stringify(rootPackageJson, null, 2)}\n`);
} else {
// prerelease to prerelease
for (const { filename, json } of packagesIterator(packagesDir)) {
const { version } = json;
json.version = semver.inc(version, 'prerelease');

fs.writeFileSync(filename, `${JSON.stringify(json, null, 2)}\n`);
}

// root version
rootPackageJson.version = semver.inc(rootPackageJson.version, 'prerelease');
fs.writeFileSync(path.join(__dirname, '..', '..', 'package.json'), `${JSON.stringify(rootPackageJson, null, 2)}\n`);
}
})();
47 changes: 47 additions & 0 deletions scripts/release/find_latest_tag.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
const semver = require('semver');
const execute = require('../utils/execute');

const [ version ] = process.argv.slice(2);

if (!version) {
console.log('usage example: yarn node find_latest_tag.js v0.21.0');
process.exit(1);
}

(async () => {
const tags = (await execute('git tag -l --sort=-v:refname'));

const isPrerelease = semver.prerelease(version) !== null;
const parsedVersion = semver.parse(version);

let result;

if (!isPrerelease) {
// stable

// try to find the latest stable version with same minor part
result = tags.match(new RegExp(`^v${parsedVersion.major}\.${parsedVersion.minor}\.([0-9]+)$`, 'mgi'));

// try to find the latest stable version with previous minor part
if (!result) {
result = tags.match(new RegExp(`^v${parsedVersion.major}\.${parsedVersion.minor - 1}\.([0-9]+)$`, 'mgi'));
}
} else {
// prerelease

// try to find previous prerelease
result = tags.match(new RegExp(`^v${parsedVersion.major}\.${parsedVersion.minor}\.0-dev.([0-9]+)$`, 'mgi'));

if (!result) {
// try to find the latest stable version with previous minor part
result = tags.match(new RegExp(`^v${parsedVersion.major}\.${parsedVersion.minor - 1}\.([0-9]+)$`, 'mgi'));
}
}

if (!result) {
console.log(`Can't find latest tag for the version ${version}`);
process.exit(1);
}

console.log(result[0]);
})();
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
#!/usr/bin/env node

const fs = require('fs');
const tempfile = require('tempfile')
const addStream = require('add-stream');
Expand All @@ -8,7 +6,7 @@ const conventionalChangelog = require('conventional-changelog');
const [ from ] = process.argv.slice(2);

if (!from) {
console.error('usage: npm run changelog v0.22.0');
console.error('usage: generate_changelog.js v0.22.0');
process.exit(1);
}

Expand Down
33 changes: 33 additions & 0 deletions scripts/release/pr_description.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
<!--- Provide a general summary of your changes in the Title above -->
<!--- Pull request titles must use the [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/#summary) format -->

## Issue being fixed or feature implemented
<!--- Why is this change required? What problem does it solve? -->
<!--- If it fixes an open issue, please link to the issue here. -->
Release new Dash Platform version

## What was done?
<!--- Describe your changes in detail -->
- Updated changelog
- Bumped packages version

## How Has This Been Tested?
<!--- Please describe in detail how you tested your changes. -->
<!--- Include details of your testing environment, and the tests you ran to -->
<!--- see how your change affects other areas of the code, etc. -->
None

## Breaking Changes
<!--- Please describe any breaking changes your code introduces and verify that -->
<!--- the title includes "!" following the conventional commit type (e.g. "feat!: ..."-->
None

## Checklist:
<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->
- [x] I have performed a self-review of my own code
- [x] I have commented my code, particularly in hard-to-understand areas
- [x] I have added or updated relevant unit/integration/functional/e2e tests
- [x] I have made corresponding changes to the documentation

**For repository code-owners and collaborators only**
- [x] I have assigned this pull request to a milestone
96 changes: 96 additions & 0 deletions scripts/release/release.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
#!/usr/bin/env bash

set -e

# get current dir
DIR="$( cd -P "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"

# get current version
PACKAGE_VERSION=$(cat $DIR/../../package.json|grep version|head -1|awk -F: '{ print $2 }'|sed 's/[", ]//g')

RELEASE_TYPE="$1"

# if parameter is empty, get release type from current version
if [ -z "$RELEASE_TYPE" ]
then
if [[ $PACKAGE_VERSION == *-* ]]
then
RELEASE_TYPE="prerelease"
else
RELEASE_TYPE="release"
fi
fi

if [[ $RELEASE_TYPE != "release" ]] && [[ $RELEASE_TYPE != "prerelease" ]]
then
echo "release or prerelease are the only acceptable options"
exit 1
fi

UNCOMMITTED_FILES="$(git status -su)"
if [ -n "$UNCOMMITTED_FILES" ]
then
echo "commit or stash your changes before running this script"
exit 1
fi

# ensure github authentication
if ! gh auth status&> /dev/null; then
gh auth login
fi

# bump version
yarn node $DIR/bump_version.js "$RELEASE_TYPE"

NEW_PACKAGE_VERSION=$(cat $DIR/../../package.json|grep version|head -1|awk -F: '{ print $2 }'|sed 's/[", ]//g')

# get last tag for changelog
LATEST_TAG=$(yarn node $DIR/find_latest_tag.js $NEW_PACKAGE_VERSION)

# generate changelog
yarn node $DIR/generate_changelog.js $LATEST_TAG

echo "New version is $NEW_PACKAGE_VERSION"

VERSION_WITHOUT_PRERELEASE=${NEW_PACKAGE_VERSION%-*}
CURRENT_BRANCH=$(git branch --show-current)

if [[ $RELEASE_TYPE == "release" ]]
then
BRANCH="master"
else
BRANCH="v${VERSION_WITHOUT_PRERELEASE%.*}-dev"
fi

if [[ $CURRENT_BRANCH != BRANCH ]]
then
echo "you must run this script either from the master of from the dev branch"
git checkout .
exit 1
fi

# create branch
git checkout -b release_"$NEW_PACKAGE_VERSION"

# commit changes
git commit -am "chore(release): update changelog and version to $NEW_PACKAGE_VERSION"

# push changes
git push -u origin release_"$NEW_PACKAGE_VERSION"

# create PR
if [[ $RELEASE_TYPE == "release" ]]
then
MILESTONE="v${VERSION_WITHOUT_PRERELEASE%.*}.x"
else
MILESTONE="v${VERSION_WITHOUT_PRERELEASE%.*}.0"
fi

gh pr create --base $BRANCH \
--fill \
--title "chore(release): update changelog and bump version to $PACKAGE_VERSION" \
--body-file $DIR/pr_description.md \
--milestone $MILESTONE

# switch back to base branch
git checkout -
Loading