skywalking-java/.github/actions/skip/action.yml

87 lines
2.8 KiB
YAML

#
# 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.
#
name: "Set Skip Env Var"
description: "Action to set the SKIP_CI environment variable indicating that we should skip CI jobs"
inputs:
paths:
description: >-
Set the SKIP_CI environment variable when and only when all the changed files located in one of the path,
the paths is shell-style pattern.
required: false
default: >-
"*.md"
"*.txt"
"skywalking-ui"
".asf.yaml"
".dlc.yaml"
".licenserc.yaml"
"docs/menu.yml"
".github/actions/skip/action.yml"
".github/workflows/codeql.yaml"
"dist-material/release-docs"
"test/plugin/*"
runs:
using: "composite"
steps:
- name: Check Changed Files And Set Env Var
shell: bash
run: |
if [[ "${{ github.event_name }}" != "pull_request" ]]; then
exit 0
fi
BASE_SHA=$(jq -r '.pull_request.base.sha' $GITHUB_EVENT_PATH)
echo "Base sha is $BASE_SHA, head sha is $GITHUB_SHA"
git fetch --no-tags --progress --recurse-submodules --depth=1 origin ${BASE_SHA}:origin/${BASE_SHA}
BASE_SHA=origin/${BASE_SHA}
echo "Base sha is $BASE_SHA, head sha is $GITHUB_SHA"
if ! files=$(git --no-pager diff --name-only ${GITHUB_SHA} ${BASE_SHA}); then
exit 1
fi
echo "Ignore pattern:"
for pattern in $(echo '${{ inputs.paths }}'); do
echo $pattern
done
echo "Changed files:"
for file in ${files}; do
echo $file
done
echo "SKIP_CI=true" >> $GITHUB_ENV
for file in ${files}; do
matched=0
for pattern in $(echo '${{ inputs.paths }}'); do
pattern=$(echo "$pattern" | sed 's/"//g')
if eval "[[ '$file' == $pattern ]]"; then
matched=1
break
fi
done
if [[ "$matched" == "0" ]]; then
echo "$file doesn't match pattern $(echo '${{ inputs.paths }}'), stop checking"
echo "SKIP_CI=false" >> $GITHUB_ENV
break
fi
done