mirror of https://github.com/grafana/grafana
Packages: update versioning and release process (#18195)
parent
fa007423e3
commit
c2dea633e6
@ -1,15 +1,50 @@ |
||||
## Grafana frontend packages |
||||
|
||||
## Releasing new version |
||||
## Versioning |
||||
We use [Lerna](https://github.com/lerna/lerna) for packages versioning and releases |
||||
|
||||
All packages are versioned according to the current Grafana version: |
||||
- Grafana v6.3.0-alpha1 -> @grafana/* packages @ 6.3.0-alpha.1 |
||||
- Grafana v6.2.5 -> @grafana/* packages @ 6.2.5 |
||||
- Grafana - master branch version (based on package.json, i.e. 6.4.0-pre) -> @grafana/* packages @ 6.4.0-pre-<COMMIT-SHA> (see details below about packages publishing channels) |
||||
|
||||
> Please note that @grafana/toolkit, @grafana/ui, @grafana/data & @grafana/runtime packages are considered ALPHA even though they are not released as alpha versions |
||||
|
||||
### Stable releases |
||||
> **Even though packages are released under a stable version, they are considered ALPHA until further notice!** |
||||
|
||||
Stable releases are published under `latest` tag on npm. |
||||
|
||||
### Alpha and beta releases |
||||
Alpha and beta releases are published under `next` tag on npm. |
||||
|
||||
### Automatic pre-releases |
||||
Every commit to master that has changes within `packages` directory is a subject of npm packages release. |
||||
*ALL* packages will be released under version from lerna.json file with commit SHA added to it: |
||||
|
||||
``` |
||||
<lerna.json version>-<COMMIT_SHA> |
||||
``` |
||||
|
||||
Automatic prereleases are published under `canary` dist tag. |
||||
|
||||
### Manual release |
||||
1. Run `packages:prepare` script from root directory. This will perform cleanup, run all tests and bump version for all packages. Also, it will create `@packages@[version]` tag and version bump commit with `Packages: publish [version]` message. |
||||
2. Run `packages:build` script that will prepare distribution packages. |
||||
3. Run `packages:publish` to publish new versions |
||||
- add `--dist-tag next` to publish under `next` tag |
||||
4. Push version commit |
||||
> All of the steps below should be performed on a release branch, according to Grafana Release Guide |
||||
|
||||
> Make sure you are logged in to npm in your terminal and that you are a part of Grafana org on npm |
||||
|
||||
1. Run `yarn packages:prepare` script from root directory. This will perform tests on the packages and prompt for version of the packages. The version should be the same as the one being released. |
||||
- Make sure you use semver convention. So, *place a dot between prerelease id and prelease number*!!! i.e. 6.3.0-alpha.1 |
||||
- Make sure you confirm the version bump when prompted! |
||||
2. Commit changes (lerna.json & package.json files) - *"Packages version update: \<VERSION\>"* |
||||
3. Run `yarn packages:build` script that will prepare distribution packages in `packages/grafana-*/dist`. These directories are going to be published to npm |
||||
4. Depending whether or not it's a prerelease: |
||||
- When releasing a prelease run `packages:publishNext` to publish new versions. |
||||
- When releasing a stable version run `packages:publishLatest` to publish new versions. |
||||
|
||||
5. Push version commit to the release branch |
||||
|
||||
### Building individual packages |
||||
To build induvidual packages run `grafana-toolkit package:build --scope=<ui|toolkit|runtime|data>` |
||||
|
||||
|
||||
|
||||
@ -1,3 +1,5 @@ |
||||
# Grafana Data Library |
||||
|
||||
This package holds the root data types and functions used within Grafana. |
||||
> **@grafana/data is currently in ALPHA**. Core API is unstable and can be a subject of breaking changes! |
||||
|
||||
This package holds the root data types and functions used within Grafana. |
||||
|
||||
@ -1,3 +1,5 @@ |
||||
# Grafana Runtime library |
||||
|
||||
This package allows access to grafana services. It requires Grafana to be running already and the functions to be imported as externals. |
||||
> **@grafana/runtime is currently in ALPHA**. Core API is unstable and can be a subject of breaking changes! |
||||
|
||||
This package allows access to grafana services. It requires Grafana to be running already and the functions to be imported as externals. |
||||
|
||||
@ -0,0 +1,40 @@ |
||||
#!/usr/bin/env bash |
||||
|
||||
GRAFANA_TAG=${1:-} |
||||
RELEASE_CHANNEL="latest" |
||||
|
||||
if echo "$GRAFANA_TAG" | grep -q "^v"; then |
||||
_grafana_version=$(echo "${GRAFANA_TAG}" | cut -d "v" -f 2) |
||||
else |
||||
echo "Provided tag is not a version tag, skipping packages release..." |
||||
exit |
||||
fi |
||||
|
||||
if grep -q "beta" <<< "$GRAFANA_TAG"; then |
||||
RELEASE_CHANNEL="next" |
||||
fi |
||||
|
||||
echo "$_grafana_version" |
||||
|
||||
# Get current version from lerna.json |
||||
# Since this happens on tagged branch, the lerna.json version and package.json file SHOULD be updated already |
||||
# as specified in release guideline |
||||
PACKAGE_VERSION=$(grep '"version"' lerna.json | cut -d '"' -f 4) |
||||
|
||||
echo "Releasing grafana packages @ ${PACKAGE_VERSION} under ${RELEASE_CHANNEL} channel" |
||||
|
||||
if [ $RELEASE_CHANNEL == "latest" ]; then |
||||
SCRIPT="publishLatest" |
||||
elif [ $RELEASE_CHANNEL == "next" ]; then |
||||
SCRIPT="publishNext" |
||||
else |
||||
echo "Unknown channel, skipping packages release" |
||||
exit |
||||
fi |
||||
|
||||
echo $'\nBuilding packages' |
||||
yarn packages:build |
||||
|
||||
echo $'\nPublishing packages' |
||||
yarn packages:${SCRIPT} |
||||
|
||||
Loading…
Reference in new issue