Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Self-Service Fork Request: PR Workflow #20

Merged
merged 67 commits into from
Oct 13, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
a3df879
Stub GitHub organizational state directory structure
lelia Oct 4, 2022
87035c2
Move processed yaml fork files to wayfair-contribs
lelia Oct 4, 2022
67308cc
Update relative link in fork README
lelia Oct 4, 2022
e9ac331
Rename manual fork workflow
lelia Oct 4, 2022
b9f33aa
Rename workflow job name
lelia Oct 4, 2022
4e465a0
Add YAML lint file
lelia Oct 4, 2022
4e2403a
Add script for parsing fork requests from YAML
lelia Oct 4, 2022
78dfb75
Split yaml linting out from main lint workflow
lelia Oct 4, 2022
15d71c6
Propagate promoteUser value to GITHUB_ENV
lelia Oct 4, 2022
cc3ae76
Validate yaml file exists
lelia Oct 5, 2022
ad285e8
Add initial fork PR workflow
lelia Oct 5, 2022
4c75236
Add post-processing workflow
lelia Oct 5, 2022
99fad4f
Add test yaml file
lelia Oct 5, 2022
e3e7d93
Access output from triggering workflow
lelia Oct 5, 2022
178fa8f
Rename yaml file
lelia Oct 5, 2022
a73bc7f
Test post-processing workflow
lelia Oct 5, 2022
ec865e6
Move processed yaml files into wayfair-contribs
lelia Oct 5, 2022
2c3b879
Add script for moving yaml files into wayfair-contribs subfolder
lelia Oct 5, 2022
5c67d2e
Add script for pushing moved files to git with lhasa-ospo service acc…
lelia Oct 5, 2022
764e9d9
Fix workflow yaml syntax
lelia Oct 5, 2022
3b58728
Clean up workflow file
lelia Oct 5, 2022
31c01a7
Clean up lint workflow
lelia Oct 5, 2022
cfdd462
Update workflow job names
lelia Oct 8, 2022
5937280
Fix bash syntax error
lelia Oct 8, 2022
786d86e
Add missing step id to fix success conditional
lelia Oct 10, 2022
adf5917
Consolidate fork request scripts
lelia Oct 10, 2022
82ef0b7
Add post-processing step to fork workflow
lelia Oct 10, 2022
fd026f0
Process lelia's request (PR #20)
lhasa-ospo Oct 10, 2022
8b4deeb
Add automerge capability upon PR workflow success
lelia Oct 10, 2022
dac796a
Disable automerge for now
lelia Oct 12, 2022
7e5724f
Process new request file
lelia Oct 12, 2022
0f466cf
Test process with license-compliant repository
lelia Oct 12, 2022
14baf46
Process lelia's request (PR #20)
lhasa-ospo Oct 12, 2022
e9bbb2f
One more request test
lelia Oct 12, 2022
addf0cf
Process lelia's request (PR #20)
lhasa-ospo Oct 12, 2022
36cbcc4
Update git ignore
lelia Oct 12, 2022
4d2fd63
Update fork PR template phrasing
lelia Oct 12, 2022
b236024
Update README phrasing on self-service workflows
lelia Oct 12, 2022
b6f549d
Add images for README visual guide
lelia Oct 12, 2022
b98db78
Update fork request README to reflect self-service workflow steps
lelia Oct 12, 2022
f0c4d36
Adding error handling when no YAML file submitted
lelia Oct 12, 2022
f002caf
Fix env variable scope
lelia Oct 12, 2022
e8d24fd
Remove trailing quotation mark
lelia Oct 12, 2022
bef4ac0
Small formatting fix for error handling
lelia Oct 12, 2022
2c7bf5d
Fix markdown typo
lelia Oct 12, 2022
d973da9
Add final test request file
lelia Oct 12, 2022
2d6260f
Update actions refs to use latest locations
lelia Oct 12, 2022
b00a965
Fix request file to use repo with valid license
lelia Oct 12, 2022
040dc4a
Process lelia's request (PR #20)
lhasa-ospo Oct 12, 2022
3269551
Fix typo in template
lelia Oct 12, 2022
7bb25d0
Remove un-needed images from README guide
lelia Oct 12, 2022
b30d8ac
Update PR template menus to reflect simplified flow
lelia Oct 12, 2022
9ea5609
Make fork requests default PR template for ease-of-use
lelia Oct 12, 2022
928bfb5
Update fork request README to reflect simplified instructions
lelia Oct 12, 2022
bd81474
Fix typo in PR template
lelia Oct 13, 2022
f3f28fe
Remove redundant phrasing from README
lelia Oct 13, 2022
e913845
Apply success() conditional consistently
lelia Oct 13, 2022
7549a51
Propagate value of REQUEST_FILE to subsequent scripts
lelia Oct 13, 2022
59ce3ee
Adding final request file for testing automerge functionality
lelia Oct 13, 2022
90da9ea
No-op to test parse.sh script logic
lelia Oct 13, 2022
844059a
No-op for testing env variable scope
lelia Oct 13, 2022
af11fc0
Remove redundant logic and simplify mv script
lelia Oct 13, 2022
2ee3f42
Restore full workflow
lelia Oct 13, 2022
6fa84c9
Process lelia's request (PR #20)
lhasa-ospo Oct 13, 2022
4f2c29b
Remove automerge and add back required step id
lelia Oct 13, 2022
6961d7c
Final test file to confirm fixes
lelia Oct 13, 2022
0b692df
Process lelia's request (PR #20)
lhasa-ospo Oct 13, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 21 additions & 8 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,26 @@
# 🔄 OSPO Automation PR Menu
# 🔁 Fork a repository

🚨 INSTRUCTIONS: Click the `Preview` tab above, then select your desired PR template below!
🚨 INSTRUCTIONS: Click the `Preview` tab above, then follow along below!

## Self-Service Requests
## Description

- ✅ [Fork a repository](?expand=1&template=fork-repo.md)
- ❌ [Create a new repository](?expand=1&template=create-repo.md)
- ❌ [Migrate an existing repository](?expand=1&template=migrate-repo.md)
This PR template is intended for Wayfair developers requesting [repository forks](https://docs.github.com/en/get-started/quickstart/fork-a-repo) into the [`/wayfair-contribs`](https://github.com/wayfair-contribs) organization, to enable upstream contributions to existing open source projects.

## Developer Contributions
**You must already be a GitHub organization member of `/wayfair-contribs`** (and preferrably, [`/wayfair`](https://github.com/wayfair) + [`/wayfair-incubator`](https://github.com/wayfair-incubator) as well) **in order to use this workflow**. The repository you are requesting a fork of must also comply with our current list of approved open source licenses: **MIT**, **BSD** (3-clause, 2-clause, 0-clause), **Apache** (1.0, 1.1, 2.0).

- ✅ [Contribute to the codebase](?expand=1&template=standard-pr.md)
> 🚨 If you aren't already a member of Wayfair's open source GitHub organizations, please refer to internal Wayfair OSPO documentation on adding yourself to the `ospo-names` repository, or reach out on our internal Slack channel (`#open-source-forum`) if you need further assistance!

## Instructions

> **💡 Please follow all instructions in the [Fork a repository README](https://github.com/wayfair/ospo-automation/blob/main/requests/fork/README.md) before filing your Pull Request using this template!**

## Checklist

- [ ] I have confirmed that I am already a member of the `/wayfair-contribs` GitHub organization
- [ ] I have confirmed that the repository I wish to fork is compliant with our [approved list of licenses](#description)
- [ ] I have reviewed the [Fork a repository README](https://github.com/wayfair/ospo-automation/blob/main/requests/fork/README.md) and created a compliant `.yml` request file
- [ ] I have created a git branch name which follows the documented pattern of `fork-repo-<REPO-NAME>`

> 💡 During the beta rollout of this fully self-service workflow, you may encounter some errors or edge cases we have not accounted for yet. For any issues or feedback on using this workflow, please reach out to [Wayfair OSPO](https://wayfair.github.io) internally on Slack (`#open-source-forum`) and we can lend a hand!

🚨 Not the PR template you wanted? Click the `Preview` tab above, then navigate to the [OSPO Automation PR Menu](?expand=1&template=pr-menu.md)!
2 changes: 1 addition & 1 deletion .github/PULL_REQUEST_TEMPLATE/create-repo.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

## COMING SOON

🚨 Not the PR template you wanted? Click the `Preview` tab above, then navigate back to the [OSPO Automation PR Menu](?expand=1)!
🚨 Not the PR template you wanted? Click the `Preview` tab above, then navigate to the [OSPO Automation PR Menu](?expand=1&template=pr-menu.md)!
8 changes: 5 additions & 3 deletions .github/PULL_REQUEST_TEMPLATE/fork-repo.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@

## Description

This PR template is intended for requesting [repository forks](https://docs.github.com/en/get-started/quickstart/fork-a-repo) into the [`/wayfair-contribs`](https://github.com/wayfair-contribs) organization, to enable upstream contributions to existing open source projects. **You must already be a GitHub organization member of `/wayfair-contribs`** (and preferrably, [`/wayfair`](https://github.com/wayfair) + [`/wayfair-incubator`](https://github.com/wayfair-incubator) as well) **in order to use this workflow**. The repository you are requesting a fork of must also comply with our current list of approved open source licenses: **MIT**, **BSD** (3-clause, 2-clause, 0-clause), **Apache** (1.0, 1.1, 2.0).
This PR template is intended for Wayfair developers requesting [repository forks](https://docs.github.com/en/get-started/quickstart/fork-a-repo) into the [`/wayfair-contribs`](https://github.com/wayfair-contribs) organization, to enable upstream contributions to existing open source projects.

**You must already be a GitHub organization member of `/wayfair-contribs`** (and preferrably, [`/wayfair`](https://github.com/wayfair) + [`/wayfair-incubator`](https://github.com/wayfair-incubator) as well) **in order to use this workflow**. The repository you are requesting a fork of must also comply with our current list of approved open source licenses: **MIT**, **BSD** (3-clause, 2-clause, 0-clause), **Apache** (1.0, 1.1, 2.0).

> 🚨 If you aren't already a member of Wayfair's open source GitHub organizations, please refer to internal Wayfair OSPO documentation on adding yourself to the `ospo-names` repository, or reach out on our internal Slack channel (`#open-source-forum`) if you need further assistance!

Expand All @@ -19,6 +21,6 @@ This PR template is intended for requesting [repository forks](https://docs.gith
- [ ] I have reviewed the [Fork a repository README](https://github.com/wayfair/ospo-automation/blob/main/requests/fork/README.md) and created a compliant `.yml` request file
- [ ] I have created a git branch name which follows the documented pattern of `fork-repo-<REPO-NAME>`

> 💡 In the initial rollout of this workflow, requests filed as PRs will be semi-automated, with some manual verification and processing still performed by the OSPO team upon receipt. However, in the future, this workflow will become fully self-serviceable through automated PR checks and GitHub Actions-driven workflows! 🎉
> 💡 During the beta rollout of this fully self-service workflow, you may encounter some errors or edge cases we have not accounted for yet. For any issues or feedback on using this workflow, please reach out to [Wayfair OSPO](https://wayfair.github.io) internally on Slack (`#open-source-forum`) and we can lend a hand!

🚨 Not the PR template you wanted? Click the `Preview` tab above, then navigate back to the [OSPO Automation PR Menu](?expand=1)!
🚨 Not the PR template you wanted? Click the `Preview` tab above, then navigate to the [OSPO Automation PR Menu](?expand=1&template=pr-menu.md)!
2 changes: 1 addition & 1 deletion .github/PULL_REQUEST_TEMPLATE/migrate-repo.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

## COMING SOON

🚨 Not the PR template you wanted? Click the `Preview` tab above, then navigate back to the [OSPO Automation PR Menu](?expand=1)!
🚨 Not the PR template you wanted? Click the `Preview` tab above, then navigate to the [OSPO Automation PR Menu](?expand=1&template=pr-menu.md)!
13 changes: 13 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE/pr-menu.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# 🔄 OSPO Automation PR Menu

🚨 INSTRUCTIONS: Click the `Preview` tab above, then select your desired PR template below!

## Self-Service Requests

- ✅ [Fork a repository](?expand=1)
- ❌ [Create a new repository](?expand=1&template=create-repo.md) [COMING SOON]
- ❌ [Migrate an existing repository](?expand=1&template=migrate-repo.md) [COMING SOON]

## Developer Contributions

- ✅ [Contribute to the codebase](?expand=1&template=standard-pr.md)
2 changes: 1 addition & 1 deletion .github/PULL_REQUEST_TEMPLATE/standard-pr.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,4 @@ Note that by _not_ including a description, you are asking reviewers to do extra
- [ ] New code contribution is covered by automated tests
- [ ] All new and existing tests pass

🚨 Not the PR template you wanted? Click the `Preview` tab above, then navigate back to the [OSPO Automation PR Menu](?expand=1)!
🚨 Not the PR template you wanted? Click the `Preview` tab above, then navigate to the [OSPO Automation PR Menu](?expand=1&template=pr-menu.md)!
111 changes: 74 additions & 37 deletions .github/workflows/fork.yml
Original file line number Diff line number Diff line change
@@ -1,46 +1,83 @@
name: fork

on: # Only trigger on manual input
workflow_dispatch:
inputs:
owner:
description: 'Owner of GitHub repo to be forked'
required: true
repo:
description: 'GitHub repo to be forked'
required: true
org:
description: 'GitHub org to fork the repo into'
required: true
default: wayfair-contribs
user:
description: 'GitHub user requesting the fork'
required: true
checkUser:
description: 'Enforce organization membership for GitHub user?'
required: true
default: true
promoteUser:
description: 'Promote GitHub user to admin of the forked repo?'
required: true
default: false
on:
pull_request:
types: [opened, synchronize, reopened]
paths:
- 'requests/fork/*.yml'
- 'requests/fork/*.yaml'

env:
ROOT_DIR: "./requests/fork"
SCRIPTS_DIR: ".github/workflows/scripts/fork"
GITHUB_ACTOR: ${{ github.actor }}
GITHUB_PR: ${{ github.event.number }}
GITHUB_ORG: "wayfair-contribs"
LICENSE_STRING: "0bsd\napache-2.0\nbsd-2-clause\nbsd-3-clause\nmit"

jobs:
run:
demo:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: wayfair-incubator/forker@v0.0.5
name: "⑂ fork request"
with:
# Enforce current list of OSPO-approved licenses
licenseAllowlist: "0bsd\napache-2.0\nbsd-2-clause\nbsd-3-clause\nmit"
# Using API token for lhasa-ospo service account
ref: ${{ github.event.pull_request.head.ref }}
- name: 🍠 lint yaml
uses: ibiqlik/action-yamllint@v3
with:
file_or_dir: 'requests/fork/**'
config_file: '.yamllint.yml'
- name: 📑 parse request
run: ${SCRIPTS_DIR}/parse.sh
shell: bash
- name: 🚨 handle error
if: ${{ failure() }}
uses: actions/github-script@v6
with:
github-token: ${{ secrets.OSPO_API_TOKEN }}
script: |
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: "🚨 Hey @${{ env.GITHUB_ACTOR }}, looks like there was an issue processing your fork request! \
Please ensure you've committed a properly-formatted YAML (`.yml`) file to the `requests/fork/` directory."
})
- name: ✅ approve PR
if: ${{ success() }}
# Using contribs fork to make action compliant with migration to node v16
uses: wayfair-contribs/auto-approve-action@update-actions-runner-node
with:
github-token: ${{ secrets.OSPO_API_TOKEN }}
- name: 🚀 create fork
# Using forker release which sets output value for forkUrl
uses: wayfair-incubator/forker@v0.0.6
with:
token: ${{ secrets.OSPO_API_TOKEN }}
# Manual user inputs from workflow dispatch
repo: ${{ github.event.inputs.repo }}
owner: ${{ github.event.inputs.owner }}
org: ${{ github.event.inputs.org }}
user: ${{ github.event.inputs.user }}
checkUser: ${{ github.event.inputs.checkUser }}
promoteUser: ${{ github.event.inputs.promoteUser }}
repo: ${{ env.REPO_NAME }}
owner: ${{ env.REPO_OWNER }}
org: ${{ env.GITHUB_ORG }}
user: ${{ env.GITHUB_USER }}
checkUser: true
promoteUser: ${{ env.PROMOTE_USER }}
licenseAllowlist: ${{ env.LICENSE_STRING }}
id: fork
- name: 💬 add comment
if: ${{ success() }}
uses: actions/github-script@v6
with:
github-token: ${{ secrets.OSPO_API_TOKEN }}
script: |
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: "🎉 All set @${{ env.GITHUB_ACTOR }}! \
Here's your fork: ${{ steps.fork.outputs.forkUrl }}"
})
- name: 📦 process request
if: ${{ success() }}
run: |
${SCRIPTS_DIR}/move.sh
${SCRIPTS_DIR}/push.sh
shell: bash
8 changes: 0 additions & 8 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,3 @@ jobs:
uses: suzuki-shunsuke/github-action-renovate-config-validator@v0.1.2
with:
config_file_path: 'renovate.json'
yaml:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: 🍠 lint yaml requests # Validates user-submitted YAML (.yml) files
uses: ibiqlik/action-yamllint@v3
with:
file_or_dir: 'requests/**/*.yml'
46 changes: 46 additions & 0 deletions .github/workflows/manual.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
name: manual

on: # Only trigger on manual input
workflow_dispatch:
inputs:
owner:
description: 'Owner of GitHub repo to be forked'
required: true
repo:
description: 'GitHub repo to be forked'
required: true
org:
description: 'GitHub org to fork the repo into'
required: true
default: wayfair-contribs
user:
description: 'GitHub user requesting the fork'
required: true
checkUser:
description: 'Enforce organization membership for GitHub user?'
required: true
default: true
promoteUser:
description: 'Promote GitHub user to admin of the forked repo?'
required: true
default: false

jobs:
run:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: wayfair-incubator/forker@v0.0.5
name: "⑂ fork request"
with:
# Enforce current list of OSPO-approved licenses
licenseAllowlist: "0bsd\napache-2.0\nbsd-2-clause\nbsd-3-clause\nmit"
# Using API token for lhasa-ospo service account
token: ${{ secrets.OSPO_API_TOKEN }}
# Manual user inputs from workflow dispatch
repo: ${{ github.event.inputs.repo }}
owner: ${{ github.event.inputs.owner }}
org: ${{ github.event.inputs.org }}
user: ${{ github.event.inputs.user }}
checkUser: ${{ github.event.inputs.checkUser }}
promoteUser: ${{ github.event.inputs.promoteUser }}
10 changes: 10 additions & 0 deletions .github/workflows/scripts/fork/move.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/bin/bash

echo "Processing user-submitted YAML file: ${REQUEST_FILE}"
BASE_FILE=$(basename ${REQUEST_FILE})
REPO_NAME="${BASE_FILE%.*}"
TARGET_DIR="./${GITHUB_ORG}/${REPO_NAME}"
mkdir -p "${TARGET_DIR}"

echo "Moving YAML file to destination: ${TARGET_DIR}"
git mv ${REQUEST_FILE} ${TARGET_DIR}
47 changes: 47 additions & 0 deletions .github/workflows/scripts/fork/parse.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
#!/bin/bash

YAML_FILE=$(find ${ROOT_DIR} -type f -maxdepth 1 \( -iname \*.yml -o -iname \*.yaml \))

# Find uncategorized YAML files added to the ./requests directory
echo ${YAML_FILE} | grep .
# Only proceed if valid YAML files are found
if [ "$?" -eq 0 ]; then
export REQUEST_FILE="${YAML_FILE}"
echo "REQUEST_FILE=${REQUEST_FILE}" >> $GITHUB_ENV
echo "Found request file to process: ${REQUEST_FILE}"
else
echo "No YAML files to process! Exiting..."
exit 1
fi

# Extract single value from YAML key
function get_yaml_value {
yq $1 $REQUEST_FILE
}

# Derive constants from yq values
GITHUB_USER=$(get_yaml_value '.github_user')
REPO_OWNER=$(get_yaml_value '.repo_owner')
REPO_NAME=$(get_yaml_value '.repo_name')
REPO_URL="https://github.com/${REPO_OWNER}/${REPO_NAME}"
PROMOTE_USER=$(get_yaml_value '.admin_perms')

# Assert user filing PR is the user defined in YAML
if [[ "${GITHUB_USER}" == "${GITHUB_ACTOR}" ]]; then
echo "GITHUB_USER=${GITHUB_USER}" >> $GITHUB_ENV
else
echo "GitHub username does not match PR author! Got '${GITHUB_USER},' expected '${GITHUB_ACTOR}'"
exit 1
fi

# Confirm owner + repo data form a valid repository URL
if [ $(curl -s -o /dev/null -w "%{http_code}" ${REPO_URL}) -eq 200 ]; then
echo "REPO_OWNER=${REPO_OWNER}" >> $GITHUB_ENV
echo "REPO_NAME=${REPO_NAME}" >> $GITHUB_ENV
else
echo "Unable to verify repository URL! Tried: https://github.com/${REPO_OWNER}/${REPO_NAME}"
exit 1
fi

# Propagate user permissions value to env
echo "PROMOTE_USER=${PROMOTE_USER}" >> $GITHUB_ENV
10 changes: 10 additions & 0 deletions .github/workflows/scripts/fork/push.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/bin/bash

# Configure git to leave PR comments as the lhasa-ospo service account
BOT_USER="lhasa-ospo"
BOT_EMAIL="ossdev@wayfair.com"

git config --local user.name ${BOT_USER}
git config --local user.email ${BOT_EMAIL}
git commit -m "Process ${GITHUB_ACTOR}'s request (PR #${GITHUB_PR})"
git push
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
.vscode
.DS_Store
7 changes: 7 additions & 0 deletions .yamllint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
extends: default

rules:
truthy:
allowed-values: ['true', 'false', 'on']
ignore: requests/**/*.md
10 changes: 7 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,15 @@ Automation workflows for Wayfair's [Open Source Program Office](https://wayfair.

## Self-Service

🎉 Developers who wish to fork a repository into [`/wayfair-contribs`](https://github.com/wayfair-contribs) for upstream contributions can now leverage our self-service PR workflow!
Wayfair developers who wish to fork an open source repository into [`/wayfair-contribs`](https://github.com/wayfair-contribs) for upstream contributions can now leverage our self-service PR workflow.

> 💡 Please review the **[Fork a repository README](requests/fork/README.md)** and **[Pull Request template](.github/PULL_REQUEST_TEMPLATE/fork-repo.md)** to get started.
> 🎉 Please review the **[Fork a repository README](requests/fork/README.md)** to get started!

In the first phase, requests filed as PRs will be semi-automated, with some manual verification and processing still performed by the OSPO team upon receipt. However, in the future, this workflow will become fully self-serviceable through automated PR checks and GitHub Actions-driven workflows!
In the future, developers will also leverage PR workflows to request new projects in [`/wayfair-incubator`](https://github.com/wayfair-incubator), nominate mature projects to 'graduate' to [`/wayfair`](https://github.com/wayfair), and more.

> 💡 During the beta rollout of this fully self-service workflow, you may encounter some errors or edge cases we have not accounted for yet. For any issues or feedback on using this workflow, please reach out to [Wayfair OSPO](https://wayfair.github.io) internally on Slack (`#open-source-forum`) and we can lend a hand!

---

## Internal Usage

Expand Down
Binary file added img/approve.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added img/checklist.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added img/checks.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added img/compare.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added img/fork.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading