temichelle13 / StudyPlanner

Study Planner Project
MIT License
1 stars 0 forks source link

Update Project Settings and Configuration #30

Open temichelle13 opened 1 month ago

temichelle13 commented 1 month ago

This task involves updating the project settings for the StudyPlanner repository, including branch protection rules, enabling issues and discussions, and setting up project boards.

codeautopilot[bot] commented 1 month ago

Potential solution

The task involves updating the project settings for the StudyPlanner repository, including enabling issues, discussions, project boards, and setting up branch protection rules. This can be achieved by configuring the .github/settings.yml file and creating a GitHub Actions workflow to enforce branch protection rules.

How to implement

Step 1: Update .github/settings.yml

This file will configure the repository settings to enable issues, discussions, project boards, and set branch protection rules.

File: .github/settings.yml

# Repository Settings
repository:
  issues: true
  discussions: true
  projects: true
  wiki: false

# Branch Protection Rules
branches:
  - name: main
    protection:
      required_status_checks:
        strict: true
        contexts: []
      enforce_admins: true
      required_pull_request_reviews:
        dismissal_restrictions:
          users: []
          teams: []
        dismiss_stale_reviews: true
        require_code_owner_reviews: true
        required_approving_review_count: 2
      restrictions:
        users: []
        teams: []
        apps: []
      required_linear_history: true
      allow_force_pushes: false
      allow_deletions: false

# Additional repository settings
repository:
  default_branch: main
  visibility: public
  topics: ["study-planner", "education", "productivity"]
  description: "A project to help students plan their study schedules effectively."
  homepage: "https://example.com/studyplanner"

Explanation:

  1. Repository Settings:

    • Enables issues, discussions, and project boards.
    • Disables the wiki feature.
  2. Branch Protection Rules:

    • Applies rules to the main branch.
    • Requires status checks to pass before merging.
    • Enforces admin rules.
    • Requires pull request reviews with specific conditions.
    • Restricts force pushes and deletions.
  3. Additional Settings:

    • Sets the default branch to main.
    • Sets the repository visibility to public.
    • Adds relevant topics for better discoverability.
    • Provides a description and homepage URL for the repository.

Step 2: Create .github/workflows/branch-protection.yml

This workflow will ensure branch protection rules are applied using GitHub Actions.

File: .github/workflows/branch-protection.yml

name: Branch Protection Rules

on:
  push:
    branches:
      - main
  workflow_dispatch:

jobs:
  apply-branch-protection:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
        uses: actions/checkout@v2

      - name: Apply branch protection rules
        uses: octokit/request-action@v2.x
        with:
          route: PATCH /repos/:owner/:repo/branches/:branch/protection
          owner: ${{ github.repository_owner }}
          repo: ${{ github.event.repository.name }}
          branch: main
          mediaType: '{"previews":["luke-cage"]}'
          protection: |
            {
              "required_status_checks": {
                "strict": true,
                "contexts": []
              },
              "enforce_admins": true,
              "required_pull_request_reviews": {
                "dismiss_stale_reviews": true,
                "require_code_owner_reviews": true,
                "required_approving_review_count": 2
              },
              "restrictions": null,
              "required_linear_history": true,
              "allow_force_pushes": false,
              "allow_deletions": false
            }
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Explanation:

Steps to Implement:

  1. Create the .github/settings.yml file in your repository and add the provided YAML configuration.
  2. Create the .github/workflows/branch-protection.yml file in your repository and add the provided YAML configuration.
  3. Commit and push the changes to your repository.

This setup will ensure that the repository settings are updated and branch protection rules are enforced for the main branch.

Click here to create a Pull Request with the proposed solution

Files used for this task:

Changes on .github/settings.yml To address the task of updating the project settings for the StudyPlanner repository, we need to create or update the `.github/settings.yml` file to include configurations for enabling issues, discussions, project boards, and branch protection rules. Below is a concrete proposal for the content of this file: ### .github/settings.yml ```yaml # Repository Settings repository: # Enable issues issues: true # Enable discussions discussions: true # Enable project boards projects: true # Enable wiki wiki: false # Branch Protection Rules # Apply these rules to the main branch branches: - name: main protection: required_status_checks: strict: true contexts: [] enforce_admins: true required_pull_request_reviews: dismissal_restrictions: users: [] teams: [] dismiss_stale_reviews: true require_code_owner_reviews: true required_approving_review_count: 2 restrictions: users: [] teams: [] apps: [] required_linear_history: true allow_force_pushes: false allow_deletions: false # Additional repository settings repository: # Set default branch default_branch: main # Set repository visibility visibility: public # Set repository topics topics: ["study-planner", "education", "productivity"] # Set repository description description: "A project to help students plan their study schedules effectively." # Set repository homepage homepage: "https://example.com/studyplanner" ``` ### Explanation: 1. **Repository Settings**: - `issues: true`: Enables the issues feature. - `discussions: true`: Enables the discussions feature. - `projects: true`: Enables project boards. - `wiki: false`: Disables the wiki feature (can be enabled if needed). 2. **Branch Protection Rules**: - Applied to the `main` branch. - Requires status checks to pass before merging. - Enforces admin rules. - Requires pull request reviews with specific conditions. - Restricts force pushes and deletions to maintain branch integrity. 3. **Additional Settings**: - Sets the default branch to `main`. - Sets the repository visibility to public. - Adds relevant topics for better discoverability. - Provides a description and homepage URL for the repository. This configuration ensures that the repository settings are aligned with the requirements specified in the task. If there are any additional specific settings or customizations needed, they can be added accordingly.
Changes on .github/workflows/branch-protection.yml To address the task of creating or updating the `.github/workflows/branch-protection.yml` file to ensure branch protection rules are applied, you can follow the steps below: 1. **Create the Workflow File**: Since this is a new file, you will need to create it in the specified directory. 2. **Define the Workflow**: The workflow should be configured to apply branch protection rules using GitHub Actions. This can be done using the `peter-evans/create-or-update-comment` action or similar actions that interact with the GitHub API. Here is a concrete example of how you can set up the `branch-protection.yml` file: ```yaml name: Branch Protection Rules on: push: branches: - main workflow_dispatch: jobs: apply-branch-protection: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v2 - name: Apply branch protection rules uses: octokit/request-action@v2.x with: route: PATCH /repos/:owner/:repo/branches/:branch/protection owner: ${{ github.repository_owner }} repo: ${{ github.event.repository.name }} branch: main mediaType: '{"previews":["luke-cage"]}' protection: | { "required_status_checks": { "strict": true, "contexts": [] }, "enforce_admins": true, "required_pull_request_reviews": { "dismiss_stale_reviews": true, "require_code_owner_reviews": true }, "restrictions": null } env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} ``` ### Explanation: - **Trigger Events**: The workflow is triggered on a push to the `main` branch and can also be manually triggered using `workflow_dispatch`. - **Checkout Repository**: The `actions/checkout@v2` action checks out the repository. - **Apply Branch Protection Rules**: The `octokit/request-action@v2.x` action is used to send a PATCH request to the GitHub API to apply branch protection rules. The rules specified in the `protection` field include: - `required_status_checks`: Ensures that all required status checks pass before merging. - `enforce_admins`: Enforces the rules for administrators. - `required_pull_request_reviews`: Requires pull request reviews, dismisses stale reviews, and requires code owner reviews. ### Steps to Implement: 1. **Create the `.github/workflows/branch-protection.yml` file** in your repository. 2. **Copy and paste the provided YAML configuration** into the file. 3. **Commit and push the changes** to your repository. This setup will ensure that branch protection rules are applied to the `main` branch whenever changes are pushed or the workflow is manually triggered. If you need to apply different rules or to other branches, you can modify the configuration accordingly.