87 lines
2.8 KiB
YAML
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
|