mirror of
https://github.com/pgsty/minio.git
synced 2026-11-12 10:35:33 +03:00
ci(release): run DCO check on main pushes and verify Helm tag match
Signed-off-by: Feng Ruohang <rh@vonng.com>
This commit is contained in:
@@ -1,6 +1,9 @@
|
|||||||
name: DCO
|
name: DCO
|
||||||
|
|
||||||
on:
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
@@ -17,18 +20,29 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
# Every non-merge commit in the pull request must carry a Signed-off-by
|
# Every non-merge commit in the pull request or push must carry a Signed-off-by
|
||||||
# trailer matching the commit author's email, certifying the Developer
|
# trailer matching the commit author's email, certifying the Developer
|
||||||
# Certificate of Origin 1.1 (https://developercertificate.org/).
|
# Certificate of Origin 1.1 (https://developercertificate.org/).
|
||||||
# Only commits authored from a GitHub-issued bot address are exempt; a
|
# Only commits authored from a GitHub-issued bot address are exempt; a
|
||||||
# display name is attacker-controlled and must never grant the exemption.
|
# display name is attacker-controlled and must never grant the exemption.
|
||||||
- name: Check Signed-off-by trailers
|
- name: Check Signed-off-by trailers
|
||||||
env:
|
env:
|
||||||
BASE_SHA: ${{ github.event.pull_request.base.sha }}
|
EVENT_NAME: ${{ github.event_name }}
|
||||||
HEAD_SHA: ${{ github.event.pull_request.head.sha }}
|
PR_BASE_SHA: ${{ github.event.pull_request.base.sha }}
|
||||||
|
PR_HEAD_SHA: ${{ github.event.pull_request.head.sha }}
|
||||||
|
PUSH_BEFORE_SHA: ${{ github.event.before }}
|
||||||
|
PUSH_AFTER_SHA: ${{ github.sha }}
|
||||||
run: |
|
run: |
|
||||||
|
if [ "${EVENT_NAME}" = "pull_request" ]; then
|
||||||
|
rev_range="${PR_BASE_SHA}..${PR_HEAD_SHA}"
|
||||||
|
elif [ -n "${PUSH_BEFORE_SHA}" ] && [ "${PUSH_BEFORE_SHA}" != "0000000000000000000000000000000000000000" ] && git cat-file -e "${PUSH_BEFORE_SHA}^{commit}" 2>/dev/null; then
|
||||||
|
rev_range="${PUSH_BEFORE_SHA}..${PUSH_AFTER_SHA}"
|
||||||
|
else
|
||||||
|
rev_range="${PUSH_AFTER_SHA}^..${PUSH_AFTER_SHA}"
|
||||||
|
fi
|
||||||
fail=0
|
fail=0
|
||||||
while read -r sha; do
|
while read -r sha; do
|
||||||
|
[ -n "${sha}" ] || continue
|
||||||
author_name="$(git log -1 --format='%an' "${sha}")"
|
author_name="$(git log -1 --format='%an' "${sha}")"
|
||||||
author_email="$(git log -1 --format='%ae' "${sha}")"
|
author_email="$(git log -1 --format='%ae' "${sha}")"
|
||||||
case "${author_email}" in
|
case "${author_email}" in
|
||||||
@@ -39,5 +53,5 @@ jobs:
|
|||||||
echo "::error::commit ${sha} by ${author_name} <${author_email}> lacks a matching Signed-off-by trailer; sign with 'git commit -s', repair with 'git rebase --signoff'"
|
echo "::error::commit ${sha} by ${author_name} <${author_email}> lacks a matching Signed-off-by trailer; sign with 'git commit -s', repair with 'git rebase --signoff'"
|
||||||
fail=1
|
fail=1
|
||||||
fi
|
fi
|
||||||
done < <(git rev-list --no-merges "${BASE_SHA}..${HEAD_SHA}")
|
done < <(git rev-list --no-merges "${rev_range}")
|
||||||
exit "${fail}"
|
exit "${fail}"
|
||||||
|
|||||||
@@ -103,6 +103,12 @@ jobs:
|
|||||||
echo "Release tag ${TAG} resolves to ${TAG_COMMIT}, checkout is ${HEAD_COMMIT}" >&2
|
echo "Release tag ${TAG} resolves to ${TAG_COMMIT}, checkout is ${HEAD_COMMIT}" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
CHART_APP_VERSION="$(sed -n 's/^appVersion: *//p' helm/silo/Chart.yaml)"
|
||||||
|
CHART_IMAGE_TAG="$(sed -n '/^image:/,/^[^ ]/s/^ tag: *//p' helm/silo/values.yaml)"
|
||||||
|
if [ "${CHART_APP_VERSION}" != "${TAG}" ] || [ "${CHART_IMAGE_TAG}" != "${TAG}" ]; then
|
||||||
|
echo "helm/silo Chart.yaml appVersion (${CHART_APP_VERSION}) and values.yaml image.tag (${CHART_IMAGE_TAG}) must match release tag ${TAG}" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
VERSION_HYPHEN="${TAG#RELEASE.}"
|
VERSION_HYPHEN="${TAG#RELEASE.}"
|
||||||
PKG_VERSION="$(echo "${VERSION_HYPHEN}" | sed -E 's/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2})-([0-9]{2})-([0-9]{2})Z$/\1\2\3\4\5\6.0.0/')"
|
PKG_VERSION="$(echo "${VERSION_HYPHEN}" | sed -E 's/^([0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2})-([0-9]{2})-([0-9]{2})Z$/\1\2\3\4\5\6.0.0/')"
|
||||||
VERSION_COLON="$(echo "${VERSION_HYPHEN}" | sed -E 's/T([0-9]{2})-([0-9]{2})-([0-9]{2})Z$/T\1:\2:\3Z/')"
|
VERSION_COLON="$(echo "${VERSION_HYPHEN}" | sed -E 's/T([0-9]{2})-([0-9]{2})-([0-9]{2})Z$/T\1:\2:\3Z/')"
|
||||||
|
|||||||
@@ -120,6 +120,10 @@ if [ -z "${app_version}" ] || [ "${image_tag}" != "${app_version}" ]; then
|
|||||||
echo "helm/silo: image.tag '${image_tag}' must equal appVersion '${app_version}'" >&2
|
echo "helm/silo: image.tag '${image_tag}' must equal appVersion '${app_version}'" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
if [ -n "${RELEASE_TAG:-}" ] && [ "${image_tag}" != "${RELEASE_TAG}" ]; then
|
||||||
|
echo "helm/silo: image.tag '${image_tag}' must equal RELEASE_TAG '${RELEASE_TAG}'" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
helm_run package "${new_chart}" --destination "${output_dir}" >/dev/null
|
helm_run package "${new_chart}" --destination "${output_dir}" >/dev/null
|
||||||
test -s "${work_dir}/silo-${chart_version}.tgz"
|
test -s "${work_dir}/silo-${chart_version}.tgz"
|
||||||
|
|||||||
Reference in New Issue
Block a user