概述
php开发效率高,很多公司都会采用PHP Composer来管理依赖,JFrog Artifactory是全球唯一一款全语言制品仓库,默认也支持Composer仓库,这篇文章介绍如何使用Artifactory PHP Composer 仓库来管理PHP依赖。
PHP Composer
PHP Composer是PHP依赖的管理工具,我们通过该工具与Artifactory PHP Composer仓库交互。Artifactory会按需下载PHP依赖包并缓存,客户端获得依赖后将代码打包,最终的制品通过Artifactory进行存储和分发。
Composer安装很简单,参考这里即可,这里不再赘述。
安装好之后,我们需要配置~/.composer/config.json, 内容大致如下:
{
"repositories": [{
"type": "composer",
"url": "http://{ARTI-HOST}/artifactory/api/composer/php-local"
},
{
"packagist": false
}
]
}
如果想使用http协议,需要增加如下配置:
"config": {
"secure-http" : false
}
接下来是配置认证,增加auth.json,内容如下:
{
"http-basic": {
"xxx.xxx.xxx": {
"username": "<USERNAME>",
"password": "<PASSWORD>"
}
}
}
创建Hello-world程序
可以试用init
命令来创建
php /usr/local/bin/composer init
这时候会生成composer.json,内容如下:
{
"name": "root/php-demo",
"type": "project",
"authors": [
{
"name": "John Smith",
"email": "john@example.com"
}
],
"require": {
"monolog/monolog": "1.0.*"
}
}
注意: 我们在这里加入了我们自己的依赖monolog/monolog:1.0.*,通过如下方式下载依赖
# /usr/local/bin/composer install --prefer-dist
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Package operations: 1 install, 0 updates, 0 removals
- Installing monolog/monolog (1.0.2): Loading from cache
Generating autoload files
#
打包及上传
hello-world.php 代码如下:
<!DOCTYPE html>
<html>
<head>
<title>PHP Site</title>
</head>
<body>
<p>
<?php
require 'vendor/autoload.php';
echo "Hello World!";
?>
</p>
</body>
</html>
下载依赖之后,我们可以手动通过php内部的web server来进行测试:
# php -S 0.0.0.0:8000 -t .
PHP 5.4.16 Development Server started at Fri Sep 7 17:20:20 2018
Listening on http://0.0.0.0:8000
Document root is /root/php-demo
Press Ctrl-C to quit.
启动另外一个console
# curl -i -k localhost:8000/hello-world.php
HTTP/1.1 200 OK
Host: localhost:8000
Connection: close
Content-type: text/html
<!DOCTYPE html>
<html>
<head>
<title>PHP Site</title>
</head>
<body>
<p>
Hello World! </p>
</body>
</html>
测试通过后打包,然后上传到Artifactory本地仓库:
# tar -zcvf php-demo.tar.gz php-demo
调用Artifactory REST API即可上传至本地仓库,如php-local。
自动化流水线
可以写一个自动化的作业来完成所有手动工作:
node {
stage('SCM') {
git([url: 'https://gitlab.com/php-demo.git', branch: 'master', credentialsId: 'jenkins-gitlab'])
}
stage('dependency') {
sh 'cd ${WORKSPACE} && php /usr/local/bin/composer install'
}
stage('package') {
sh 'cd ../ && tar -zcvf php-demo-${BUILD_ID}.tar.gz php-pipeline-demo'
}
stage('upload') {
sh 'echo $(pwd)'
sh 'cd ../ && curl -X PUT http://{ARTI-HOST}/artifactory/php-local/${BUILD_ID}/php-demo-${BUILD_ID}.tar.gz -uadmin:{API-KEY} -T php-demo-${BUILD_ID}.tar.gz'
}
stage('clean') {
sh 'rm -f /root/.jenkins/workspace/php-demo-${BUILD_ID}.tar.gz'
}
}
我们可以在Artifactory上查看到结果:
总结
PHP 不需要编译,但是依赖管理和打包后的制品管理依然会面临较严重的挑战,JFrog Artifactory可以很好地支持依赖管理和产出物管理,结合Jenkins流水线可以很好地实现持续交付。
最后
以上就是从容小蝴蝶为你收集整理的Artifactory PHP Composer仓库应用实践的全部内容,希望文章能够帮你解决Artifactory PHP Composer仓库应用实践所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复