制作composer包

请先自行制作composer包

代码上传到gitlab

将composer代码上传到gitlab

我这边是采用ci/cd的方式进行composer提交的

.gitlab-ci.yml

publish:
  tags: 
    - public
  image: curlimages/curl:latest
  stage: build
  variables:
    URL: "$CI_SERVER_PROTOCOL://$CI_SERVER_HOST:$CI_SERVER_PORT/api/v4/projects/$CI_PROJECT_ID/packages/composer?job_token=$CI_JOB_TOKEN"
  script:
    - version=$([[ -z "$CI_COMMIT_TAG" ]] && echo "branch=$CI_COMMIT_REF_NAME" || echo "tag=$CI_COMMIT_TAG")
    - insecure=$([ "$CI_SERVER_PROTOCOL" = "http" ] && echo "--insecure" || echo "")
    - response=$(curl -s -w "\n%{http_code}" $insecure --data $version $URL)
    - code=$(echo "$response" | tail -n 1)
    - body=$(echo "$response" | head -n 1)
    # Output state information
    - if [ $code -eq 201 ]; then
        echo "Package created - Code $code - $body";
      else
        echo "Could not create package - Code $code - $body";
        exit 1;
      fi

由于目前是master分支,所以版本会变成deve-master

如果想发布其他版本,则新建tag,格式为v+0.0.0,例如v1.0.0,ci会就自动发布一个v1.0.0的包了

在本地项目安装

准备认证文件

你的gitlab域名
<personal_access_token> 你的access_toekn
生成personal_access_token
在gitlab的对应的项目里找到访问令牌,生成一个只有read_api权限的token即可

你的本地项目里面

composer config gitlab-token.<DOMAIN-NAME> <personal_access_token>

在你的composer.json 同目录下会生成auth.json,请不要上传该文件到git

config gitlab-domains <DOMAIN-NAME>

//以下代码是在gitlab对应的包里自动生成

composer config repositories.gitlab.xxx.com/29 '{"type": "composer", "url": "https://gitlab.xxx.com/api/v4/group/29/-/packages/composer/packages.json"}'
composer req yuncaiinc/icanalysis:dev-master

如果在安装提示你的composer url 是404,有可能是由于认证不成功导致,对的,你没有看错,认证错误是返回404,当初被坑了很久