Workflow file for this run
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 Closed - purging developer_branch | |
on: | |
pull_request_target: | |
branches: [githubActions] | |
types: [closed] | |
jobs: | |
# All Closed branches reverse commits made by the open/reopen/sync GH Action | |
revert-testing-commit: | |
timeout-minutes: 2 | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
with: | |
ref: developer_branch | |
fetch-depth: 0 | |
- name: Remove Updates from this PR | |
run: | | |
# Get Commits from this PR | |
TAG=PR_${{ github.event.pull_request.number }} | |
# Revert Commits or Log that no change was made | |
git config --local user.email "dev@null" | |
git config --local user.name "Conformitron Bot" | |
for commit in $(git rev-list HEAD --grep=$TAG); do | |
echo $commit | |
git revert $commit --no-edit || echo "Commit $commit not reverted" | |
done | |
git push | |
# Accepted PR's apply merged changes | |
commit-accepted-pr-files: | |
if: github.event.pull_request.merged == true | |
needs: revert-testing-commit | |
timeout-minutes: 2 | |
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 | |
- name: Remove Deleted Files, copy over added or modified files in accepted PR | |
id: update-branch-with-pr-files | |
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 Monitoring 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-$namespace.yml" | |
echo "apiVersion: v1" >> $config_map_file | |
echo "kind: ConfigMap" >> $config_map_file | |
echo "metadata:" >> $config_map_file | |
echo " name: $namespace-observation-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 " lastApprovedPrNumber: \"${{ github.event.pull_request.number }}\"" >> $config_map_file | |
echo " lastPrCommitHash: ${{ github.event.pull_request.head.sha }}" >> $config_map_file | |
echo " lastPointOfContact: ${{ github.event.pull_request.user.login }}" >> $config_map_file | |
echo " approved: \"$(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 merged PR_${{ github.event.pull_request.number }}" | |
git push | |