You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by mm...@apache.org on 2022/10/19 20:34:27 UTC
[pulsar-helm-chart] branch master updated: Replace handmade lint script with official action (#292)
This is an automated email from the ASF dual-hosted git repository.
mmarshall pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar-helm-chart.git
The following commit(s) were added to refs/heads/master by this push:
new fd71b46 Replace handmade lint script with official action (#292)
fd71b46 is described below
commit fd71b46b1a9c80edeccc82205a044520daea04f5
Author: tison <wa...@gmail.com>
AuthorDate: Thu Oct 20 04:34:22 2022 +0800
Replace handmade lint script with official action (#292)
* replace homemade release script with official action
Signed-off-by: tison <wa...@gmail.com>
* bundle helm/chart-releaser-action
Signed-off-by: tison <wa...@gmail.com>
* update .asf.yaml
Signed-off-by: tison <wa...@gmail.com>
* fix helm/chart-testing-action is not allowed
Signed-off-by: tison <wa...@gmail.com>
* try azure/setup-helm is allowed
Signed-off-by: tison <wa...@gmail.com>
* Revert "try azure/setup-helm is allowed"
This reverts commit 7ee6fc0b3d4584127568fe607732b9c3aa70f031.
* replace handmade lint script with official action
Signed-off-by: tison <wa...@gmail.com>
Signed-off-by: tison <wa...@gmail.com>
---
.asf.yaml | 6 -
.ci/ct.sh | 166 ------------------------
.ci/git.sh | 35 -----
.ci/helm.sh | 8 +-
.ci/lint.sh | 26 ----
.github/actions/chart-testing-action/README.md | 3 +
.github/actions/chart-testing-action/action.yml | 60 +++++++++
.github/actions/chart-testing-action/ct.sh | 153 ++++++++++++++++++++++
.github/workflows/lint.yml | 26 +++-
9 files changed, 239 insertions(+), 244 deletions(-)
diff --git a/.asf.yaml b/.asf.yaml
index f24997c..b778af8 100644
--- a/.asf.yaml
+++ b/.asf.yaml
@@ -31,18 +31,12 @@ github:
- helm
- helm-chart
features:
- # Enable wiki for documentation
wiki: true
- # Enable issues management
issues: true
- # Enable projects for project management boards
projects: true
enabled_merge_buttons:
- # enable squash button:
squash: true
- # disable merge button:
merge: false
- # disable rebase button:
rebase: false
notifications:
diff --git a/.ci/ct.sh b/.ci/ct.sh
deleted file mode 100755
index 51a684f..0000000
--- a/.ci/ct.sh
+++ /dev/null
@@ -1,166 +0,0 @@
-#!/usr/bin/env bash
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-set -o errexit
-set -o nounset
-set -o pipefail
-
-DEFAULT_IMAGE=quay.io/helmpack/chart-testing:v3.0.0
-
-show_help() {
-cat << EOF
-Usage: $(basename "$0") <options>
- -h, --help Display help
- -i, --image The chart-testing Docker image to use (default: quay.io/helmpack/chart-testing:v2.4.0)
- -c, --command The chart-testing command to run
- --config The path to the chart-testing config file
- --kubeconfig The path to the kube config file
-EOF
-}
-
-main() {
- local image="$DEFAULT_IMAGE"
- local config=
- local command=
- local kubeconfig="$HOME/.kube/config"
-
- parse_command_line "$@"
-
- if [[ -z "$command" ]]; then
- echo "ERROR: '-c|--command' is required." >&2
- show_help
- exit 1
- fi
-
- run_ct_container
- trap cleanup EXIT
-
- local changed
- changed=$(docker_exec ct list-changed)
- if [[ -z "$changed" ]]; then
- echo 'No chart changes detected.'
- echo "::set-output name=changed::false"
- return
- fi
-
- # Convenience output for other actions to make use of ct config to check if
- # charts changed.
- echo "::set-output name=changed::true"
-
- # All other ct commands require a cluster to be created in a previous step.
- if [[ "$command" != "lint" ]] && [[ "$command" != "list-changed" ]]; then
- configure_kube
- fi
-
- run_ct
-}
-
-parse_command_line() {
- while :; do
- case "${1:-}" in
- -h|--help)
- show_help
- exit
- ;;
- -i|--image)
- if [[ -n "${2:-}" ]]; then
- image="$2"
- shift
- else
- echo "ERROR: '-i|--image' cannot be empty." >&2
- show_help
- exit 1
- fi
- ;;
- -c|--command)
- if [[ -n "${2:-}" ]]; then
- command="$2"
- shift
- else
- echo "ERROR: '-c|--command' cannot be empty." >&2
- show_help
- exit 1
- fi
- ;;
- --config)
- if [[ -n "${2:-}" ]]; then
- config="$2"
- shift
- else
- echo "ERROR: '--config' cannot be empty." >&2
- show_help
- exit 1
- fi
- ;;
- --kubeconfig)
- if [[ -n "${2:-}" ]]; then
- kubeconfig="$2"
- shift
- else
- echo "ERROR: '--kubeconfig' cannot be empty." >&2
- show_help
- exit 1
- fi
- ;;
- *)
- break
- ;;
- esac
-
- shift
- done
-}
-
-run_ct_container() {
- echo 'Running ct container...'
- local args=(run --rm --interactive --detach --network host --name ct "--volume=$(pwd):/workdir" "--workdir=/workdir")
-
- if [[ -n "$config" ]]; then
- args+=("--volume=$(pwd)/$config:/etc/ct/ct.yaml" )
- fi
-
- args+=("$image" cat)
-
- docker "${args[@]}"
- echo
-}
-
-configure_kube() {
- docker_exec sh -c 'mkdir -p /root/.kube'
- docker cp "$kubeconfig" ct:/root/.kube/config
-}
-
-run_ct() {
- echo "Running 'ct $command'..."
- docker_exec ct "$command"
- echo
-}
-
-cleanup() {
- echo 'Removing ct container...'
- docker kill ct > /dev/null 2>&1
- echo 'Done!'
-}
-
-docker_exec() {
- docker exec --interactive ct "$@"
-}
-
-main "$@"
diff --git a/.ci/git.sh b/.ci/git.sh
deleted file mode 100644
index f888b7a..0000000
--- a/.ci/git.sh
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/env bash
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-function git::fetch_tags() {
- echo "Fetching tags ..."
- git fetch --tags
-}
-
-function git::find_latest_tag() {
- if ! git describe --tags --abbrev=0 2> /dev/null; then
- git rev-list --max-parents=0 --first-parent HEAD
- fi
-}
-
-function git::get_revision() {
- local tag=$1
- echo "$(git rev-parse --verify ${tag})"
-}
diff --git a/.ci/helm.sh b/.ci/helm.sh
index a59ded8..79fb8e7 100644
--- a/.ci/helm.sh
+++ b/.ci/helm.sh
@@ -177,23 +177,23 @@ function ci::test_pulsar_producer() {
}
function ci::wait_function_running() {
- num_running=$(${KUBECTL} exec -n ${NAMESPACE} ${CLUSTER}-toolset-0 -- bash -c 'bin/pulsar-admin functions status --tenant pulsar-ci --namespace test --name test-function | bin/jq .numRunning')
+ num_running=$(${KUBECTL} exec -n ${NAMESPACE} ${CLUSTER}-toolset-0 -- bash -c 'bin/pulsar-admin functions status --tenant pulsar-ci --namespace test --name test-function | bin/jq .numRunning')
while [[ ${num_running} -lt 1 ]]; do
echo ${num_running}
sleep 15
${KUBECTL} get pods -n ${NAMESPACE} --field-selector=status.phase=Running
${KUBECTL} get events --sort-by=.lastTimestamp -A | tail -n 30 || true
- num_running=$(${KUBECTL} exec -n ${NAMESPACE} ${CLUSTER}-toolset-0 -- bash -c 'bin/pulsar-admin functions status --tenant pulsar-ci --namespace test --name test-function | bin/jq .numRunning')
+ num_running=$(${KUBECTL} exec -n ${NAMESPACE} ${CLUSTER}-toolset-0 -- bash -c 'bin/pulsar-admin functions status --tenant pulsar-ci --namespace test --name test-function | bin/jq .numRunning')
done
}
function ci::wait_message_processed() {
- num_processed=$(${KUBECTL} exec -n ${NAMESPACE} ${CLUSTER}-toolset-0 -- bash -c 'bin/pulsar-admin functions stats --tenant pulsar-ci --namespace test --name test-function | bin/jq .processedSuccessfullyTotal')
+ num_processed=$(${KUBECTL} exec -n ${NAMESPACE} ${CLUSTER}-toolset-0 -- bash -c 'bin/pulsar-admin functions stats --tenant pulsar-ci --namespace test --name test-function | bin/jq .processedSuccessfullyTotal')
while [[ ${num_processed} -lt 1 ]]; do
echo ${num_processed}
sleep 15
${KUBECTL} exec -n ${NAMESPACE} ${CLUSTER}-toolset-0 -- bin/pulsar-admin functions stats --tenant pulsar-ci --namespace test --name test-function
- num_processed=$(${KUBECTL} exec -n ${NAMESPACE} ${CLUSTER}-toolset-0 -- bash -c 'bin/pulsar-admin functions stats --tenant pulsar-ci --namespace test --name test-function | bin/jq .processedSuccessfullyTotal')
+ num_processed=$(${KUBECTL} exec -n ${NAMESPACE} ${CLUSTER}-toolset-0 -- bash -c 'bin/pulsar-admin functions stats --tenant pulsar-ci --namespace test --name test-function | bin/jq .processedSuccessfullyTotal')
done
}
diff --git a/.ci/lint.sh b/.ci/lint.sh
deleted file mode 100755
index c4390fc..0000000
--- a/.ci/lint.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/usr/bin/env bash
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-set -e
-
-BINDIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
-CI_HOME="${BINDIR}"
-
-${CI_HOME}/ct.sh -c lint
diff --git a/.github/actions/chart-testing-action/README.md b/.github/actions/chart-testing-action/README.md
new file mode 100644
index 0000000..4bf2d40
--- /dev/null
+++ b/.github/actions/chart-testing-action/README.md
@@ -0,0 +1,3 @@
+# chart-testing Action
+
+This action is an identical fork of [helm/chart-testing-action@v3.7.1](https://github.com/helm/chart-testing-action).
diff --git a/.github/actions/chart-testing-action/action.yml b/.github/actions/chart-testing-action/action.yml
new file mode 100644
index 0000000..6310dcd
--- /dev/null
+++ b/.github/actions/chart-testing-action/action.yml
@@ -0,0 +1,60 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# Copyright The Helm Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: "Helm Chart Testing"
+description: "Install the Helm chart-testing tool"
+author: "The Helm authors"
+branding:
+ color: blue
+ icon: anchor
+inputs:
+ version:
+ description: "The chart-testing version to install (default: v3.7.1)"
+ required: false
+ default: v3.7.1
+ yamllint_version:
+ description: "The yamllint version to install (default: 1.27.1)"
+ required: false
+ default: '1.27.1'
+ yamale_version:
+ description: "The yamale version to install (default: 3.0.4)"
+ required: false
+ default: '3.0.4'
+runs:
+ using: composite
+ steps:
+ - run: |
+ cd $GITHUB_ACTION_PATH \
+ && ./ct.sh \
+ --version ${{ inputs.version }} \
+ --yamllint-version ${{ inputs.yamllint_version }} \
+ --yamale-version ${{ inputs.yamale_version }}
+ shell: bash
diff --git a/.github/actions/chart-testing-action/ct.sh b/.github/actions/chart-testing-action/ct.sh
new file mode 100755
index 0000000..e07b1be
--- /dev/null
+++ b/.github/actions/chart-testing-action/ct.sh
@@ -0,0 +1,153 @@
+#!/usr/bin/env bash
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# Copyright The Helm Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+set -o errexit
+set -o nounset
+set -o pipefail
+
+DEFAULT_CHART_TESTING_VERSION=v3.7.1
+DEFAULT_YAMLLINT_VERSION=1.27.1
+DEFAULT_YAMALE_VERSION=3.0.4
+
+show_help() {
+cat << EOF
+Usage: $(basename "$0") <options>
+ -h, --help Display help
+ -v, --version The chart-testing version to use (default: $DEFAULT_CHART_TESTING_VERSION)"
+EOF
+}
+
+main() {
+ local version="$DEFAULT_CHART_TESTING_VERSION"
+ local yamllint_version="$DEFAULT_YAMLLINT_VERSION"
+ local yamale_version="$DEFAULT_YAMALE_VERSION"
+
+ parse_command_line "$@"
+
+ install_chart_testing
+}
+
+parse_command_line() {
+ while :; do
+ case "${1:-}" in
+ -h|--help)
+ show_help
+ exit
+ ;;
+ -v|--version)
+ if [[ -n "${2:-}" ]]; then
+ version="$2"
+ shift
+ else
+ echo "ERROR: '-v|--version' cannot be empty." >&2
+ show_help
+ exit 1
+ fi
+ ;;
+ --yamllint-version)
+ if [[ -n "${2:-}" ]]; then
+ yamllint_version="$2"
+ shift
+ else
+ echo "ERROR: '--yamllint-version' cannot be empty." >&2
+ show_help
+ exit 1
+ fi
+ ;;
+ --yamale-version)
+ if [[ -n "${2:-}" ]]; then
+ yamale_version="$2"
+ shift
+ else
+ echo "ERROR: '--yamale-version' cannot be empty." >&2
+ show_help
+ exit 1
+ fi
+ ;;
+ *)
+ break
+ ;;
+ esac
+
+ shift
+ done
+}
+
+install_chart_testing() {
+ if [[ ! -d "$RUNNER_TOOL_CACHE" ]]; then
+ echo "Cache directory '$RUNNER_TOOL_CACHE' does not exist" >&2
+ exit 1
+ fi
+
+ local arch
+ arch=$(uname -m)
+ local cache_dir="$RUNNER_TOOL_CACHE/ct/$version/$arch"
+ local venv_dir="$cache_dir/venv"
+
+ if [[ ! -d "$cache_dir" ]]; then
+ mkdir -p "$cache_dir"
+
+ echo "Installing chart-testing..."
+ curl -sSLo ct.tar.gz "https://github.com/helm/chart-testing/releases/download/$version/chart-testing_${version#v}_linux_amd64.tar.gz"
+ tar -xzf ct.tar.gz -C "$cache_dir"
+ rm -f ct.tar.gz
+
+ echo 'Creating virtual Python environment...'
+ python3 -m venv "$venv_dir"
+
+ echo 'Activating virtual environment...'
+ # shellcheck disable=SC1090
+ source "$venv_dir/bin/activate"
+
+ echo 'Installing yamllint...'
+ pip3 install "yamllint==${yamllint_version}"
+
+ echo 'Installing Yamale...'
+ pip3 install "yamale==${yamale_version}"
+ fi
+
+ # https://github.com/helm/chart-testing-action/issues/62
+ echo 'Adding ct directory to PATH...'
+ echo "$cache_dir" >> "$GITHUB_PATH"
+
+ echo 'Setting CT_CONFIG_DIR...'
+ echo "CT_CONFIG_DIR=$cache_dir/etc" >> "$GITHUB_ENV"
+
+ echo 'Configuring environment variables for virtual environment for subsequent workflow steps...'
+ echo "VIRTUAL_ENV=$venv_dir" >> "$GITHUB_ENV"
+ echo "$venv_dir/bin" >> "$GITHUB_PATH"
+
+ "$cache_dir/ct" version
+}
+
+main "$@"
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index b3f56fe..b5020bb 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -29,9 +29,8 @@ jobs:
steps:
- name: checkout
uses: actions/checkout@v2
-
- - name: Tune Runner VM
- uses: ./.github/actions/tune-runner-vm
+ with:
+ fetch-depth: 0
- name: Detect changed files
id: changes
@@ -43,9 +42,22 @@ jobs:
id: check_changes
run: echo "::set-output name=docs_only::${{ fromJSON(steps.changes.outputs.all_count) == fromJSON(steps.changes.outputs.docs_count) && fromJSON(steps.changes.outputs.docs_count) > 0 }}"
- - name: Lint chart
+ - name: Set up Helm
+ if: ${{ steps.check_changes.outputs.docs_only != 'true' }}
+ uses: azure/setup-helm@v3
+ with:
+ version: v3.10.0
+
+ - name: Set up Python
if: ${{ steps.check_changes.outputs.docs_only != 'true' }}
- id: lint
- uses: helm/chart-testing-action@v2.0.0
+ uses: actions/setup-python@v4
with:
- command: lint
+ python-version: '3.9'
+
+ - name: Set up chart-testing
+ if: ${{ steps.check_changes.outputs.docs_only != 'true' }}
+ uses: ./.github/actions/chart-testing-action
+
+ - name: Run chart-testing (lint)
+ if: ${{ steps.check_changes.outputs.docs_only != 'true' }}
+ run: ct lint --target-branch ${{ github.event.repository.default_branch }}