Replace handmade lint script with official action (#292)
* replace homemade release script with official action Signed-off-by: tison <wander4096@gmail.com> * bundle helm/chart-releaser-action Signed-off-by: tison <wander4096@gmail.com> * update .asf.yaml Signed-off-by: tison <wander4096@gmail.com> * fix helm/chart-testing-action is not allowed Signed-off-by: tison <wander4096@gmail.com> * try azure/setup-helm is allowed Signed-off-by: tison <wander4096@gmail.com> * Revert "try azure/setup-helm is allowed" This reverts commit 7ee6fc0b3d4584127568fe607732b9c3aa70f031. * replace handmade lint script with official action Signed-off-by: tison <wander4096@gmail.com> Signed-off-by: tison <wander4096@gmail.com>
This commit is contained in:
parent
7f23af26b7
commit
fd71b46b1a
@ -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:
|
||||
|
||||
166
.ci/ct.sh
166
.ci/ct.sh
@ -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 "$@"
|
||||
35
.ci/git.sh
35
.ci/git.sh
@ -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})"
|
||||
}
|
||||
26
.ci/lint.sh
26
.ci/lint.sh
@ -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
|
||||
3
.github/actions/chart-testing-action/README.md
vendored
Normal file
3
.github/actions/chart-testing-action/README.md
vendored
Normal file
@ -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).
|
||||
60
.github/actions/chart-testing-action/action.yml
vendored
Normal file
60
.github/actions/chart-testing-action/action.yml
vendored
Normal file
@ -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
|
||||
153
.github/actions/chart-testing-action/ct.sh
vendored
Executable file
153
.github/actions/chart-testing-action/ct.sh
vendored
Executable file
@ -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 "$@"
|
||||
26
.github/workflows/lint.yml
vendored
26
.github/workflows/lint.yml
vendored
@ -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' }}
|
||||
id: lint
|
||||
uses: helm/chart-testing-action@v2.0.0
|
||||
uses: azure/setup-helm@v3
|
||||
with:
|
||||
command: lint
|
||||
version: v3.10.0
|
||||
|
||||
- name: Set up Python
|
||||
if: ${{ steps.check_changes.outputs.docs_only != 'true' }}
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
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 }}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user