From 50d3209ce85c164acc374d236e6407c58f8ffd35 Mon Sep 17 00:00:00 2001 From: Tusooa Zhu Date: Sun, 28 Aug 2022 09:48:01 -0400 Subject: [PATCH 1/8] Check for changelog in ci --- .gitlab-ci.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 0e7f4926a..2fc46f976 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -16,6 +16,7 @@ cache: &global_cache_policy - _build stages: + - check-changelog - build - test - benchmark @@ -31,6 +32,13 @@ before_script: after_script: - rm -rf _build/*/lib/pleroma +check-changelog: + stage: check-changelog + rules: + - if: $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" + script: + - count=0; for i in changelog.d/"$CI_MERGE_REQUEST_IID".{add,remove,fix,security}; do [ -f "$i" ]; count=$(( $count + 1 - $? )); done; [ $count -eq 1 ] + build: stage: build only: From 27a8f6a8d9a1825d3669d2d55add47e0c3e58445 Mon Sep 17 00:00:00 2001 From: Tusooa Zhu Date: Sun, 28 Aug 2022 09:54:28 -0400 Subject: [PATCH 2/8] Prevent duplicate pipelines --- .gitlab-ci.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2fc46f976..f6220b2d9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -7,6 +7,13 @@ variables: &global_variables DB_HOST: postgres MIX_ENV: test +workflow: + rules: + - if: $CI_PIPELINE_SOURCE == "merge_request_event" + - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS + when: never + - if: $CI_COMMIT_BRANCH + cache: &global_cache_policy key: files: From d3871fa3600070f909eba61699c6e36d68f8de4d Mon Sep 17 00:00:00 2001 From: Tusooa Zhu Date: Sun, 28 Aug 2022 09:57:32 -0400 Subject: [PATCH 3/8] Allow to explicitly skip changelog --- .gitlab-ci.yml | 2 +- changelog.d/3739.skip | 0 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 changelog.d/3739.skip diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f6220b2d9..24805bd4a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -44,7 +44,7 @@ check-changelog: rules: - if: $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" script: - - count=0; for i in changelog.d/"$CI_MERGE_REQUEST_IID".{add,remove,fix,security}; do [ -f "$i" ]; count=$(( $count + 1 - $? )); done; [ $count -eq 1 ] + - count=0; for i in changelog.d/"$CI_MERGE_REQUEST_IID".{add,remove,fix,security,skip}; do [ -f "$i" ]; count=$(( $count + 1 - $? )); done; [ $count -eq 1 ] build: stage: build diff --git a/changelog.d/3739.skip b/changelog.d/3739.skip new file mode 100644 index 000000000..e69de29bb From a26fb6ab484eee18916765125c5dc9c49cc350a6 Mon Sep 17 00:00:00 2001 From: Tusooa Zhu Date: Sun, 28 Aug 2022 10:24:01 -0400 Subject: [PATCH 4/8] Display error info --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 24805bd4a..bd6a5b82f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -44,7 +44,8 @@ check-changelog: rules: - if: $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" script: - - count=0; for i in changelog.d/"$CI_MERGE_REQUEST_IID".{add,remove,fix,security,skip}; do [ -f "$i" ]; count=$(( $count + 1 - $? )); done; [ $count -eq 1 ] + - echo $CI_MERGE_REQUEST_IID + - count=0; for i in changelog.d/"$CI_MERGE_REQUEST_IID".{add,remove,fix,security,skip}; do [ -f "$i" ]; count=$(( $count + 1 - $? )); done; if [ $count -eq 1 ]; then echo "ok"; else echo "must have a changelog entry or explicitly skip it"; exit 1; fi build: stage: build From f8566e91a69571ae0b9d49867c844eeb575786f0 Mon Sep 17 00:00:00 2001 From: Tusooa Zhu Date: Sun, 28 Aug 2022 10:35:53 -0400 Subject: [PATCH 5/8] Fix {} not working with alpine sh --- .gitlab-ci.yml | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bd6a5b82f..47918a538 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -41,11 +41,33 @@ after_script: check-changelog: stage: check-changelog + image: alpine rules: - if: $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "develop" + before_script: '' + after_script: '' + cache: {} script: - echo $CI_MERGE_REQUEST_IID - - count=0; for i in changelog.d/"$CI_MERGE_REQUEST_IID".{add,remove,fix,security,skip}; do [ -f "$i" ]; count=$(( $count + 1 - $? )); done; if [ $count -eq 1 ]; then echo "ok"; else echo "must have a changelog entry or explicitly skip it"; exit 1; fi + - > + ls changelog.d + count=0 + for i in add remove fix security skip; do + [ -f changelog.d/"$CI_MERGE_REQUEST_IID"."$i" ] + retcode=$? + if [ $retcode -eq 0 ]; then + echo "found $CI_MERGE_REQUEST_IID.$i" + else + echo "no $CI_MERGE_REQUEST_IID.$i" + fi + count=$(( $count + 1 - $retcode )) + done + if [ $count -eq 1 ]; then + echo "ok" + else + echo "must have a changelog entry or explicitly skip it" + exit 1 + fi build: stage: build From 6aa9b023f04e3151c85591ac02796c4536fa7958 Mon Sep 17 00:00:00 2001 From: Tusooa Zhu Date: Sun, 28 Aug 2022 11:13:36 -0400 Subject: [PATCH 6/8] Use dedicated script --- .gitlab-ci.yml | 21 +-------------------- tools/check-changelog | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 20 deletions(-) create mode 100644 tools/check-changelog diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 47918a538..f75dc656f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -48,26 +48,7 @@ check-changelog: after_script: '' cache: {} script: - - echo $CI_MERGE_REQUEST_IID - - > - ls changelog.d - count=0 - for i in add remove fix security skip; do - [ -f changelog.d/"$CI_MERGE_REQUEST_IID"."$i" ] - retcode=$? - if [ $retcode -eq 0 ]; then - echo "found $CI_MERGE_REQUEST_IID.$i" - else - echo "no $CI_MERGE_REQUEST_IID.$i" - fi - count=$(( $count + 1 - $retcode )) - done - if [ $count -eq 1 ]; then - echo "ok" - else - echo "must have a changelog entry or explicitly skip it" - exit 1 - fi + - sh ./tools/check-changelog build: stage: build diff --git a/tools/check-changelog b/tools/check-changelog new file mode 100644 index 000000000..970f3066f --- /dev/null +++ b/tools/check-changelog @@ -0,0 +1,22 @@ +#!/bin/sh + +echo $CI_MERGE_REQUEST_IID +ls changelog.d +count=0 +for i in add remove fix security skip; do + [ -f changelog.d/"$CI_MERGE_REQUEST_IID"."$i" ] + retcode=$? + if [ $retcode -eq 0 ]; then + echo "found $CI_MERGE_REQUEST_IID.$i" + else + echo "no $CI_MERGE_REQUEST_IID.$i" + fi + count=$(( $count + 1 - $retcode )) +done +if [ $count -eq 1 ]; then + echo "ok" + exit 0 +else + echo "must have a changelog entry or explicitly skip it" + exit 1 +fi From 89a40b867df13205e710c136e5c6cd9be1b76733 Mon Sep 17 00:00:00 2001 From: Haelwenn Date: Tue, 4 Apr 2023 16:20:46 +0000 Subject: [PATCH 7/8] Allow more than 1 changelog entry --- tools/check-changelog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/check-changelog b/tools/check-changelog index 970f3066f..c3e9e07c7 100644 --- a/tools/check-changelog +++ b/tools/check-changelog @@ -8,12 +8,12 @@ for i in add remove fix security skip; do retcode=$? if [ $retcode -eq 0 ]; then echo "found $CI_MERGE_REQUEST_IID.$i" + count=$(( count++ )) else echo "no $CI_MERGE_REQUEST_IID.$i" fi - count=$(( $count + 1 - $retcode )) done -if [ $count -eq 1 ]; then +if [ $count -gt 0 ]; then echo "ok" exit 0 else From 686c3e03bd6c13e732e95d2f81cc4bcd0acf015a Mon Sep 17 00:00:00 2001 From: tusooa Date: Tue, 4 Apr 2023 12:24:45 -0400 Subject: [PATCH 8/8] Fix counting --- tools/check-changelog | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/check-changelog b/tools/check-changelog index c3e9e07c7..b94b52755 100644 --- a/tools/check-changelog +++ b/tools/check-changelog @@ -1,14 +1,14 @@ #!/bin/sh -echo $CI_MERGE_REQUEST_IID -ls changelog.d +echo "looking for change log of $CI_MERGE_REQUEST_IID" + count=0 for i in add remove fix security skip; do [ -f changelog.d/"$CI_MERGE_REQUEST_IID"."$i" ] retcode=$? if [ $retcode -eq 0 ]; then echo "found $CI_MERGE_REQUEST_IID.$i" - count=$(( count++ )) + count=$(( count + 1 )) else echo "no $CI_MERGE_REQUEST_IID.$i" fi