mirror of
https://github.com/flatcar/scripts.git
synced 2025-08-20 05:51:18 +02:00
The existing version.txt is kinda annoying. The common case of referring to the current version requires joining three values and the names of those values only make sense in ChromeOS. Instead just use version as a string, using VERSION, VERSION_ID, and BUILD_ID just as they appear in os-release. It is up to the few scripts that need the individual parts to break the version apart. The old values remain for the sake of compatibility.
91 lines
2.9 KiB
Bash
Executable File
91 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Copyright (c) 2013 The CoreOS Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
SCRIPT_ROOT=$(dirname $(readlink -f "$0"))
|
|
. "${SCRIPT_ROOT}/common.sh" || exit 1
|
|
|
|
DEFAULT_MAJOR=${TODAYS_VERSION}
|
|
DEFAULT_MINOR=0
|
|
|
|
# Increment $MINOR if we already are on a version from today
|
|
CURRENT_VERSION=( ${COREOS_VERSION_ID//./ } )
|
|
if [[ ${DEFAULT_MAJOR} -eq ${CURRENT_VERSION[0]} ]]; then
|
|
DEFAULT_MINOR=$((${CURRENT_VERSION[1]} + 1))
|
|
fi
|
|
|
|
DEFINE_integer major ${DEFAULT_MAJOR} "Branch major version (aka 'build')"
|
|
DEFINE_integer branch ${DEFAULT_MINOR} "Branch revision or minor version"
|
|
DEFINE_integer patch 0 "Branch patch id, normally 0"
|
|
DEFINE_string track "dev-channel" "Set the given track to this new branch"
|
|
DEFINE_string sdk_version "${COREOS_VERSION_ID}" \
|
|
"Set the SDK version to use. (current: ${COREOS_SDK_VERSION})"
|
|
DEFINE_boolean push ${FLAGS_FALSE} "Push to public manifest repository."
|
|
DEFINE_string remote "origin" "Remote name or URL to push to."
|
|
|
|
# Parse flags
|
|
FLAGS "$@" || exit 1
|
|
eval set -- "${FLAGS_ARGV}"
|
|
switch_to_strict_mode
|
|
|
|
BRANCH_NAME="build-${FLAGS_build}"
|
|
BRANCH_VERSION="${FLAGS_build}.${FLAGS_branch}.${FLAGS_patch}"
|
|
TAG_NAME="v${BRANCH_VERSION}"
|
|
|
|
if [[ "${FLAGS_sdk_version}" == keep || "${FLAGS_sdk_version}" == current ]]
|
|
then
|
|
FLAGS_sdk_version="${COREOS_SDK_VERSION}"
|
|
fi
|
|
|
|
if [[ "${FLAGS_sdk_version}" == "${BRANCH_VERSION}" ]]; then
|
|
die_notrace "SDK version must be different from the new tag's version!" \
|
|
" Conflicting version: ${BRANCH_VERSION}" \
|
|
"Try --sdk_version keep to use the existing SDK."
|
|
fi
|
|
|
|
cd "${REPO_MANIFESTS_DIR}"
|
|
|
|
# Clean up existing branch manifest(s) excluding:
|
|
# - the current branch if the file already exists.
|
|
# - one previous branch, useful for comparing releases.
|
|
OLD_BRANCHES=$(find -maxdepth 1 -name 'build-*.xml' \
|
|
-not -name "${BRANCH_NAME}.xml" | sort -rn | tail -n -1)
|
|
if [[ -n "${OLD_BRANCHES}" ]]; then
|
|
git rm -f ${OLD_BRANCHES}
|
|
fi
|
|
|
|
repo manifest -o "${BRANCH_NAME}.xml" -r
|
|
tee version.txt <<EOF
|
|
COREOS_BUILD=${FLAGS_build}
|
|
COREOS_BRANCH=${FLAGS_branch}
|
|
COREOS_PATCH=${FLAGS_patch}
|
|
COREOS_VERSION=${BRANCH_VERSION}
|
|
COREOS_VERSION_ID=${BRANCH_VERSION}
|
|
COREOS_BUILD_ID=
|
|
COREOS_SDK_VERSION=${FLAGS_sdk_version}
|
|
EOF
|
|
ln -sf "${BRANCH_NAME}.xml" release.xml
|
|
git add "${BRANCH_NAME}.xml" release.xml version.txt
|
|
info "Creating ${BRANCH_NAME} and tag ${TAG_NAME}"
|
|
git commit -m "add(${BRANCH_NAME}): Add manifest for ${TAG_NAME}"
|
|
git branch -f "${BRANCH_NAME}"
|
|
git tag -m "CoreOS ${TAG_NAME}" "${TAG_NAME}"
|
|
|
|
|
|
PUSH_TRACK=
|
|
if [[ -n "${FLAGS_track}" ]]; then
|
|
git branch -f "${FLAGS_track}"
|
|
info "Updating track ${FLAGS_track}"
|
|
PUSH_TRACK=1
|
|
fi
|
|
|
|
if [[ ${FLAGS_push} -eq ${FLAGS_TRUE} ]]; then
|
|
git push "${FLAGS_remote}" \
|
|
"HEAD:refs/heads/master" \
|
|
"refs/heads/${BRANCH_NAME}" \
|
|
${PUSH_TRACK:+"+refs/heads/${FLAGS_track}"} \
|
|
"refs/tags/${TAG_NAME}"
|
|
fi
|