[英]gitlab - ci for composer package
我在我的家庭辦公室中設置了一個開發服務器,並通過 docker-compose 安裝了 gitlab。 到目前為止一切正常,我可以登錄,推送提交等等。
現在我想設置一個 CI 管道來在推送新標簽時構建作曲家包。 所以我點擊了 CI/CD 按鈕並從作曲家模板中添加了 .gitlab-ci.yml 文件。 但管道只是懸而未決。 所以我想我可能需要先注冊一個跑步者。
我在通過 docker 運行 gitlab 的同一台機器上安裝了 gitlab-runner (通過 apt),並使用 ZD0498FAC9D755142B3DFD9F05281701ZF 給出的域和密鑰注冊了跑步者。 我選擇了 docker 作為執行者,給它起了一個名字,並將其他所有內容都保留為默認值。
跑步者在 gitlab 中正確注冊並且 ci 管道現在正在工作,但它總是失敗。
我唯一的 output 是:
Running with gitlab-runner 11.2.0 (11.2.0)
on **************
Using Docker executor with image curlimages/curl:latest ...
Pulling docker image gitlab-runner-helper:11.2.0 ...
gitlab-ci 文件的內容為:
# This file is a template, and might need editing before it works on your project.
# Publishes a tag/branch to Composer Packages of the current project
publish:
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
因為我沒有對模板文件進行任何更改,所以我懷疑 gitlab-runner 設置需要一些配置才能工作,可能是組分配或類似的東西。
運行 systemctl status gitlab-runner 時,我可以看到:
無法為 /builds/{group} 創建容器卷 來自守護進程的錯誤響應:gitlab-runner-helper 的拉取訪問被拒絕,存儲庫不存在或可能需要“docker login”:拒絕:請求的資源訪問被拒絕(executor_docker .go:166:3s)" 工作=15 項目=34 跑步者=******
所以我去了 gitlab 中的跑步者部分,並為特定項目啟用了跑步者。 所以我可以避免上面的錯誤,但管道仍然中斷。
gitlab 中的 output 仍然相同,但 gitlab-runner 日志不同:
錯誤后不繼續拉取:錯誤:\n拒絕:請求的資源訪問被拒絕\n未經授權:需要身份驗證\n
可悲的是 - 我沒有從這里得到任何進一步
每次我按下管道的重試按鈕時,我都會得到以下系統日志條目:
正在檢查作業...收到" job=19 repo_url="correct-url-for-repo" runner=****** 此消息出現兩次
錯誤后不繼續拉取:錯誤:\n拒絕:請求的資源訪問被拒絕\n未經授權:需要身份驗證\n忽略從注冊表返回的額外錯誤:未經授權:需要身份驗證
無法為 /builds/{group} 創建容器卷 來自守護進程的錯誤響應:gitlab-runner-helper 的拉取訪問被拒絕,存儲庫不存在或可能需要“docker login”:拒絕:請求的資源訪問被拒絕(executor_docker .go:166:3s)" job=19 project=34 runner=****** 作業失敗:來自守護進程的錯誤響應:gitlab-runner-helper 的拉取訪問被拒絕,存儲庫不存在或可能需要 'docker login ': denied: 請求訪問資源被拒絕 (executor_docker.go:166:3s)" job=19 project=34 runner=****** 兩條消息出現兩次
因此,要么不允許 gitlab-runner 提取 docker 圖像,要么不允許訪問我的 gitlab 項目,但我無法找出問題所在。
以 root 身份運行gitlab-runner restart
,我看到以下“錯誤”
錯誤 [0000] Docker 執行器:預構建的圖像助手將從 /var/lib/gitlab-runner 加載。
有人可以幫幫我嗎:)?
圖像 gitlab-runner-helper, gitlab/gitlab-runner-helper:11.2.0 不存在。 似乎 debian package 可安裝在 ubuntu 中以某種方式損壞......所以我想我可能需要安裝最新的 gitlab-runner 版本
這是我所做的:(我在 Ubuntu 20.04)
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash
cat <<EOF | sudo tee /etc/apt/preferences.d/pin-gitlab-runner.pref
Explanation: Prefer GitLab provided packages over the Debian native ones
Package: gitlab-runner
Pin: origin packages.gitlab.com
Pin-Priority: 1001
EOF
所以我能夠將 gitlab-runner 更新到最新版本。
但是仍然沒有成功,現在服務將無法啟動而沒有任何錯誤消息,systemctl 只告訴 mit 進程退出。
系統日志告訴我:
chdir /var/lib/gitlab-runner:沒有這樣的文件或目錄
打開 /etc/init.d/gitlab-runner 向我展示了該路徑作為服務的 --working-directory 參數。
所以我創建了該目錄並將其所有權更改為 gitlab-runner
這次我可以運行 ci 管道了!
還是報錯
致命:無法訪問“http://{mylocaldomain}/isat/typo3-gdpr.git/”:無法解析主機:{mylocaldomain}
好的 - dns 分辨率不可能,因為我使用本地域。
如此處所述,您可以將 extra_host 傳遞給 docker 執行器。
為此,只需調整/etc/gitlab-runner/config.toml
文件並添加 extra_hosts 選項:
concurrent = 1
check_interval = 0
[[runners]]
name = "lab"
url = "http://{localDomain}/"
token = "******"
executor = "docker"
[runners.docker]
tls_verify = false
image = "ruby:2.1"
privileged = false
disable_cache = false
volumes = ["/cache"]
shm_size = 0
extra_hosts = ["{localDomain}:{ip}"]
[runners.cache]
現在我可以成功運行 ci 管道,並且我的 package 已列在作曲家注冊表中!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.