🔙 PyCon TW 2021 Organizing 共筆

歡迎你一起參與並為 PyCon TW 社群貢獻,希望這份紀錄對你在開發上有幫助 :)

ㄧ. 起手式,試著 Run PyCon 專案

起手式當然是先把 PyCon TW 的官網試著跑起來看看,今年有整理了一下 README.md,相信應該非常容易上手!

首先從 PyCon TW GitHub 中點擊 fork repo 回自己的 GitHub,接下來 git clone 專案到本地後,目前有兩種方式可以讓專案跑起來:

1. 使用 docker

基本上都包好 docker-compose 了,只需要下一行指令就完成了,非常簡單!

$ ./enter_dev_env.sh

docker 小補充:

當 docker 跑起來後,如果要進行像是操作,像是增加 admin 帳號的話,可以使用 docker exec 進入環境,如下

1. $ docker ps 找到你的 <docker name>
2. $ docker exec -it <docker_name> bash -> 會進到 docker 裡面
3. 在 docker 裡面 $ cd src && python3 manage.py createsuperuser 就可以開始建立 admin 帳號了
4. 操作結束按[ctrl+d]離開docker

關於 docker exec 的詳細用法可以參考這篇官方說明

2. 本地環境

安裝步驟比較麻煩,主要會分成三步驟:

  1. 首先是建立環境,安裝 Python 和 Node.js 套件
  2. 再來需要準備 local.env 檔案
  3. 最後是 migrate & createsuperuser & compilemessages

完整的安裝流程,詳細內容整理在 這篇 deploy_local_env_dev.md

不論是使用 Docker 或本地環境跑起來後,進入 http://0.0.0.0:8000/ 就會看到目前最新版本的 PyCon 官網囉!

二. 開始接任務啦!

開始前,首先建立新的分支,再開始任務,關於 git branch 指令,可以參考如下:

$ git branch # 查看本地所有分支
$ git checkout <Name> # 切換到指定分支
$ git checkout -b <Name> # 建立且切換到建立的分支
$ git branch -d <name> # 刪除指定分支

接下來可能會遇到當 fork 的專案,落後於 PyCon 的主專案時 (如下紅框框):

可以將使用 merge 讓本地的專案更新,讓兩邊版本保持一致:

$ git remote add upstream git@github.com:pycontw/pycon.tw.git
$ git fetch upstream
$ git checkout master
$ git merge upstream/master # or $ git rebase upstream/master
$ git push origin master

三. 當任務完成,Push 前要留意的事

如果有改到 model 的東西,記得要重新 migrate 一次 (關於 migrate 可參考這篇官方文件)

$ python3 manage.py makemigrations 
$ python3 manage.py migrate

如果有修改到 i18n 的東西,記得需要跑 compilemessages (關於 i18n 可參考這篇官方文件)

$ python3 manage.py compilemessages

push 之前跑跑測試,看看有沒有遇到什麼問題!

$ cd src
$ pytest -n 2 --cov=.

都正常的話,就可以 push 了

$ git push

四. 發 Pull Requests

在自己的專案中,選擇 New pull request

選擇剛剛的分支後,下方可以看到這次的 commit 和更動的紀錄

確認都沒問題,就可以點擊 create pull request,接下來就是針對這次的任務進行描述,主要的描述重點可以分成以下六項:

  1. Types of changes
  2. Description
  3. Steps to Test This Pull Request
  4. Expected behavior
  5. Related Issue
  6. More Information

最後就完成 PR 囉,接下來等待大家的 review 和建議就可以了~

經過大家的 review 過後,如果有需要修改的部分,只需要重新 push 一次,PR 就會自動更新囉!

五. 在本地查看 Pull requests

$ git fetch upstream pull/ID/head:BRANCHNAME
$ git checkout BRANCHNAME

六. 其他補充

專案中的 ccip:

是整合了 OPass 的活動資訊的解決方案,OPass 是為了台灣開源資訊社群研討會所開發的報到 App,關於更多 OPass 可以參考此篇文件