我正在使用 Gitlab 设置 CI,它运行良好,但我需要在脚本命令中使用变量,但我不确定如何做到这一点。我在想这样的事情
script:
- npm config set "//npm.fontawesome.com/:_authToken" $FONT_AWESOME_KEY
Run Code Online (Sandbox Code Playgroud)
我已经尝试了一些其他的路线,但我似乎无法在我想要运行的命令中获取要填充的变量值。
目前我在多个工具中面临路径问题,因为 gitlab clone dir 的路径长度,使用 gitlab runner。 当前目录结构:C:\gitLab\builds\576aef34\0\root\TEST
有什么办法可以缩短这个路径,比如:C:\gitLab\builds\TEST
我有一个自托管的 GitLab CE Omnibus 安装(版本 11.5.2)正在运行,包括容器注册表。现在,托管所有这些容器所需的磁盘大小增加得非常快。作为管理员,我想列出这个注册表中的所有 Docker 镜像,包括它们的大小,所以我可以让它们被删除。
也许我看的不够仔细,但目前,我在 GitLab 的管理面板中找不到任何东西。在我创建一个脚本来比较repositories和blobs目录之间的奇怪链接/var/opt/gitlab/gitlab-rails/shared/registry/docker/registry/v2,然后根据存储库聚合大小之前,我想问:
是否有一些 CLI 命令甚至是对注册表的 curl 调用来获取我想要的信息?
我尝试在 GitLab 的一个分支中的 CI/CD 中配置自动代码覆盖率,并且管道在分支内完美通过,但是当管理员将更改合并到主分支时,管道由于缺少绑定而失败。
我曾经gitlab-ci.yml在其中配置我的作业。我没有任何使用管道的经验,所以这对我来说几乎是一个反复试验的任务。
最后,我得到了对我有用的配置,它不会破坏任何东西并根据需要生成覆盖范围。但是,由于它在成功构建之前显示无空间错误,因此我不得不强制清除缓存以使作业正常运行。在我的分支中,管道通过而没有任何错误,我通过多次重新运行来进行双重检查。但是一旦管理员合并了分支,它突然开始产生以下错误:
ERROR in Module build failed: Error: Missing binding /builds/internal/employee_portal/node_modules/node-sass/vendor/linux-x64-64/binding.node
Node Sass could not find a binding for your current environment: Linux 64-bit with Node.js 10.x
Found bindings for the following environments:
- Linux 64-bit with Node.js 11.x
This usually happens because your environment has changed since running `npm install`.
Run `npm rebuild node-sass` to download the binding for your current environment.
at module.exports (/builds/internal/employee_portal/node_modules/node-sass/lib/binding.js:15:13)
at Object.<anonymous> (/builds/internal/employee_portal/node_modules/node-sass/lib/index.js:14:35)
at Module._compile …Run Code Online (Sandbox Code Playgroud) continuous-integration pipeline continuous-deployment gitlab docker
我的团队将 AWS 用于我们的基础设施,跨越 3 个不同的 AWS 账户。我们将简单地给他们打电话sandbox,staging和production。
我最近针对我们的 AWS 基础设施设置了 Terraform,它的层次结构映射到我们的帐户,然后是应用程序或 AWS 服务本身。回购结构看起来像这样:
staging
iam
groups
main.tf
users
main.tf
s3
main.tf
sandbox
iam
...
production
applications
gitlab
main.tf
route53
main.tf
...
Run Code Online (Sandbox Code Playgroud)
我们为每个 AWS 服务(例如,IAM 或 S3)或应用程序(例如,GitLab)使用单独的配置,因此我们最终不会在.tf每个帐户中生成庞大的文件,这需要很长时间才能为任何一项更改应用更新。理想情况下,我们希望摆脱基于服务的配置方法,转向更多基于应用程序的配置,但无论哪种方式,手头的问题都是一样的。
当从命令行手动应用更新时,这种方法一直运行良好,但我很想将它移动到 GitLab CI/CD 以更好地自动化我们的工作流程,而这正是问题所在。
在我现有的设置中,如果我对,比如说,做一个单一的改变staging/s3/main.tf,GitLab 似乎没有一个开箱即用的好方法来只运行terraform plan或terraform apply用于特定的配置。
如果我改为将所有内容移动到main.tf整个 AWS 帐户的单个文件中(或多个文件但与单个状态文件相关联),我可以简单地让 GitLab 触发一个作业plan或apply仅触发该配置。根据我们在每个账户中拥有的 AWS 资源数量,运行可能需要 15 分钟,但我认为这是一个潜在的选择。
似乎我的问题最终可能与 GitLab 如何处理“monorepos”有关,而不是与 Terraform 如何处理其工作流程有关(毕竟,如果我只是告诉它 …
我正在尝试配置一个跑步者并使用参考https://docs.gitlab.com/runner/commands/
但不清楚运行/启动/安装/注册的命令生命周期是什么
应该在我重新启动系统时调用一次或每次调用 register。安装和启动怎么样?
要重新启动跑步者,我应该怎么做stop,
uninstall然后install
start
run呢?
我应该这样run做还是start会产生相同的效果?
我已经开始在 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 ×10
gitlab-ci ×5
git ×4
docker ×2
font-awesome ×1
gitlab-api ×1
pipeline ×1
registry ×1
terraform ×1
yaml ×1