摘要:說明服務(wù)器環(huán)境代碼管理平臺碼云文章中盡量以一個真實的情況來撰寫,但是文章的倉庫地址,網(wǎng)頁地址均是不可訪問的,用虛擬信息替換了真實信息。比如碼云,是收費的,對于一個公司來說費用不高,但是加上以上兩點原因后,所以未選擇。
簡述
iBrand 產(chǎn)品立項時是商業(yè)性質(zhì)的項目,但是在搭建架構(gòu)時考慮后續(xù)的通用性,因此每個模塊都設(shè)計成一個 Package,作為公司內(nèi)部用,因此這些包并不能提交到 packagist.org 上去。 所以就想是否能夠搭建私有的包倉庫,實現(xiàn)一個私有的 packagist 。
仔細翻閱 Composer 文檔,發(fā)現(xiàn)官方有相應(yīng)的解決方案:Handling private packages
這里推薦使用 Satis ,也正是我們目前使用的方案,目前運行一切良好。
Satis 是一個靜態(tài)的 composer 資源庫生成器。它像是一個超輕量級的、基于靜態(tài)文件的 packagist 版本。說明你給它一個包含 composer.json 的存儲庫,定義好 VCS 和 資源庫。它會獲取所有你列出的包,并打印 packages.json 文件,作為 composer 類型的資源庫。
服務(wù)器環(huán)境:
centos7.2
nginx
php7.1
代碼管理平臺:碼云
文章中盡量以一個真實的情況來撰寫,但是文章的倉庫地址,網(wǎng)頁地址均是不可訪問的,用虛擬信息替換了真實信息。
Create Private Git Project既然為公司內(nèi)部項目源碼是不公開的,我們選擇了碼云,未選擇 github,主要有兩個原因:
github 因為是國外服務(wù)器,國內(nèi)偶爾會抽風。
國內(nèi)也有比較優(yōu)秀的 git 代碼托管平臺,免費支持 Private Project。比如:碼云,Coding
github private project 是收費的,對于一個公司來說費用不高,但是加上以上兩點原因后,所以未選擇。
假設(shè)我們已經(jīng)在碼云上建立好了私有項目,并且已經(jīng)編寫好了所有的代碼和單元測試。
ssh 地址: git@gitee.com:iBrand/test-private-composer.git
composer.json
{ "name": "iBrand/test-private-composer", "type": "library", "description": "iBrand test private composer", "keywords": [ "iBrand crop", "private composer", ], "license": "MIT", "authors": [ { "name": "shjchen", "email": "ibrand.shjchen@foxmail.com" } ], "require": { "php": "^5.6|^7.0", }, "autoload": { "psr-4": { "iBrandPrviateComposer": "src/" } }, "minimum-stability": "dev", "prefer-stable": true }Create Satis Server Install
$ cd /data/www/ $ composer create-project composer/satis company-private-composer --stability=dev --keep-vcsSetup
$ cd /data/www/company-private-composer $ vi satis.json
{ "name": "iBrand Private Composer Repository", "homepage": "http://packagist.iBrand.com", "repositories": [ { "type": "vcs", "url": "git@gitee.com:iBrand/test-private-composer.git" } // more vcs url. ], "require": { "ibrand/test-private-composer": "*", // you more package. }, "archive": { "directory": "dist", "format": "tar", "prefix-url": "http://packagist.iBrand.com" } }
解釋下 satis.json 配置文件
name:倉庫名稱,可以隨意定義
homepage:倉庫主頁地址
repositories:指定包源
require:指定包源版本,* 代碼編譯所有版本,如果想獲取所有包,使用 require-all: true,
directory: required, the location of the dist files (inside the output-dir)
format: optional, zip (default) or tar
prefix-url: optional, location of the downloads, homepage (from satis.json) followed by directory by default
Authentication在進行 Build 前,我們需要解決代碼權(quán)限問題,因為前面的項目源碼是私有的,所以服務(wù)器上需要有讀取源碼的權(quán)限,依然以碼云舉例:
生成ssh公鑰
你可以按如下命令來生成 sshkey:
$ ssh-keygen -t rsa -C "xxxxx@xxxxx.com" # Generating public/private rsa key pair... # 三次回車即可生成 ssh key
查看你的 public key,并把他添加到碼云(Gitee.com) SSH key添加地址:https://gitee.com/profile/ssh...
$ cat ~/.ssh/id_rsa.pub # ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....Build
php bin/satis build satis.json public/
執(zhí)行后會在 /data/www/company-private-composer/public 生成倉庫列表
Setup Nginx上一步已經(jīng)生成了倉庫列表,為了保證可訪問需要通過 nginx or apache 把服務(wù)暴露出去,我們使用的是 nginx ,因此以 nginx 舉例。
server { listen 80; server_name packagist.iBrand.com; root /data/www/company-private-composer/public; index index.php index.html; access_log /data/logs/packages-access.log; error_log /data/logs/packages-error.log error; rewrite_log on; location ~* .php$ { include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; } location = /favicon.ico { log_not_found off; access_log off; } }
配置好后需要執(zhí)行 service nginx reload ,然后就可以通過訪問 http://packagist.iBrand.com 看到自己的倉庫列表,如下圖:
Usage接下來就可以在項目中使用這個私有的 Composer 包倉庫。
添加如下配置到項目中的 composer.json 文件中
"require": { "iBrand/test-private-composer": "~1.0" } "config": { "preferred-install": "dist", "secure-http": false }, "repositories": [ { "type": "composer", "url": "http://packagist.iBrand.com/" } ]待續(xù)
實現(xiàn) webhooks 源碼更新時自動 Build
參考資料Handling private packages
Hosting your own package
使用私有資源庫
討論交流文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/28253.html
摘要:此時我們就需要一個工具,能夠搭建私有源,里面都是私有倉庫,對內(nèi)不對外。就是官方提供的建立私有源的工具。在其它項目中使用私有源只需要在項目的文件的根上添加倉庫地址之后再通過或者想要的倉庫就可以了。 現(xiàn)在我們常用 Composer 進行依賴管理。和其它語言的包管理工具一樣,Composer 使用 GitHub 托管代碼,可以根據(jù)配置文件管理依賴,也可以建立各種腳本,執(zhí)行特定任務(wù)。總之好處很...
摘要:安裝包添加配置文件添加類似如下內(nèi)容配置文件詳解倉庫名字主頁地址包所在地址指定獲取哪些包及對應(yīng)的版本,獲取所有包使用,與包中中的名稱相同,不同會出現(xiàn)問題必需要的,表示生成的壓縮包存放的目錄,會在時的目錄中壓縮包格式默認和 安裝satis包 cd /home/wwwroot/ composer create-project composer/satis --stability=dev -...
摘要:如果需要定時更新,則需要配置定時任務(wù)去定時更新設(shè)置本地倉庫設(shè)置虛擬主機使用本地倉庫中的包文件中添加以下拉取,即可獲取本地庫了如果本地倉庫不存在且有網(wǎng)絡(luò)會去網(wǎng)絡(luò)中獲取。 環(huán)境 windows nginx php composer 安裝 拉取 satis 項目包,并拉取項目依賴 composer create-project composer/satis --stability=de...
摘要:假設(shè)同一個包有多個開發(fā)人員則將其他人員設(shè)置為組成員,在同一臺跳板機上部署項目,并且設(shè)置項目的為。這樣在開發(fā)環(huán)境中通過登陸來判斷權(quán)限。在跳板機上則通過添加該機器的公鑰到來判斷權(quán)限這樣就算其他人有倉庫地址也不能拉到代碼,目的基本達成。 建立目的 為了不讓代碼公開,能夠讓項目基于gitlab快速自動化部署,簡化單個composer.json文件配置內(nèi)容 安裝 使用composer compo...
摘要:曾今誰都有過迷茫期,下面是我開始開發(fā)中,不斷改變的代碼組織方式。 曾今 誰都有過迷茫期,下面是我開始PHP開發(fā)中,不斷改變的代碼組織方式。 初期:所有代碼一股腦控制器controller 曾今只是簡單的理解MVC 中期:業(yè)務(wù)代碼抽象一部分到模型層model 開始覺得model層是否該做點什么了 后期:業(yè)務(wù)代碼控制器,模型層只寫db的curd方法 復(fù)雜的業(yè)務(wù)代碼使contro...
閱讀 1590·2021-11-16 11:44
閱讀 7468·2021-09-22 15:00
閱讀 4484·2021-09-02 10:20
閱讀 1949·2021-08-27 16:20
閱讀 2391·2019-08-26 14:00
閱讀 2910·2019-08-26 11:44
閱讀 1641·2019-08-23 18:33
閱讀 1859·2019-08-22 17:28