diff --git a/.github/Key Branch Protection Rules.json b/.github/Key Branch Protection Rules.json index f256fdb..2c4d14e 100644 --- a/.github/Key Branch Protection Rules.json +++ b/.github/Key Branch Protection Rules.json @@ -10,10 +10,10 @@ "exclude": [], "include": [ "~DEFAULT_BRANCH", + "refs/heads/dev", "refs/heads/development", "refs/heads/main", - "refs/heads/master", - "refs/heads/dev" + "refs/heads/master" ] } }, @@ -32,24 +32,29 @@ "require_code_owner_review": false, "require_last_push_approval": false, "required_review_thread_resolution": true, - "allowed_merge_methods": [ - "merge", - "squash", - "rebase" - ] + "automatic_copilot_code_review_enabled" :false + } + }, + { + "type": "branch_name_pattern", + "parameters": { + "operator": "regex", + "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$", + "negate": false, + "name": "Enforces the lower case, dash separated naming convention of branches" } } ], "bypass_actors": [ { - "actor_id": null, - "actor_type": "OrganizationAdmin", + "actor_id": 5, + "actor_type": "RepositoryRole", "bypass_mode": "pull_request" }, { - "actor_id": 5, - "actor_type": "RepositoryRole", + "actor_id": 1, + "actor_type": "OrganizationAdmin", "bypass_mode": "pull_request" } ] -} \ No newline at end of file +} diff --git a/.github/workflows/Check Repository Ruleset.yaml b/.github/workflows/Check Repository Ruleset.yaml index 43c470b..5ca7802 100644 --- a/.github/workflows/Check Repository Ruleset.yaml +++ b/.github/workflows/Check Repository Ruleset.yaml @@ -36,13 +36,13 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} REPO_NAME: ${{ github.repository }} run: | - DEFAULT_BRANCH="main" + #DEFAULT_BRANCH="development" # Fetch default branch dynamically - #DEFAULT_BRANCH=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \ - # -H "Accept: application/vnd.github+json" \ - # "https://api.github.com/repos/$REPO_NAME" | jq -r '.default_branch') - #echo "Default branch detected: $DEFAULT_BRANCH" - #echo "Fetching ruleset for repository: $REPO_NAME, branch: $DEFAULT_BRANCH..." + DEFAULT_BRANCH=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \ + -H "Accept: application/vnd.github+json" \ + "https://api.github.com/repos/$REPO_NAME" | jq -r '.default_branch') + echo "Default branch detected: $DEFAULT_BRANCH" + echo "Fetching ruleset for repository: $REPO_NAME, branch: $DEFAULT_BRANCH..." API_URL="https://api.github.com/repos/$REPO_NAME/rules/branches/$DEFAULT_BRANCH" @@ -69,76 +69,71 @@ jobs: - name: Compare Rulesets run: | - echo "Comparing fetched ruleset with expected ruleset..." + echo "Comparing fetched ruleset with expected ruleset.." + + # Load actual and expected rulesets using jq ACTUAL_RULES=$(jq -c 'map({type, parameters: (if has("parameters") then .parameters else {} end)})' ruleset_response.json) EXPECTED_RULES=$(jq -c 'map({type, parameters: (if has("parameters") then .parameters else {} end)})' expected_ruleset.json) - + echo "Actual Rules: $ACTUAL_RULES" echo "Expected Rules: $EXPECTED_RULES" - - if [[ -z "$ACTUAL_RULES" || -z "$EXPECTED_RULES" ]]; then - echo "Error: One of the rulesets is empty. Check API response." + + # Ensure the rules are properly retrieved + if [[ -z "$ACTUAL_RULES" || "$ACTUAL_RULES" == "null" || -z "$EXPECTED_RULES" || "$EXPECTED_RULES" == "null" ]]; then + echo "Error: One of the rulesets is empty or invalid. Check API response." exit 1 fi - + + # Function to compare rules dynamically compare_rule() { - local rule_type=$1 - local expected_rule=$2 - local actual_rule=$3 - - if [[ "$rule_type" == "pull_request" ]]; then - EXPECTED_PR_PARAMS=$(echo "$expected_rule" | jq -c '(if has("parameters") then .parameters else {} end)') - ACTUAL_PR_PARAMS=$(echo "$actual_rule" | jq -c '(if has("parameters") then .parameters else {} end)') - - EXPECTED_MERGE_METHODS=$(echo "$EXPECTED_PR_PARAMS" | jq -c 'if has("allowed_merge_methods") then .allowed_merge_methods | sort else [] end') - ACTUAL_MERGE_METHODS=$(echo "$ACTUAL_PR_PARAMS" | jq -c 'if has("allowed_merge_methods") then .allowed_merge_methods | sort else [] end') - - echo "Expected Merge Methods: $EXPECTED_MERGE_METHODS" - echo "Actual Merge Methods: $ACTUAL_MERGE_METHODS" - - if [[ "$EXPECTED_MERGE_METHODS" != "$ACTUAL_MERGE_METHODS" ]]; then - echo " Pull request rule 'allowed_merge_methods' mismatch" - echo "Expected: $EXPECTED_MERGE_METHODS" - echo "Actual: $ACTUAL_MERGE_METHODS" + local expected_rule=$1 + local actual_rule=$2 + + # Extract and compare parameters + EXPECTED_PARAMS=$(echo "$expected_rule" | jq -c '.parameters // {}') + ACTUAL_PARAMS=$(echo "$actual_rule" | jq -c '.parameters // {}') + + # Ensure all expected parameters exist in actual (ignore extra ones) + while read -r param; do + EXPECTED_VALUE=$(echo "$EXPECTED_PARAMS" | jq -r --arg param "$param" '.[$param]') + ACTUAL_VALUE=$(echo "$ACTUAL_PARAMS" | jq -r --arg param "$param" '.[$param]') + + if [[ "$EXPECTED_VALUE" != "$ACTUAL_VALUE" ]]; then + echo "Mismatch found in parameter '$param':" + echo "Expected: $EXPECTED_VALUE" + echo "Actual: $ACTUAL_VALUE" return 1 fi - - if [[ "$EXPECTED_PR_PARAMS" != "$ACTUAL_PR_PARAMS" ]]; then - echo " Pull request rule parameters mismatch" - echo "Expected: $EXPECTED_PR_PARAMS" - echo "Actual: $ACTUAL_PR_PARAMS" - return 1 - fi - fi - - if [[ "$expected_rule" != "$actual_rule" ]]; then - echo " Rule type mismatch: $rule_type" - echo "Expected: $expected_rule" - echo "Actual: $actual_rule" - return 1 - fi + done < <(echo "$EXPECTED_PARAMS" | jq -r 'keys[]') + return 0 - } - + } + MATCHED=true - for expected_rule in $(echo "$EXPECTED_RULES" | jq -c '.[]'); do + + # Compare each expected rule against actual rules + while read -r expected_rule; do rule_type=$(echo "$expected_rule" | jq -r '.type') actual_rule=$(echo "$ACTUAL_RULES" | jq -c --arg type "$rule_type" '.[] | select(.type == $type)') - + if [[ -z "$actual_rule" ]]; then - echo " Missing expected rule: $rule_type" + echo "Missing expected rule: $rule_type" MATCHED=false continue fi - - if ! compare_rule "$rule_type" "$expected_rule" "$actual_rule"; then + + if ! compare_rule "$expected_rule" "$actual_rule"; then MATCHED=false fi - done - + done < <(echo "$EXPECTED_RULES" | jq -c '.[]') + if [[ "$MATCHED" == false ]]; then - echo " Ruleset mismatch found" + echo "Ruleset mismatch found" exit 1 else - echo " Ruleset matches" - fi \ No newline at end of file + echo "Ruleset matches" + fi + + else + echo "Ruleset matches" + fi diff --git a/src/classification_Iris_data.py b/src/classification_Iris_data.py index 6d566b1..100101b 100644 --- a/src/classification_Iris_data.py +++ b/src/classification_Iris_data.py @@ -10,8 +10,7 @@ # kernelspec: # display_name: Python 3 (ipykernel) # language: python -# name: python3 -# --- + # + import streamlit as st