[PATCH v2 0/4] Random improvements to GitLab CI
- From
Patrick Steinhardt <ps@pks.im>
- Date
- Dec 10, 2024, 12:01 UTC
- Message-ID
- <20241210-pks-ci-section-fixes-v2-0-e087cfd174f4@pks.im>
- In-Reply-To
- <20241206-pks-ci-section-fixes-v1-0-7ab1b69e3648@pks.im>
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@pks.im
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@pks.im>
## 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@pks.im>
@@ 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