Added Sysdig agent support and testing automations #574
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: PR Opened - moving new ISV addon to developer_branch for E2E testing | |
on: | |
pull_request_target: | |
branches: [main] | |
types: [opened, reopened, synchronize] | |
paths-ignore: | |
- 'Validated_Partners/**' | |
- '.github/**' | |
- 'docs/**' | |
- '.git/**' | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Base | |
uses: actions/checkout@v4 | |
- name: Checkout PR Code | |
run: | |
git fetch origin pull/${{ github.event.pull_request.number }}/head:pr | |
- if: ${{github.event.action == 'synchronize' }} | |
name: Sync Pause | |
run: sleep 60 | |
- name: Parse Namespace data, Create ConfigMap | |
id: find-namespace-yaml | |
run: | | |
# Pull file information down into a JSON array | |
readarray -t files < <(curl -s "https://api.github.com/repos/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}/files" | jq -c '.[]') | |
# Move updated files over to dev branch | |
git fetch --all | |
git config --local user.email "dev@null" | |
git config --local user.name "Conformitron Bot" | |
# fetch most recent update to dev | |
git checkout developer_branch | |
git pull | |
# Remove Deleted Files, copy over added or modified files | |
for item in "${files[@]}"; do | |
status=$(echo "$item" | jq -r '.status') | |
filename=$(echo "$item" | jq -r '.filename') | |
if [ "$status" == renamed ]; then | |
git checkout pr -- $filename | |
git add $filename | |
if [ -f $(echo "$item" | jq -r '.previous_filename') ]; then | |
git rm $(echo "$item" | jq -r '.previous_filename') | |
fi | |
echo "Renaming $filename" | |
elif [ "$status" != removed ]; then | |
git checkout pr -- $filename | |
git add $filename | |
echo "Moving $filename" | |
else | |
if [ -f $filename ]; then | |
echo "Deleting $filename" | |
git rm $filename | |
fi | |
fi | |
done | |
# Create ConfigMap for each file's partner folder | |
for item in "${files[@]}"; do | |
status=$(echo "$item" | jq -r '.status') | |
filename=$(echo "$item" | jq -r '.filename') | |
echo $filename | |
if [ "$status" != removed ] && [[ $filename != *README.md ]]; then | |
# Parse namespace data | |
subdirectory=$(dirname $filename) | |
namespace_file_subdirectory=$(dirname $filename) | |
namespace_file=$(find $namespace_file_subdirectory -name *namespace*) | |
namespace_name="" | |
partner_name="" | |
# get namespace from dev branch partner directory. If in Testers directory, re-align to Addons/Partner/{partner} | |
while [ -z "$(find $namespace_file_subdirectory -name '*namespace*')" ] && [[ -z $namespace_name ]]; do | |
partner_name=$(basename $namespace_file_subdirectory) | |
namespace_file_subdirectory=$(dirname $namespace_file_subdirectory) | |
if [ $(basename $namespace_file_subdirectory) == "Testers" ]; then | |
namespace_file_subdirectory=$(dirname $namespace_file_subdirectory) | |
namespace_file_subdirectory=$namespace_file_subdirectory/Addons/Partner/$partner_name | |
elif [ $(basename $namespace_file_subdirectory) == "Partner" ] || [ $(basename $namespace_file_subdirectory) == "Core" ]; then | |
echo "No Namespace File Found in Partner Directory" | |
exit 200 | |
fi | |
namespace_file=$(find $namespace_file_subdirectory -name "*namespace*") | |
done | |
if [ -f $namespace_file ]; then | |
namespace_file_subdirectory=$(dirname $namespace_file) | |
namespace_name=$(grep -E '^\s*metadata:\s*$|^\s*name:\s*' "$namespace_file" | awk -F':' '{gsub(/ /, "", $2); print $2}') | |
else | |
echo "No Namespace file found" | |
exit 200 | |
fi | |
if [[ -n $namespace_name ]]; then | |
namespace=$(echo $namespace_name | xargs echo -n) | |
config_map_file="config-map-${{ github.event.pull_request.number }}.yml" | |
echo "apiVersion: v1" >> $config_map_file | |
echo "kind: ConfigMap" >> $config_map_file | |
echo "metadata:" >> $config_map_file | |
echo " name: $namespace-configmap" >> $config_map_file | |
echo " namespace: $namespace" >> $config_map_file | |
echo " labels:" >> $config_map_file | |
echo " bot: conformitron" >> $config_map_file | |
echo "data:" >> $config_map_file | |
echo " Namespace: ${namespace}" >> $config_map_file | |
echo " prNumber: \"${{ github.event.pull_request.number }}\"" >> $config_map_file | |
echo " commitHash: ${{ github.event.pull_request.head.sha }}" >> $config_map_file | |
echo " deployed: \"$(date +%s)\"" >> $config_map_file | |
echo " env: $(echo $subdirectory | cut -f1 -d/ | awk -F- '{print $NF}' )" >> $config_map_file | |
mkdir -p ./$namespace_file_subdirectory/ | |
mv "$config_map_file" ./$namespace_file_subdirectory/ | |
git add ./$namespace_file_subdirectory/ | |
else | |
echo "No Namespace found, Invalid namespace file" | |
exit 100 | |
fi | |
fi | |
done | |
git commit -m "Adding new and changed files for testing of PR_${{ github.event.pull_request.number }}" | |
git push |