Hi, this small patch series includes a couple of more-or-less random improvements to GitLab CI. Changes in v2: - Use "%s" to inject variable data into section headers instead of converting to echo. - Link to v1: https://lore.kernel.org/r/20241206-pks-ci-section-fixes-v1-0-7ab1b69e3648@xxxxxx Thanks! Patrick --- Patrick Steinhardt (4): gitlab-ci: update macOS images to Sonoma ci/lib: remove duplicate trap to end "CI setup" group ci/lib: do not interpret escape sequences in `group ()` arguments ci/lib: fix "CI setup" sections with GitLab CI .gitlab-ci.yml | 4 ++-- ci/lib.sh | 9 ++++----- 2 files changed, 6 insertions(+), 7 deletions(-) Range-diff versus v1: 1: c52dfd96a6 = 1: c98da734b2 gitlab-ci: update macOS images to Sonoma 2: 6214c8b6d5 = 2: d36bafc387 ci/lib: remove duplicate trap to end "CI setup" group 3: b56c6ec0a2 ! 3: 16882b0033 ci/lib: use echo instead of printf to set up sections @@ Metadata Author: Patrick Steinhardt <ps@xxxxxx> ## Commit message ## - ci/lib: use echo instead of printf to set up sections + ci/lib: do not interpret escape sequences in `group ()` arguments - We use printf to set up sections with GitLab CI even though we could - trivially use echo. This may cause problems in case the argument passed - to `begin_group ()` or `end_group ()` contains formatting directives as - we use them as part of the formatting string. + We use printf to set up sections with GitLab CI, which requires us to + print a bunch of escape sequences via printf. The group name is + controlled by the user and is expanded directly into the formatting + string, which may cause problems in case the argument controls escape + sequences or formatting directives. - Simplify the code to instead use echo. + Fix this potential issue by using formatting directives to pass variable + data. Signed-off-by: Patrick Steinhardt <ps@xxxxxx> @@ ci/lib.sh: elif test true = "$GITLAB_CI" begin_group () { need_to_end_group=t - printf "\e[0Ksection_start:$(date +%s):$(echo "$1" | tr ' ' _)[collapsed=true]\r\e[0K$1\n" -+ echo "\e[0Ksection_start:$(date +%s):$(echo "$1" | tr ' ' _)[collapsed=true]\r\e[0K$1" ++ printf '\e[0Ksection_start:%s:%s[collapsed=true]\r\e[0K%s\n' "$(date +%s)" "$(echo "$1" | tr ' ' _)" "$1" trap "end_group '$1'" EXIT set -x } @@ ci/lib.sh: then set +x need_to_end_group= - printf "\e[0Ksection_end:$(date +%s):$(echo "$1" | tr ' ' _)\r\e[0K\n" -+ echo "\e[0Ksection_end:$(date +%s):$(echo "$1" | tr ' ' _)\r\e[0K" ++ printf '\e[0Ksection_end:%s:%s\r\e[0K\n' "$(date +%s)" "$(echo "$1" | tr ' ' _)" trap - EXIT } else 4: a2bf5ac44f = 4: 6b67c4c238 ci/lib: fix "CI setup" sections with GitLab CI --- base-commit: e66fd72e972df760a53c3d6da023c17adfc426d6 change-id: 20241206-pks-ci-section-fixes-1bb91ceb50b8