嗨你好,我是 Max,很歡迎你一起參與並為 PyCon TW 社群貢獻,希望這份紀錄對你在開發上有幫助 🙂
Table
ㄧ. 起手式,試著 Run PyCon 專案
起手式當然是先把 PyCon TW 的官網試著跑起來看看,今年有整理了一下 README.md,相信應該非常容易上手!
首先從 PyCon TW GitHub 中點擊 fork repo 回自己的 GitHub,接下來 git clone
專案到本地後,目前有兩種方式可以讓專案跑起來:
1. 使用 docker
基本上都包好 docker-compose 了,只需要下一行指令就完成了,非常簡單!
1 |
$ ./enter_dev_env.sh |
docker 小補充:
當 docker 跑起來後,如果要進行像是操作,像是增加 admin 帳號的話,可以使用 docker exec
進入環境,如下
1 2 3 |
1. $ docker ps 找到你的 <docker name> 2. $ docker exec -it <docker_name> bash -> 會進到 docker 裡面 3. 在 docker 裡面 $ cd src && python3 manage.py createsuperuser 就可以開始建立 admin 帳號了 |
關於 docker exec 的詳細用法可以參考這篇官方說明
2. 本地環境
安裝步驟比較麻煩,主要會分成三步驟:
- 首先是建立環境,安裝 Python 和 Node.js 套件
- 再來需要準備
local.env
檔案 - 最後是 migrate & createsuperuser & compilemessages
完整的安裝流程,詳細內容整理在 這篇 deploy_local_env_dev.md
不論是使用 Docker 或本地環境跑起來後,進入 http://0.0.0.0:8000/ 就會看到目前最新版本的 PyCon 官網囉!

二. 開始接任務啦!
開始前,首先建立新的分支,再開始任務,關於 git branch 指令,可以參考如下:
1 2 3 4 |
$ git branch # 查看本地所有分支 $ git checkout <Name> # 切換到指定分支 $ git checkout -b <Name> # 建立且切換到建立的分支 $ git branch -d <name> # 刪除指定分支 |
接下來可能會遇到當 fork 的專案,落後於 PyCon 的主專案時 (如下紅框框):

可以將使用 merge 讓本地的專案更新,讓兩邊版本保持一致:
1 2 3 4 5 |
$ git remote add upstream git@github.com:pycontw/pycon.tw.git $ git fetch upstream $ git checkout master $ git merge upstream/master $ git push origin master |
三. 當任務完成,Push 前要留意的事
如果有改到 model 的東西,記得要重新 migrate 一次 (關於 migrate 可參考這篇官方文件)
1 2 |
$ python3 manage.py makemigrations $ python3 manage.py migrate |
如果有修改到 i18n 的東西,記得需要跑 compilemessages (關於 i18n 可參考這篇官方文件)
1 |
$ python3 manage.py compilemessages |
push 之前跑跑測試,看看有沒有遇到什麼問題!
1 2 |
$ cd src $ pytest -n 2 --cov=. |
都正常的話,就可以 push 了
1 |
$ git push |
四. 發 Pull Requests
在自己的專案中,選擇 New pull request

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

確認都沒問題,就可以點擊 create pull request,接下來就是針對這次的任務進行描述,主要的描述重點可以分成以下六項:
- Types of changes
- Description
- Steps to Test This Pull Request
- Expected behavior
- Related Issue
- More Information

最後就完成 PR 囉,接下來等待大家的 review 和建議就可以了~
經過大家的 review 過後,如果有需要修改的部分,只需要重新 push 一次,PR 就會自動更新囉!
感謝您收看「參與 PyCon TW 開源社群 Web Squad 的 – 入門指南」,任何問題都很歡迎透過以下私訊,我會盡快回覆您。