摘要:說(shuō)明服務(wù)器環(huán)境代碼管理平臺(tái)碼云文章中盡量以一個(gè)真實(shí)的情況來(lái)撰寫,但是文章的倉(cāng)庫(kù)地址,網(wǎng)頁(yè)地址均是不可訪問(wèn)的,用虛擬信息替換了真實(shí)信息。比如碼云,是收費(fèi)的,對(duì)于一個(gè)公司來(lái)說(shuō)費(fèi)用不高,但是加上以上兩點(diǎn)原因后,所以未選擇。
簡(jiǎn)述
iBrand 產(chǎn)品立項(xiàng)時(shí)是商業(yè)性質(zhì)的項(xiàng)目,但是在搭建架構(gòu)時(shí)考慮后續(xù)的通用性,因此每個(gè)模塊都設(shè)計(jì)成一個(gè) Package,作為公司內(nèi)部用,因此這些包并不能提交到 packagist.org 上去。 所以就想是否能夠搭建私有的包倉(cāng)庫(kù),實(shí)現(xiàn)一個(gè)私有的 packagist 。
仔細(xì)翻閱 Composer 文檔,發(fā)現(xiàn)官方有相應(yīng)的解決方案:Handling private packages
這里推薦使用 Satis ,也正是我們目前使用的方案,目前運(yùn)行一切良好。
Satis 是一個(gè)靜態(tài)的 composer 資源庫(kù)生成器。它像是一個(gè)超輕量級(jí)的、基于靜態(tài)文件的 packagist 版本。說(shuō)明你給它一個(gè)包含 composer.json 的存儲(chǔ)庫(kù),定義好 VCS 和 資源庫(kù)。它會(huì)獲取所有你列出的包,并打印 packages.json 文件,作為 composer 類型的資源庫(kù)。
服務(wù)器環(huán)境:
centos7.2
nginx
php7.1
代碼管理平臺(tái):碼云
文章中盡量以一個(gè)真實(shí)的情況來(lái)撰寫,但是文章的倉(cāng)庫(kù)地址,網(wǎng)頁(yè)地址均是不可訪問(wèn)的,用虛擬信息替換了真實(shí)信息。
Create Private Git Project既然為公司內(nèi)部項(xiàng)目源碼是不公開(kāi)的,我們選擇了碼云,未選擇 github,主要有兩個(gè)原因:
github 因?yàn)槭菄?guó)外服務(wù)器,國(guó)內(nèi)偶爾會(huì)抽風(fēng)。
國(guó)內(nèi)也有比較優(yōu)秀的 git 代碼托管平臺(tái),免費(fèi)支持 Private Project。比如:碼云,Coding
github private project 是收費(fèi)的,對(duì)于一個(gè)公司來(lái)說(shuō)費(fèi)用不高,但是加上以上兩點(diǎn)原因后,所以未選擇。
假設(shè)我們已經(jīng)在碼云上建立好了私有項(xiàng)目,并且已經(jīng)編寫好了所有的代碼和單元測(cè)試。
ssh 地址: [email protected]: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": "[email protected]" } ], "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": "[email protected]: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:倉(cāng)庫(kù)名稱,可以隨意定義
homepage:倉(cāng)庫(kù)主頁(yè)地址
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在進(jìn)行 Build 前,我們需要解決代碼權(quán)限問(wèn)題,因?yàn)榍懊娴捻?xiàng)目源碼是私有的,所以服務(wù)器上需要有讀取源碼的權(quán)限,依然以碼云舉例:
生成ssh公鑰
你可以按如下命令來(lái)生成 sshkey:
$ ssh-keygen -t rsa -C "[email protected]" # 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í)行后會(huì)在 /data/www/company-private-composer/public 生成倉(cāng)庫(kù)列表
Setup Nginx上一步已經(jīng)生成了倉(cāng)庫(kù)列表,為了保證可訪問(wèn)需要通過(guò) 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 ,然后就可以通過(guò)訪問(wèn) http://packagist.iBrand.com 看到自己的倉(cāng)庫(kù)列表,如下圖:
Usage接下來(lái)就可以在項(xiàng)目中使用這個(gè)私有的 Composer 包倉(cāng)庫(kù)。
添加如下配置到項(xiàng)目中的 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ù)
實(shí)現(xiàn) webhooks 源碼更新時(shí)自動(dòng) Build
參考資料Handling private packages
Hosting your own package
使用私有資源庫(kù)
討論交流文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/28253.html
摘要:此時(shí)我們就需要一個(gè)工具,能夠搭建私有源,里面都是私有倉(cāng)庫(kù),對(duì)內(nèi)不對(duì)外。就是官方提供的建立私有源的工具。在其它項(xiàng)目中使用私有源只需要在項(xiàng)目的文件的根上添加倉(cāng)庫(kù)地址之后再通過(guò)或者想要的倉(cāng)庫(kù)就可以了。 現(xiàn)在我們常用 Composer 進(jìn)行依賴管理。和其它語(yǔ)言的包管理工具一樣,Composer 使用 GitHub 托管代碼,可以根據(jù)配置文件管理依賴,也可以建立各種腳本,執(zhí)行特定任務(wù)。總之好處很...
摘要:安裝包添加配置文件添加類似如下內(nèi)容配置文件詳解倉(cāng)庫(kù)名字主頁(yè)地址包所在地址指定獲取哪些包及對(duì)應(yīng)的版本,獲取所有包使用,與包中中的名稱相同,不同會(huì)出現(xiàn)問(wèn)題必需要的,表示生成的壓縮包存放的目錄,會(huì)在時(shí)的目錄中壓縮包格式默認(rèn)和 安裝satis包 cd /home/wwwroot/ composer create-project composer/satis --stability=dev -...
摘要:如果需要定時(shí)更新,則需要配置定時(shí)任務(wù)去定時(shí)更新設(shè)置本地倉(cāng)庫(kù)設(shè)置虛擬主機(jī)使用本地倉(cāng)庫(kù)中的包文件中添加以下拉取,即可獲取本地庫(kù)了如果本地倉(cāng)庫(kù)不存在且有網(wǎng)絡(luò)會(huì)去網(wǎng)絡(luò)中獲取。 環(huán)境 windows nginx php composer 安裝 拉取 satis 項(xiàng)目包,并拉取項(xiàng)目依賴 composer create-project composer/satis --stability=de...
摘要:假設(shè)同一個(gè)包有多個(gè)開(kāi)發(fā)人員則將其他人員設(shè)置為組成員,在同一臺(tái)跳板機(jī)上部署項(xiàng)目,并且設(shè)置項(xiàng)目的為。這樣在開(kāi)發(fā)環(huán)境中通過(guò)登陸來(lái)判斷權(quán)限。在跳板機(jī)上則通過(guò)添加該機(jī)器的公鑰到來(lái)判斷權(quán)限這樣就算其他人有倉(cāng)庫(kù)地址也不能拉到代碼,目的基本達(dá)成。 建立目的 為了不讓代碼公開(kāi),能夠讓項(xiàng)目基于gitlab快速自動(dòng)化部署,簡(jiǎn)化單個(gè)composer.json文件配置內(nèi)容 安裝 使用composer compo...
摘要:曾今誰(shuí)都有過(guò)迷茫期,下面是我開(kāi)始開(kāi)發(fā)中,不斷改變的代碼組織方式。 曾今 誰(shuí)都有過(guò)迷茫期,下面是我開(kāi)始PHP開(kāi)發(fā)中,不斷改變的代碼組織方式。 初期:所有代碼一股腦控制器controller 曾今只是簡(jiǎn)單的理解MVC 中期:業(yè)務(wù)代碼抽象一部分到模型層model 開(kāi)始覺(jué)得model層是否該做點(diǎn)什么了 后期:業(yè)務(wù)代碼控制器,模型層只寫db的curd方法 復(fù)雜的業(yè)務(wù)代碼使contro...
閱讀 1602·2021-11-16 11:44
閱讀 7504·2021-09-22 15:00
閱讀 4539·2021-09-02 10:20
閱讀 1974·2021-08-27 16:20
閱讀 2404·2019-08-26 14:00
閱讀 2917·2019-08-26 11:44
閱讀 1650·2019-08-23 18:33
閱讀 1882·2019-08-22 17:28