Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci-automation: Follow-up fix for 2-phase nightly SDK build tags #799

Merged
merged 2 commits into from
Sep 29, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
7 changes: 3 additions & 4 deletions ci-automation/ci_automation_common.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ function check_version_string() {

function update_and_push_version() {
local version="$1"
local push_to_branch="${2:-false}"
local target_branch="${2:-}"

# set up author and email so git does not complain when tagging
if ! git config --get user.name >/dev/null 2>&1 ; then
Expand Down Expand Up @@ -64,9 +64,8 @@ function update_and_push_version() {

git tag -f "${TAG_ARGS[@]}" "${version}"

if [ "${push_to_branch}" = "true" ]; then
local branch="$(git rev-parse --abbrev-ref HEAD)"
git push origin "${branch}"
if [[ -n "${target_branch}" ]]; then
git push origin "HEAD:${target_branch}"
fi

git push origin "${version}"
Expand Down
22 changes: 15 additions & 7 deletions ci-automation/packages-tag.sh
Original file line number Diff line number Diff line change
Expand Up @@ -68,11 +68,19 @@ function _packages_tag_impl() {

# Create new tag in scripts repo w/ updated versionfile
# Also push the changes to the branch ONLY IF we're doing a nightly
# build of the 'main'/'flatcar-MAJOR' branch AND we're definitely ON the respective branch
local push_branch="false"
if [[ "${version}" =~ ^(stable|alpha|beta|lts)-[0-9.]+-nightly-[-0-9]+$ ]] \
&& [[ "$(git rev-parse --abbrev-ref HEAD)" =~ ^flatcar-[0-9]+$ ]] ; then
push_branch="true"
# build of the 'flatcar-MAJOR' branch AND we're definitely ON the respective branch
local target_branch=''
# These variables are here to make it easier to test nightly
# builds without messing with actual release branches.
local flatcar_branch_prefix='flatcar'
local nightly='nightly'
# Patterns used below.
local nightly_pattern_1='^(stable|alpha|beta|lts)-[0-9.]+-'"${nightly}"'-[-0-9]+$'
local nightly_pattern_2='^(stable|alpha|beta|lts)-[0-9.]+(|-'"${nightly}"'-[-0-9]+)$'
local flatcar_pattern='^'"${flatcar_branch_prefix}"'-[0-9]+$'
if [[ "${version}" =~ ${nightly_pattern_1} ]] \
&& [[ "$(git rev-parse --abbrev-ref HEAD)" =~ ${flatcar_pattern} ]] ; then
target_branch="$(git rev-parse --abbrev-ref HEAD)"
local existing_tag=""
# Check for the existing tag only when we allow shortcutting
# the builds. That way we can skip the checks for build
Expand All @@ -83,7 +91,7 @@ function _packages_tag_impl() {
existing_tag=$(git tag --points-at HEAD) # exit code is always 0, output may be empty
fi
# If the found tag is a release or nightly tag, we stop this build if there are no changes
if [[ "${existing_tag}" =~ ^(stable|alpha|beta|lts)-[0-9.]+(|-nightly-[-0-9]+)$ ]]; then
if [[ "${existing_tag}" =~ ${nightly_pattern_2} ]]; then
local ret=0
git diff --exit-code "${existing_tag}" || ret=$?
if [[ ret -eq 0 ]]; then
Expand All @@ -108,7 +116,7 @@ function _packages_tag_impl() {
source sdk_lib/sdk_container_common.sh
create_versionfile "$sdk_version" "$version"
)
update_and_push_version "${version}" "${push_branch}"
update_and_push_version "${version}" "${target_branch}"
apply_local_patches
}
# --
19 changes: 13 additions & 6 deletions ci-automation/sdk_bootstrap.sh
Original file line number Diff line number Diff line change
Expand Up @@ -78,10 +78,17 @@ function _sdk_bootstrap_impl() {
# Also push the changes to the branch ONLY IF we're doing a nightly
# build of the 'main' branch AND we're definitely ON the main branch.
# This includes intermediate SDKs when doing 2-phase nightly builds.
local push_branch="false"
if [[ "${version}" =~ ^main-[0-9.]+-nightly-[-0-9]+(-INTERMEDIATE)?$ ]] \
&& [ "$(git rev-parse --abbrev-ref HEAD)" = "main" ] ; then
push_branch="true"
local target_branch=''
# These variables are here to make it easier to test nightly
# builds without messing with actual release branches.
local main_branch='main'
local nightly='nightly'
# Patterns used below.
local nightly_pattern_1='^main-[0-9.]+-'"${nightly}"'-[-0-9]+(-INTERMEDIATE)?$'
local nightly_pattern_2='^main-[0-9.]+-'"${nightly}"'-[-0-9]+$'
if [[ "${version}" =~ ${nightly_pattern_1} ]] \
&& [ "$(git rev-parse HEAD)" = "$(git rev-parse "origin/${main_branch}")" ] ; then
target_branch=${main_branch}
local existing_tag=""
# Check for the existing tag only when we allow shortcutting
# the builds. That way we can skip the checks for build
Expand All @@ -92,7 +99,7 @@ function _sdk_bootstrap_impl() {
existing_tag=$(git tag --points-at HEAD) # exit code is always 0, output may be empty
fi
# If the found tag is a nightly tag, we stop this build if there are no changes
if [[ "${existing_tag}" =~ ^main-[0-9.]+-nightly-[-0-9]+$ ]]; then
if [[ "${existing_tag}" =~ ${nightly_pattern_2} ]]; then
local ret=0
git diff --exit-code "${existing_tag}" || ret=$?
if [ "$ret" = "0" ]; then
Expand Down Expand Up @@ -132,7 +139,7 @@ function _sdk_bootstrap_impl() {
source sdk_lib/sdk_container_common.sh
create_versionfile "${vernum}"
)
update_and_push_version "${version}" "${push_branch}"
update_and_push_version "${version}" "${target_branch}"
apply_local_patches

./bootstrap_sdk_container -x ./ci-cleanup.sh "${seed_version}" "${vernum}"
Expand Down
Loading