mirror of
https://github.com/grafana/grafana.git
synced 2024-12-28 18:01:40 -06:00
d2b957b726
* Drone: Implement release pipeline Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com> * Drone: Implement test-release pipeline Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>
64 lines
2.3 KiB
Bash
Executable File
64 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -eo pipefail
|
|
|
|
PACKAGES=(ui toolkit data runtime e2e e2e-selectors)
|
|
|
|
# shellcheck source=./scripts/helpers/exit-if-fail.sh
|
|
source "$(dirname "$0")/helpers/exit-if-fail.sh"
|
|
|
|
function prepare_version_commit () {
|
|
echo $'\nCommitting version changes. This commit will not be pushed!'
|
|
git config --global user.email "drone@grafana.com"
|
|
git config --global user.name "Drone"
|
|
git commit -am "Version commit"
|
|
}
|
|
|
|
function unpublish_previous_canary () {
|
|
_package=$1
|
|
echo $'\nUnpublishing previous canary packages'
|
|
# dist-tag next to be changed to canary when https://github.com/grafana/grafana/pull/18195 is merged
|
|
CURRENT_CANARY=$(npm view @grafana/"${_package}" dist-tags.canary)
|
|
if [ -z "${CURRENT_CANARY}" ]; then
|
|
echo "@grafana/${_package} - Nothing to unpublish"
|
|
else
|
|
echo "Unpublish @grafana/${_package}@${CURRENT_CANARY}"
|
|
_response=$(npm unpublish @grafana/"${_package}"@"${CURRENT_CANARY}" 2>&1) || (
|
|
echo "$_response" | grep "404" || (
|
|
# We want to deprecate here, rather than fail and return an non-0 exit code
|
|
echo "Unpublish unsuccessful [$?]. Deprecating @grafana/${_package}@${CURRENT_CANARY}"
|
|
_response=$(npm deprecate @grafana/"${_package}"@"${CURRENT_CANARY}" "this package has been deprecated" 2>&1) || (
|
|
echo "$_response" | grep "404" && return 0
|
|
)
|
|
)
|
|
)
|
|
fi
|
|
}
|
|
|
|
# check if there were any changes to packages between current and previous commit
|
|
count=$(git diff HEAD~1..HEAD --name-only -- packages | awk '{c++} END {print c}')
|
|
count="1"
|
|
if [ -z "$count" ]; then
|
|
echo "No changes in packages, skipping packages publishing"
|
|
else
|
|
echo "Changes detected in ${count} packages"
|
|
echo "Starting to release latest canary version"
|
|
|
|
# For some reason the --no-git-reset is not working as described so
|
|
# to get lerna to publish the packages we need to do a commit to the
|
|
# repository. We will not push this commit to the origin repository.
|
|
prepare_version_commit
|
|
|
|
# Frontend packages have already been versioned and built by the
|
|
# build-frontend step in drone. We will only unpublish the previous
|
|
# canary version and publish the current built version as the new
|
|
# latest canary build.
|
|
for PACKAGE in "${PACKAGES[@]}"
|
|
do
|
|
unpublish_previous_canary "$PACKAGE"
|
|
done
|
|
|
|
echo $'\nPublishing packages'
|
|
yarn packages:publishCanary
|
|
fi
|
|
|