diff --git a/.github/workflows/close-pull-request.yaml b/.github/workflows/close-pull-request.yaml index 06029a9e..9d57ec0f 100644 --- a/.github/workflows/close-pull-request.yaml +++ b/.github/workflows/close-pull-request.yaml @@ -3,15 +3,11 @@ on: pull_request_target: branches: [main] types: [closed] - paths-ignore: - - 'Validated_Partners/**' - - '.github/**' - - 'docs' - - '.git' jobs: - merge-master-back-to-dev: - if: github.event.pull_request.merged == false + + # All Closed branches reverse commits made by the open/reopen/sync GH Action + revert-testing-commit: timeout-minutes: 2 runs-on: ubuntu-latest steps: @@ -23,14 +19,70 @@ jobs: run: | # Get Commits from this PR TAG=PR_${{ github.event.pull_request.number }} - commits=$(git rev-list HEAD --grep=$TAG --max-count=1) - echo "commits: $commits" # Revert Commits or Log that no change was made git config --local user.email "dev@null" git config --local user.name "Conformitron Bot" - git revert $commits --no-edit || echo "Commit $commits not reverted" + 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: 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 '.[]') + + # Checkout and update Developer 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 + + git commit -m "Adding new and changed files for merged PR_${{ github.event.pull_request.number }}" + git push + diff --git a/.github/workflows/new-pull-request.yaml b/.github/workflows/new-pull-request.yaml index 1dc2c5c7..360e7344 100644 --- a/.github/workflows/new-pull-request.yaml +++ b/.github/workflows/new-pull-request.yaml @@ -7,8 +7,8 @@ on: paths-ignore: - 'Validated_Partners/**' - '.github/**' - - 'docs' - - '.git' + - 'docs/**' + - '.git/**' jobs: build: @@ -23,7 +23,7 @@ jobs: - if: ${{github.event.action == 'synchronize' }} name: Sync Pause - run: sleep 120 + run: sleep 60 - name: Parse Namespace data, Create ConfigMap id: find-namespace-yaml @@ -77,12 +77,15 @@ jobs: namespace_file_subdirectory=$(dirname $filename) namespace_file=$(find $namespace_file_subdirectory -name *namespace*) namespace_name="" + partner_name="" - # get namespace from dev branch partner directory + # 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_name=$(yq e 'select(document_index==0).metadata.namespace' $filename) + 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 @@ -90,9 +93,7 @@ jobs: namespace_file=$(find $namespace_file_subdirectory -name "*namespace*") done - if [[ -n $namespace_name ]]; then - namespace_file_subdirectory=$(dirname $filename) - elif [ -f $namespace_file ]; then + 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 @@ -127,5 +128,5 @@ jobs: fi done - git commit -m "Adding new and changed files for PR_${{ github.event.pull_request.number }}" + git commit -m "Adding new and changed files for testing of PR_${{ github.event.pull_request.number }}" git push