关注世界领先 DevOps 平台 JFrog
PHP 开发效率高,很多公司都会采用 PHP Composer 来管理依赖,JFrog Artifactory 是全球唯一一款全语言制品仓库,默认也支持 Composer 仓库,这篇文章介绍如何使用 Artifactory PHP Composer 仓库来管理 PHP 依赖。
PHP Composer
PHP Composer 是 PHP 依赖的管理工具,我们通过该工具与 Artifactory PHP Composer 仓库交互。Artifactory 会按需下载 PHP 依赖包并缓存,客户端获得依赖后将代码打包,最终的制品通过 Artifactory 进行存储和分发。
Composer 安装很简单,参考 https://getcomposer.org/download/ 即可,这里不再赘述。
安装好之后,我们需要配置~/.composer/config.json, 内容大致如下:
![ede1cf3dd5c0d9527241502e9cb06e56.png](https://i-blog.csdnimg.cn/blog_migrate/4e4e8815fd4ee5fd3c21f4bc322adbc0.png)
如果想使用 http 协议,需要增加如下配置:
![2c26b7a68da53b679c1e9e7c50d70636.png](https://i-blog.csdnimg.cn/blog_migrate/32188bd24f31eee2c774ee541939e413.png)
接下来是配置认证,增加 auth.json,内容如下:
![c73d34552024f3d4071e4a5e3bd9dd7b.png](https://i-blog.csdnimg.cn/blog_migrate/f35c223d035fd9098808758e08af5886.png)
创建 Hello-world 程序
可以试用 init 命令来创建
![301ecca4331c1697edb7299994fb3518.png](https://i-blog.csdnimg.cn/blog_migrate/cf7d10aebfdd0ded8c68f3c2915ffed0.png)
这时候会生成 composer.json, 内容如下:
![fd37c1230716dfdf6c4575e8e548f85b.png](https://i-blog.csdnimg.cn/blog_migrate/719069578b31a6ae7b30e6402f2e3831.png)
注意: 我们在这里加入了我们自己的依赖 monolog/monolog:1.0.*, 通过如下方式下载依赖
![df4598994af89470da085b929d4fb8ff.png](https://i-blog.csdnimg.cn/blog_migrate/657982da8138e499d02f3f31c7c50c1b.jpeg)
打包及上传
hello-world.php 代码如下:
![98fbc94aa3892f40ccfc9920f38262d3.png](https://i-blog.csdnimg.cn/blog_migrate/080a8f677d4c6d0a67b431e7c68ffbbb.png)
下载依赖之后,我们可以手动通过 php 内部的 web server 来进行测试:
![9fbca9caa7409a73ddd2d9dae0f59fdf.png](https://i-blog.csdnimg.cn/blog_migrate/c88483f38900075b7b432cddecf78027.png)
启动另外一个 console
![d27c8e040cc59d5084c3981992f2426d.png](https://i-blog.csdnimg.cn/blog_migrate/251dacdc7b4da9ccaf68fe5e3d836f49.jpeg)
测试通过后打包,然后上传到 Artifactory 本地仓库:
![056bfedaa6fe687b026f8fcc122b119a.png](https://i-blog.csdnimg.cn/blog_migrate/0baa08691ea738f983b106cfd1b2d61a.png)
调用 Artifactory REST API 即可上传至本地仓库,如 php-local。
自动化流水线
可以写一个自动化的作业来完成所有手动工作:
![cf2cac75dc151a78f2a655ee550ca814.png](https://i-blog.csdnimg.cn/blog_migrate/4bdf2f886b12ef3cb4f5feab6d0828bd.jpeg)
![07a042d39914337e60ca85f4397677b4.png](https://i-blog.csdnimg.cn/blog_migrate/ddbac9fea3540b3e7b9b3dfd8a1a44f9.jpeg)
我们可以在 Artifactory 上查看到结果:
![a8bf1dcb5abaa57195098c7de9f861d3.png](https://i-blog.csdnimg.cn/blog_migrate/bae58d4a18ebc684d4a58ef74e28af2c.jpeg)
总结
PHP 不需要编译,但是依赖管理和打包后的制品管理依然会面临较严重的挑战,JFrog Artifactory 可以很好地支持依赖管理和产出物管理,结合 Jenkins 流水线可以很好地实现持续交付。
在随后的文章中将介绍如何优化提升,特性列表,发布升级,以及源码参考。
![0c5f3ad21513d2104f68c113ff29847e.png](https://i-blog.csdnimg.cn/blog_migrate/3ee45e86551bc8944713e3d74f894c4f.jpeg)
![fd733a96a3b7726e71355d1d0cce7cc8.png](https://i-blog.csdnimg.cn/blog_migrate/3990bc21d3669fbc14bc989a4beac78c.jpeg)
联系我们:info@jfrogchina.com
![716baa923b11c2c8333b332506980f5d.gif](https://i-blog.csdnimg.cn/blog_migrate/643c1879acefe8e6dbbba9e8014a7b0d.gif)