Github 十大最佳實踐
1、保護主分支不受直接提交的影響
主分支中的任何一次提交都應該是可以直接部署的,所以永遠不要直接提交預設分支,同時也是 Gitflow workflow 成為標準的原因。使用分支保護可以幫你防止直接提交,當然,所有的事情都應該使用pull requests
來管理。
2、避免基礎資訊的混亂
或許你在一個新的環境工作,或者你並沒有注意到自己的 git 配置是不正確的,因此提交程式碼時伴隨著錯誤的郵箱地址。如果提交沒有關聯到正確的使用者資訊,那將導致無法追溯到是誰寫的程式碼。
保證你的 git 客戶端配置是正確的郵箱地址,並且關聯到你的 github 賬戶。評審程式碼時注意檢查你的pull requests
是否存在無法識別的提交。
3、為每個倉庫定義 CODEOWNERS
使用 CODEOWNERS 功能可以定義哪些團隊和人員被自動選為倉庫的審閱者。此功能會自動請求倉庫所有者進行稽核。如今。組織擁有很多的倉庫,而 CODEOWNERS 可以選擇定義組織中的維護者。
4、從原始碼中分離出祕密憑證
在構建雲原生程式時,我們保護了許多的機密資訊,比如賬戶密碼、API 祕鑰、私人令牌、SSH 祕鑰等。絕對不要將任何機密資訊提交到你的程式碼中,而應該採用從安全儲存外部注入的環境變數。
你可以使用 Vault、AWS Secrets Manager 之類的工具來管理產品中的機密資訊。
有很多超棒的工具可以識別程式碼中的機密資訊,例如 Git-secrets 可以幫助你識別程式碼中的密碼;使用 Git Hooks 可以構建一個預提交鉤子,並檢查每個pull requests
中的機密資訊。
5、不要提交專案的依賴
將專案的依賴提交到倉庫中會增加倉庫的大小。應該將你專案的所有依賴都從倉庫中移除,讓你的包管理器負責去下載它們。如果你擔心“依賴可用性”,可以考慮使用 Jfrog 或 Nexus Repository 這樣的二進位制儲存庫管理器。
6、從原始碼中分離配置檔案
建議不要將本地配置檔案提交到版本控制器,通常這些都是你不想推送到遠端的私有配置檔案,因為它們包含機密資訊。個人的偏好,歷史資訊等應該儲存在本地環境中。
7、為專案建立一個有意義的 .gitignore 檔案
每個倉庫都必須使用.gitignore
檔案來忽略預定義的檔案和目錄,它可以幫助你保護程式碼中的機密資訊、依賴項和其他可能的差異。你可以從 Gitignore.io 選擇相關的模板。
8、將死庫歸檔
隨著時間的推移,由於各種原因,我們發現自已擁有不再維護的倉庫。或許你為一個臨時用例新建了倉庫,或者有一些包含舊的和不相關程式碼的倉庫。它們存在的問題是相同的,這些倉庫在達到其目的之後不在被積極的維護開發,因此你不希望再維護它們或不希望其他人依賴/使用它們,最好的方式是將這些倉庫歸檔,這樣對每個人都是“只讀”的。
9、鎖定依賴包的版本
你的依賴配置檔案中包含所有軟體包版本的資訊,以便在每次安裝應用程式時,在不破壞程式碼的前提下保持一致的結果。最好的方式是使用配置鎖定檔案來避免差異,並確定每次都獲得相同的軟體包版本。
10、對齊包版本
雖然你使用的是相同的軟體包,但是不同的版本會使得在不同專案中重用程式碼和測試變得困難。
如果你有一個在多個專案中使用的包,請至少嘗試在不同的倉庫中使用相同的主要版本。
原文連結:https://datree.io/blog/top-10-github-best-practices/
相關文章
- 使用GitHub的十個最佳實踐Github
- Apache Kafka最佳化部署的十大最佳實踐ApacheKafka
- GitHub 熱點速覽 Vol.23:前後端最佳實踐Github後端
- Github Action Workflow 實踐Github
- JavaScript 最佳實踐JavaScript
- JDBC 最佳實踐JDBC
- Kafka最佳實踐Kafka
- Java最佳實踐Java
- Serilog 最佳實踐
- Flutter 最佳實踐Flutter
- springDataJpa 最佳實踐Spring
- Gradle最佳實踐Gradle
- MongoDB 最佳實踐MongoDB
- Iptables 最佳實踐 !
- AutoMapper 最佳實踐APP
- 《.NET最佳實踐》
- Django 最佳實踐Django
- metaq最佳實踐
- KeyPath 最佳實踐
- Pika最佳實踐
- SnapKit 最佳實踐APK
- GitHub Actions 入門實踐Github
- Code Review最佳實踐View
- 日誌最佳實踐
- Kubernetes Deployment 最佳實踐
- restful api最佳實踐RESTAPI
- Dockerfile 安全最佳實踐Docker
- 冪等最佳實踐
- MongoDB最佳安全實踐MongoDB
- RocketMQ的最佳實踐MQ
- DHCP最佳實踐(三)
- flutter + getx 最佳實踐Flutter
- DHCP最佳實踐(一)
- DHCP最佳實踐(二)
- 【譯】VueJS 最佳實踐VueJS
- App瘦身最佳實踐APP
- Android MVP 最佳實踐AndroidMVP
- OpenResty 最佳實踐 (1)REST