我想在 Google Kubernetes Engine 上运行 sails.js 应用程序。在本地运行应用程序 docker 容器效果很好。到 GKE 的部署是通过 gitlab Auto-Devops 管道完成的。到目前为止,将应用程序部署到 GKE 正在运行,我可以使用 gitlab-CI 生成的域访问 sails.js 应用程序的页面 - 例如xyz-review-autodevops-123.my.host.com
但是,当访问页面时,只能加载所请求的页面 - 所有资源(例如图像、javascript 和 css 文件)都不会加载,而是返回 404。
当查看 GKE 中的 nginx-ingress-controller 日志时,我发现请求了这些 url,但结果是 404:
[05/Aug/2018:12:27:25 +0000] "GET /js/cloud.setup.js HTTP/1.1" 404 9 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36" 573 0.004 [my-app-review-autodevops-1232u0-my-app-443] xx.xx.xx.xx:80 9 0.004 404
Run Code Online (Sandbox Code Playgroud)
还经常记录如下错误。我不确定这是否与此问题有关,但仍然想提一下,以防万一:
error obtaining PEM from secret my-app-1239989/review-autodevops-1232u0-my-app-tls: error retrieving secret my-app-1239989/review-autodevops-1232u0-my-app-tls: secret my-app-1239989/review-autodevops-1232u0-my-app-tls was not found" …Run Code Online (Sandbox Code Playgroud) sails.js gitlab-ci kubernetes google-kubernetes-engine kubernetes-ingress
目前我在多个工具中面临路径问题,因为 gitlab clone dir 的路径长度,使用 gitlab runner。 当前目录结构:C:\gitLab\builds\576aef34\0\root\TEST
有什么办法可以缩短这个路径,比如:C:\gitLab\builds\TEST
我试图从两个不同的项目注册表(gitlab 容器注册表)中提取两个图像。所有这些都在一个docker-compose.yml文件中。
我如何配置我的gitlab-ci.yml或配置变量(无论什么都有效)以便正确提取我的图像而不会出现任何访问问题?
我找到了一个使用部署令牌的解决方案docker login,可以对我的项目注册表进行只读访问。问题是,如果我只有一个图像可以拉取:如何使用 gitlab ci 构建、推送和拉取多个 docker 容器?
我正在尝试配置一个跑步者并使用参考https://docs.gitlab.com/runner/commands/
但不清楚运行/启动/安装/注册的命令生命周期是什么
应该在我重新启动系统时调用一次或每次调用 register。安装和启动怎么样?
要重新启动跑步者,我应该怎么做stop,
uninstall然后install
start
run呢?
我应该这样run做还是start会产生相同的效果?
我正在尝试从 Gitlab CI 脚本中的 PyLint 输出生成徽章。最终,如果 PyLint 具有非零退出代码,作业应该会失败。但在此之前,我希望创建徽章。所以我尝试了以下方法:
before_script:
- [...]
- mkdir -p public
script:
- pylint lib --disable R,missing-docstring,wrong-import-order --reports=y | tee public/pylint-report.txt
- export SUCCESS=${PIPESTATUS[0]}
- SCORE=$(tail -n 2 public/pylint-report.txt | grep -o -P "\d\d?\.\d+\/\d*" | head -1)
- echo "PyLint score ${SCORE}"
- python3.6 -m pybadges --left-text=PyLint --right-text=${SCORE} > public/pylint.svg
- exit ${SUCCESS}
artifacts:
when: always
[...]
Run Code Online (Sandbox Code Playgroud)
如果 PyLint 退出代码为 0,这可以正常工作:
$ mkdir -p public
$ pylint lib --disable R,missing-docstring,wrong-import-order --reports=y | tee public/pylint-report.txt; export SUCCESS=${PIPESTATUS[0]} …Run Code Online (Sandbox Code Playgroud) 我已经开始在 Gitlab CI 上构建我的 .gitlab-ci.yml 所以我用这样的简单阶段创建了它
image: node:alpine
variables:
PUBLIC_URL: /my-app
cache:
paths:
- node_modules
stages:
- build
- deploy
install_dependencies:
stage: build
script:
- npm install
artifacts:
paths:
- node_modules/
deploy_to_cloud:
stage: deploy
script:
- echo Deployed
Run Code Online (Sandbox Code Playgroud)
但作业失败并回复:在您的 .gitlab-ci.yml 中发现错误:
“作业配置应至少包含一项可见的作业”
我在 DEV 分支中运行了以下 gitlab-ci.yml 文件,目标也为 DEV。由于我无法将 TARGET 指向 MASTER,因此不会创建自动 MR。我想知道是否可以在 gitlab-ci 脚本本身中创建合并请求。
dev:
stage: deploy
script:
- url_host=`git remote get-url origin | sed -e "s/https:\/\/gitlab-ci-token:.*@//g"`
- git remote set-url origin "https://gitlab-ci-token:${CI_TAG_UPLOAD_TOKEN}@${url_host}"
- databricks workspace export_dir -o /mynotebooks.
- git add .
- git commit -m 'Add notebooks to Repo' -a || true
- git push origin HEAD:dev
tags:
- test
Run Code Online (Sandbox Code Playgroud)
我搜索并引用了我的网站,但看不到任何有关以编程方式创建合并请求的说明。
这个想法是各种开发人员正在开发一个 databrick 集群,并且 gitlab 计划定期运行。更改将被推送到 DEV 分支,并将使用合并请求推送到 MASTER 分支。
我想知道这个 MR 创建是否可以自动化。请新到 GITLAB。
谢谢。
仅在合并请求中运行时如何在 .gitlab-ci.yml 中正确写入作业?
test_c:
stage: test
script:
- echo "This job tests something. It will only run when all jobs in the"
- echo "build stage are complete."
only:
- merge_requests
Run Code Online (Sandbox Code Playgroud)
此作业不在合并请求中运行,但不在 master 或 develop 中运行和提交。
情况是这样的:我在 Gitlab CI(由 vue-cli 启动)中运行 Cypress 测试。为了加快执行速度,我构建了一个包含必要依赖项的 Docker 映像。如何从预构建的映像中缓存 node_modules 以在测试作业中使用它?目前我正在使用一个糟糕的(但有效的)解决方案:
testsE2e:
image: path/to/prebuiltImg
stage: tests
script:
- ln -s /node_modules/ /builds/path/to/prebuiltImg/node_modules
- yarn test:e2e
- yarn test:e2e:report
Run Code Online (Sandbox Code Playgroud)
但我认为使用 Gitlab CI 缓存必须有更简洁的方法。
我一直在测试:
cacheE2eDeps:
image: path/to/prebuiltImg
stage: dependencies
cache:
key: e2eDeps
paths:
- node_modules/
script:
- find / -name node_modules # check that node_modules files are there
- echo "Caching e2e test dependencies"
testsE2e:
image: path/to/prebuiltImg
stage: tests
cache:
key: e2eDeps
script:
- yarn test:e2e
- yarn test:e2e:report
Run Code Online (Sandbox Code Playgroud)
但作业 cacheE2eDeps …
我只需要在提交消息不包含WIP并且分支是功能分支时运行管道..但是无论我做什么,它要么不运行,要么像下面一样总是运行
我在兜兜转转;这是我最后的努力,这对我来说似乎很有意义,但无论提交消息说什么都会触发:/
stages:
- stage
- sprint
# -------------------------------------------------------------------
sprint:
stage: sprint
allow_failure: false
image: node:lts
script:
- echo 'stuff'
rules:
- if: '$CI_COMMIT_BRANCH=~ /^feature(.?)*/ && $CI_COMMIT_MESSAGE != /^WIP(.?)*/'
when: always
Run Code Online (Sandbox Code Playgroud) gitlab-ci ×10
gitlab ×6
git ×2
bash ×1
cypress ×1
docker ×1
gitlab-api ×1
kubernetes ×1
node-modules ×1
pylint ×1
python ×1
sails.js ×1
yaml ×1