当前位置: 首页 > 工具软件 > Satis > 使用案例 >

使用satis创建Composer私有库

井修雅
2023-12-01

介绍

Satis 是一个静态的 composer 资源库生成器。它像是一个超轻量级的、基于静态文件的 packagist 版本。你给它一个包含 composer.json 的存储库,定义好 VCS 和 资源库。它会获取所有你列出的包,并打印 packages.json 文件,作为 composer 类型的资源库。

目的

为了不让代码公开,能够让项目基于gitlab快速自动化部署,简化单个composer.json文件配置内容

前提

第一种方法:使用Composer搭建

  • 1、安装satis
composer create-project composer/satis my-satis --stability=dev --keep-vcs
  • 2、编写配置代码
cd my-satis
vim satis.json    // 配置文件需要手动创建

// 配置文件内容
{
    "name": "My Repository",
    "homepage": "http://domain.com/my-satis/public/",
    "repositories": [
        {
            "type": "vcs", 
            "url": "https://github.com/xxx/satis_demo.git",
            "options": {
                "ssh2": {
                    "username": "xxx",
                    "pubkey_file": "/root/.ssh/id_rsa.pub",
                    "privkey_file": "/root/.ssh/id_rsa"
                }
            }
        }
    ],
    "require":{
        "satis_demo/helloworld":"*"
    },
    "archive":{
        "directory":"dist",
        "format":"tar",
        "prefix-url":"http://domain.com/my-satis/public/",
        "skip-dev":true
    }
    "require-dependencies": true
}

// 配置文件说明
name:仓库的名字,可以随便定义
homepage:仓库建立之后的的主页地址
repositories:指定去哪获取包(使用composer 自动加载项目的地址)
require:具体的包的名称,后面的版本号实际就是git里的tag 。也可以直接使用 require-all:true 的配置获取全部

option:使用options参数来指定服务器的连接选项。
保护私有存储库,可以使用客户端证书通过SSH或SSL进行托管

archive:下载远端项目到本地存储,会自动生成tar包保存在dist里,可以加快后续composer的速度
  directory: 表示生成的压缩包存放的目录,会在我们build时的目录中
  format: 压缩包格式, zip(默认) tar
  prefix-url: 下载链接的前缀的Url,默认会从homepage中取
  skip-dev: 默认为假,是否跳过开发分支
  absolute-directory 可选的,存放dist文件的本地绝对目录,而不是output-dir/directory
  whitelist 可选的,如果设置为一些包名的列表,则只会下载这些包的文件
  blacklist 可选的,如果设置为一些包名的列表,则不会下载这些包的文件
  checksum 可选的,默认是true,设置为false时,satis不会检测dist文件的sha1 checksum值

require-dependencies:添加依赖
  • 3、生成仓库目录

在项目根目录下执行如下命令,将会生成静态的仓库目录public/。添加–no-interaction选项,使build命令使用公钥进行授权验证,而不是交互式的询问用户名密码。

php bin/satis build satis.json public/
  • 4、Web站点搭建

使用 apache/nginx 或 php -S 命令创建 WEB 站点,文档根目录指向 satis/public 目录。
- 5、使用私有仓库

在项目中的composer.json中添加如下
"repositories":[
        {
            "type":"composer",
            "url":"http://domain.com/my-satis/public/"
        }
    ],
    "config": {
        "secure-http": false
    },
    "require":{
        "satis_demo/helloworld":"*"
    }

repositories是为了告诉composer镜像源不仅仅只有packagist.org,还包括了刚刚我们设置的私有镜像
secure-http设置为false是因为satis默认为https

然后执行composer install 或者 composer update
  • 6、删除仓库目录
php bin/satis purge satis.json public/

第二种方法:使用docker搭建

  • 拉镜像
docker pull composer/satis
  • 运行镜像
docker run --rm -it -v /build:/build composer/satis
 类似资料: