Skip to content

πŸ€– Simple GitHub Organization Invitation Bot in Slack

License

Notifications You must be signed in to change notification settings

geultto/gitvite

Repository files navigation

Gitvite πŸ“¨

λͺ©μ°¨ πŸ“š

μ†Œκ°œ πŸŽ‰

μ†Œκ°œ

GitviteλŠ” κΉƒν—™ 쑰직에 μ‚¬λžŒμ„ κ°„λ‹¨ν•˜κ²Œ μ΄ˆλŒ€ν•˜κΈ° μœ„ν•œ λŒ€ν™”ν˜• 파이썬 μ• ν”Œλ¦¬μΌ€μ΄μ…˜μž…λ‹ˆλ‹€.

λ³Έ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ κΈ€λ˜ 멀버듀을 효과적으둜 쑰직에 μ΄ˆλŒ€ν•˜κΈ° μœ„ν•΄ λ§Œλ“€μ–΄μ‘ŒμŠ΅λ‹ˆλ‹€.

⬆️ Back to Top

디렉토리 ꡬ쑰

λ³Έ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ 디렉토리 κ΅¬μ‘°λŠ” μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

μ΄λ•Œ μ†ŒμŠ€ μ½”λ“œκ°€ λ“€μ–΄μžˆλŠ” λ””λ ‰ν† λ¦¬λŠ” src ν΄λ”μž…λ‹ˆλ‹€.

.
β”œβ”€β”€ LICENSE
β”œβ”€β”€ README.md
β”œβ”€β”€ examples
β”‚   └── example.env
β”œβ”€β”€ images
β”‚   β”œβ”€β”€ 1.gif
β”‚   └── 2.gif
β”œβ”€β”€ .flake8
β”œβ”€β”€ .pre-commit-config.yaml
β”œβ”€β”€ poetry.lock
β”œβ”€β”€ pyproject.toml
└── src
    β”œβ”€β”€ core
    β”œβ”€β”€ main.py
    β”œβ”€β”€ schema
    β”‚   β”œβ”€β”€ __init__.py
    β”‚   β”œβ”€β”€ information.py
    β”‚   └── response.py
    β”œβ”€β”€ test
    β”‚   └── __init__.py
    └── util
        β”œβ”€β”€ __init__.py
        β”œβ”€β”€ cli.py
        β”œβ”€β”€ github.py
        └── worker.py

⬆️ Back to Top

κΈ°λŠ₯ πŸš€

νŒ¨ν‚€μ§€ μ„€μΉ˜

νŒ¨ν‚€μ§€ κ΄€λ¦¬λŠ” Poetryλ₯Ό ν™œμš©ν•©λ‹ˆλ‹€.

λ§Œμ•½ Poetryκ°€ λ”°λ‘œ μ„€μΉ˜λ˜μ–΄ μžˆμ§€ μ•Šλ‹€λ©΄ μ•„λž˜μ™€ 같은 λͺ…λ Ήλ¬ΈμœΌλ‘œ μ„€μΉ˜ κ°€λŠ₯ν•©λ‹ˆλ‹€.

pip install poetry

Poetry μ„€μΉ˜μ™€ κ΄€λ ¨λœ 더 μžμ„Έν•œ λ‚΄μš©μ€ 곡식 λ¬Έμ„œ 쀑 μ„€μΉ˜ 뢀뢄을 톡해 확인 κ°€λŠ₯ν•©λ‹ˆλ‹€.

Poetry μ„€μΉ˜κ°€ λ˜μ–΄ μžˆκ±°λ‚˜ μƒˆλ‘œ μ„€μΉ˜λ₯Ό μ™„λ£Œν•˜μ˜€λ‹€λ©΄ pyproject.toml 파일이 μ‘΄μž¬ν•˜λŠ” μœ„μΉ˜μ—μ„œ μ•„λž˜μ™€ 같은 λͺ…령문을 μž…λ ₯ν•©λ‹ˆλ‹€.

poetry install

λ§Œμ•½ 개발 단계에 μ‚¬μš©λ˜λŠ” νŒ¨ν‚€μ§€λ₯Ό λ‹€μš΄λ‘œλ“œ 받지 μ•ŠκΈΈ μ›ν•œλ‹€λ©΄ μ•„λž˜μ™€ 같은 λͺ…령문을 μž…λ ₯ν•©λ‹ˆλ‹€.

poetry install --no-dev

μ‚¬μš©λ˜λŠ” νŒ¨ν‚€μ§€λŠ” μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

  • typer
  • pandas
  • pydantic
  • requests
  • email-validator
  • python-dotenv
  • openpyxl

개발 λ‹¨κ³„μ—μ„œ μ‚¬μš©λ˜λŠ” νŒ¨ν‚€μ§€λŠ” μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.

  • pre-commit
  • flake8
  • black
  • isort
  • mypy
  • types-requests

ν¬λ§€νŒ… κ΄€λ ¨ν•œ 값이 μ„€μ •λ˜μ–΄ μžˆλŠ” νŒŒμΌμ€ .pre-commit-config.yaml 파일과 .flake8 파일, 그리고 pyproject.toml νŒŒμΌμž…λ‹ˆλ‹€.

⬆️ Back to Top

μ‹€ν–‰ 방법

νŒ¨ν‚€μ§€ μ„€μΉ˜κ°€ μ™„λ£Œλ˜μ—ˆλ‹€λ©΄ μ•„λž˜μ™€ 같은 λͺ…λ Ήλ¬ΈμœΌλ‘œ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰ κ°€λŠ₯ν•©λ‹ˆλ‹€.

ν•΄λ‹Ή λͺ…령문은 src/main.py 파일 내에 μ‘΄μž¬ν•˜λŠ” app() ν•¨μˆ˜λ₯Ό νƒ€κ²ŸμœΌλ‘œ ν•˜μ—¬ μ‹€ν–‰ν•©λ‹ˆλ‹€.

poetry run python -m src.main

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰ν•˜λ©΄ μ•„λž˜ 이미지와 κ°™μŠ΅λ‹ˆλ‹€.

Main GIF

⬆️ Back to Top

κΉƒν—™ μ•‘μ„ΈμŠ€ 토큰 생성

λ³Έ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ΄μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” κΉƒν—™ μ„œλΉ„μŠ€μ—μ„œ Developer settings νŽ˜μ΄μ§€μ— λ“€μ–΄κ°€ μ•‘μ„ΈμŠ€ 토큰을 λ°œκΈ‰ λ°›μ•„μ•Ό ν•©λ‹ˆλ‹€.

μ΄λ•Œ μ•„λž˜ 이미지와 같이 admin:org λΆ€λΆ„ 쀑 write:org 및 read:org κΆŒν•œμ„ ν—ˆκ°€ν•΄μ•Ό 쑰직 μ΄ˆλŒ€κ°€ κ°€λŠ₯ν•΄μ§‘λ‹ˆλ‹€.

⬆️ Back to Top

.env 파일 ν™œμš©

.env νŒŒμΌμ— μž…λ ₯λ˜μ–΄μ•Ό ν•  ν•­λͺ©μ€ μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€. ν•΄λ‹Ή 뢀뢄은 example.env νŒŒμΌμ—μ„œλ„ 확인 κ°€λŠ₯ν•©λ‹ˆλ‹€.

μ΄λ•Œ μœ μ˜ν•΄μ•Ό ν•  사항은 .env 파일이 ν•΄λ‹Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ””λ ‰ν† λ¦¬μ˜ μ΅œμƒλ‹¨μ— μ‘΄μž¬ν•΄μ•Ό ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

# examples/example.env

FILE_TYPE=
FILE_PATH=

GITHUB_ACCOUNT_COLUMN_NAME=
GITHUB_ORGANIZATION_TEAMS_COLUMN_NAME=

GITHUB_ACCESS_TOKEN=
GITHUB_ORGANIZATION_NAME=
GITHUB_ORGANIZATION_TEAM_NAME=

μ΄λ•Œ 각각의 ν•­λͺ©μ€ μ•„λž˜μ™€ 같은 의미λ₯Ό κ°™μŠ΅λ‹ˆλ‹€

  • FILE_TYPE : λŒ€μƒμ΄λ˜λŠ” 파일의 μ’…λ₯˜μž…λ‹ˆλ‹€. ν˜„μž¬ 1 은 CSV , 2 λŠ” EXCEL νŒŒμΌμ„ μ˜λ―Έν•©λ‹ˆλ‹€.
  • FILE_PATH : λŒ€μƒμ΄ λ˜λŠ” 파일의 κ²½λ‘œμž…λ‹ˆλ‹€. μ΄λ•Œ μ ˆλŒ€κ²½λ‘œ 및 μƒλŒ€κ²½λ‘œ λͺ¨λ‘ κ°€λŠ₯ν•©λ‹ˆλ‹€.
  • GITHUB_ACCOUNT_COLUMN_NAME : 파일 속 μ‚¬μš©μžλ“€μ˜ κΉƒν—™ 계정이 μ €μž₯λ˜μ–΄ μžˆλŠ” 컬럼λͺ…μž…λ‹ˆλ‹€.
  • GITHUB_ORGANIZATION_TEAMS_COLUMN_NAME : 파일 속 μ‚¬μš©μžλ₯Ό μ΄ˆλŒ€ν•˜λ €λŠ” κΉƒν—™ 쑰직 정보가 μ €μž₯λ˜μ–΄ μžˆλŠ” 컬럼λͺ…μž…λ‹ˆλ‹€.
  • GITHUB_ACCESS_TOKEN : κΉƒν—™ μ„œλΉ„μŠ€μ—μ„œ λ°œκΈ‰ 받은 μ•‘μ„ΈμŠ€ 토큰 κ°’μž…λ‹ˆλ‹€.
  • GITHUB_ORGANIZATION_NAME : μ‚¬μš©μžλ₯Ό μ΄ˆλŒ€ν•˜λ €λŠ” κΉƒν—™ 쑰직의 μ΄λ¦„μž…λ‹ˆλ‹€.
  • GITHUB_ORGANIZATION_TEAM_NAME : μ‚¬μš©μžλ₯Ό μ΄ˆλŒ€ν•˜λ €λŠ” κΉƒν—™ 쑰직의 νŒ€ μ΄λ¦„μž…λ‹ˆλ‹€.

λ§Œμ•½ .env 파일이 μ‘΄μž¬ν•˜μ§€ μ•Šκ±°λ‚˜ ν•„μˆ˜μ μœΌλ‘œ μš”κ΅¬κ°€ λ˜λŠ”λ° μž…λ ₯λ˜μ§€ μ•Šμ€ 값이 μ‘΄μž¬ν•˜λ©΄ μ•„λž˜μ™€ 같이 ν„°λ―Έλ„μ—μ„œ λŒ€ν™”ν˜•μœΌλ‘œ 값을 μž…λ ₯ν•©λ‹ˆλ‹€.

Environment Configuration GIF

⬆️ Back to Top

λΌμ΄μ„ μŠ€ πŸ“œ

λ³Έ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 및 μ†ŒμŠ€ μ½”λ“œλŠ” MIT λΌμ΄μ„ μŠ€ 정책을 λ”°λ¦…λ‹ˆλ‹€.

⬆️ Back to Top

μˆ˜μ •μΌμž πŸ“†

2022. 07. 07. λͺ©μš”일

  • 졜초 등둝

⬆️ Back to Top

About

πŸ€– Simple GitHub Organization Invitation Bot in Slack

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Languages