Compare commits
8 Commits
fuse
...
2025.07-rc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0c856610a9 | ||
|
|
75360e4c45 | ||
|
|
5799c8f9b1 | ||
|
|
a00a473657 | ||
|
|
d3e3575148 | ||
|
|
dbe7b5ae23 | ||
|
|
630c46362a | ||
|
|
7c4ce04b1d |
48
.gitlab-ci-release.yml
Normal file
48
.gitlab-ci-release.yml
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
# .gitlab-ci-release.yml
|
||||||
|
|
||||||
|
# This single job handles the creation of both final releases and release candidates.
|
||||||
|
# It determines which type of release to create based on the date.
|
||||||
|
release:create:
|
||||||
|
stage: release
|
||||||
|
# We use the official release-cli image provided by GitLab.
|
||||||
|
image: registry.gitlab.com/gitlab-org/release-cli:latest
|
||||||
|
rules:
|
||||||
|
# This job only runs on scheduled pipelines that target the 'master' branch.
|
||||||
|
- if: '$CI_PIPELINE_SOURCE == "schedule" && $CI_COMMIT_REF_NAME == "master"'
|
||||||
|
script:
|
||||||
|
- |
|
||||||
|
echo "🚀 Checking release conditions for pipeline on branch '$CI_COMMIT_REF_NAME'..."
|
||||||
|
# Use %-m, %-u, %-d to avoid issues with zero-padding (e.g., '08' being an invalid octal number).
|
||||||
|
MONTH=$(date +%-m)
|
||||||
|
DAY_OF_WEEK=$(date +%-u) # 1=Monday, 7=Sunday
|
||||||
|
DAY_OF_MONTH=$(date +%-d)
|
||||||
|
|
||||||
|
# FINAL RELEASE: Occurs on the first Monday of an even-numbered month.
|
||||||
|
# 1. The month is even (e.g., February, April...).
|
||||||
|
# 2. The day of the week is Monday.
|
||||||
|
# 3. The day is within the first 7 days of the month.
|
||||||
|
if [ $((MONTH % 2)) -eq 0 ] && [ "$DAY_OF_WEEK" -eq 1 ] && [ "$DAY_OF_MONTH" -le 7 ]; then
|
||||||
|
|
||||||
|
# This is a Final Release
|
||||||
|
TAG_NAME=$(date +%Y.%m)
|
||||||
|
RELEASE_TITLE="Release $TAG_NAME"
|
||||||
|
echo "✅ Conditions met for a Final Release. Creating tag: $TAG_NAME"
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
# This is a Release Candidate (RC)
|
||||||
|
# RC index is calculated based on the day of the month:
|
||||||
|
# Days 1-14 -> rc1, Days 15-28 -> rc2, etc.
|
||||||
|
RC_INDEX=$(( (DAY_OF_MONTH - 1) / 14 + 1 ))
|
||||||
|
TAG_NAME="$(date +%Y.%m)-rc${RC_INDEX}"
|
||||||
|
RELEASE_TITLE="Release Candidate $TAG_NAME"
|
||||||
|
echo "📝 Conditions met for a Release Candidate. Creating tag: $TAG_NAME"
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Executing release-cli to create the release..."
|
||||||
|
release-cli create \
|
||||||
|
--name "$RELEASE_TITLE" \
|
||||||
|
--tag-name "$TAG_NAME" \
|
||||||
|
--description "Automated release created by GitLab CI. Based on commit $CI_COMMIT_SHORT_SHA on the '$CI_COMMIT_REF_NAME' branch." \
|
||||||
|
--ref "$CI_COMMIT_SHA"
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
# SPDX-License-Identifier: GPL-2.0+
|
# SPDX-License-Identifier: GPL-2.0+
|
||||||
|
|
||||||
|
include:
|
||||||
|
- local: '.gitlab-ci-release.yml'
|
||||||
|
|
||||||
variables:
|
variables:
|
||||||
DEFAULT_TAG: ""
|
DEFAULT_TAG: ""
|
||||||
MIRROR_DOCKER: docker.io
|
MIRROR_DOCKER: docker.io
|
||||||
@@ -24,6 +27,7 @@ stages:
|
|||||||
- test.py
|
- test.py
|
||||||
- sjg-lab
|
- sjg-lab
|
||||||
- world build
|
- world build
|
||||||
|
- release
|
||||||
|
|
||||||
.buildman_and_testpy_template: &buildman_and_testpy_dfn
|
.buildman_and_testpy_template: &buildman_and_testpy_dfn
|
||||||
stage: test.py
|
stage: test.py
|
||||||
@@ -633,7 +637,8 @@ coreboot test.py:
|
|||||||
fi;
|
fi;
|
||||||
fi
|
fi
|
||||||
- export SRC="$(pwd)"
|
- export SRC="$(pwd)"
|
||||||
- export OUT="${SRC}/build/${BOARD}"
|
- export OUT="${SRC}/build/${ROLE}"
|
||||||
|
- export OUT_EXTRA="${SRC}/build/${ROLE}_extra"
|
||||||
- export PATH=$PATH:~/bin
|
- export PATH=$PATH:~/bin
|
||||||
- export PATH=$PATH:test/hooks/bin
|
- export PATH=$PATH:test/hooks/bin
|
||||||
|
|
||||||
@@ -648,7 +653,8 @@ coreboot test.py:
|
|||||||
vars="-V build-adjust ${ADJUST}";
|
vars="-V build-adjust ${ADJUST}";
|
||||||
fi
|
fi
|
||||||
- ${SRC}/test/py/test.py --role ${ROLE} --build-dir "${OUT}"
|
- ${SRC}/test/py/test.py --role ${ROLE} --build-dir "${OUT}"
|
||||||
--capture=tee-sys -k "not bootstd ${TEST_PY_TEST_SPEC}" || ret=$?
|
--build-dir-extra ${OUT_EXTRA} --capture=tee-sys
|
||||||
|
-k "not bootstd ${TEST_PY_TEST_SPEC}" || ret=$?
|
||||||
- U_BOOT_BOARD_IDENTITY="${ROLE}" u-boot-test-release || true
|
- U_BOOT_BOARD_IDENTITY="${ROLE}" u-boot-test-release || true
|
||||||
- if [[ $ret -ne 0 ]]; then
|
- if [[ $ret -ne 0 ]]; then
|
||||||
exit $ret;
|
exit $ret;
|
||||||
@@ -656,8 +662,8 @@ coreboot test.py:
|
|||||||
artifacts:
|
artifacts:
|
||||||
when: always
|
when: always
|
||||||
paths:
|
paths:
|
||||||
- "build/${BOARD}/test-log.html"
|
- "build/${ROLE}/test-log.html"
|
||||||
- "build/${BOARD}/multiplexed_log.css"
|
- "build/${ROLE}/multiplexed_log.css"
|
||||||
expire_in: 1 week
|
expire_in: 1 week
|
||||||
|
|
||||||
rpi3:
|
rpi3:
|
||||||
@@ -842,3 +848,8 @@ vbe:
|
|||||||
variables:
|
variables:
|
||||||
ROLE: vbe
|
ROLE: vbe
|
||||||
<<: *lab_dfn
|
<<: *lab_dfn
|
||||||
|
|
||||||
|
play:
|
||||||
|
variables:
|
||||||
|
ROLE: play
|
||||||
|
<<: *lab_dfn
|
||||||
|
|||||||
@@ -136,7 +136,7 @@ void release_resources_for_core_shutdown(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image)
|
void __noreturn jump_to_image(struct spl_image_info *spl_image)
|
||||||
{
|
{
|
||||||
typedef void __noreturn (*image_entry_noargs_t)(void);
|
typedef void __noreturn (*image_entry_noargs_t)(void);
|
||||||
struct ti_sci_handle *ti_sci = get_ti_sci_handle();
|
struct ti_sci_handle *ti_sci = get_ti_sci_handle();
|
||||||
|
|||||||
@@ -347,7 +347,7 @@ uintptr_t get_stm32mp_bl2_dtb(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_XPL_BUILD
|
#ifdef CONFIG_XPL_BUILD
|
||||||
void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image)
|
void __noreturn jump_to_image(struct spl_image_info *spl_image)
|
||||||
{
|
{
|
||||||
typedef void __noreturn (*image_entry_stm32_t)(u32 romapi);
|
typedef void __noreturn (*image_entry_stm32_t)(u32 romapi);
|
||||||
uintptr_t romapi = get_stm32mp_rom_api_table();
|
uintptr_t romapi = get_stm32mp_rom_api_table();
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ static int load_from_image(struct spl_image_info *spl_image,
|
|||||||
log_info("Reading from pos %lx size %lx\n", pos, size);
|
log_info("Reading from pos %lx size %lx\n", pos, size);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set up spl_image to boot from jump_to_image_no_args(). Allocate this
|
* Set up spl_image to boot from jump_to_image(). Allocate this
|
||||||
* outside the RAM buffer (i.e. don't use strdup()).
|
* outside the RAM buffer (i.e. don't use strdup()).
|
||||||
*/
|
*/
|
||||||
fname = state->prog_fname ? state->prog_fname : state->argv[0];
|
fname = state->prog_fname ? state->prog_fname : state->argv[0];
|
||||||
|
|||||||
@@ -59,3 +59,18 @@ def test_distro(ubman):
|
|||||||
ubman.p.expect(['Welcome to .*Ubuntu 24.04.1 LTS.*!'])
|
ubman.p.expect(['Welcome to .*Ubuntu 24.04.1 LTS.*!'])
|
||||||
|
|
||||||
ubman.restart_uboot()
|
ubman.restart_uboot()
|
||||||
|
|
||||||
|
@pytest.mark.boardspec('colibri-imx8x')
|
||||||
|
@pytest.mark.role('colibrimx8')
|
||||||
|
def test_distro_script(ubman):
|
||||||
|
"""Test that a selected board can boot into Llinux using a script"""
|
||||||
|
with ubman.log.section('boot'):
|
||||||
|
ubman.run_command('boot', wait_for_prompt=False)
|
||||||
|
|
||||||
|
# This is the start of userspace
|
||||||
|
ubman.p.expect(['Welcome to TDX Wayland'])
|
||||||
|
|
||||||
|
# Shortly later, we should see this banner
|
||||||
|
ubman.p.expect(['Colibri-iMX8X_Reference-Multimedia-Image'])
|
||||||
|
|
||||||
|
ubman.restart_uboot()
|
||||||
|
|||||||
Reference in New Issue
Block a user