问题标签 [gitlab-autodevops]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
68 浏览

android - What's the easiest way to enable gitlab auto devops for an android project

What is the minimal set of steps to properly enable gitlab's "auto devops" feature for an Android project? After enabling the feature I get a pipeline but not the jobs I would expect such as assembleDebug, etc.

Steps taken to enable Auto Devops (clicking through gitlab UI):

#xA;
0 投票
1 回答
59 浏览

docker - 如何将 Gitlab 的 Auto DevOps 用于多容器应用程序?

我有一个多容器应用程序,使用 nginx 作为 Web 服务器和反向代理,以及一个简单的“Hello World” Streamlit 应用程序。
它在我的 Gitlab上可用。

我对 DevOps 完全陌生,因此想利用Gitlab 的 Auto DevOps来简化它。
默认情况下,Gitlab 的 Auto DevOps 只需要一个 Dockerfile,并且在项目的根目录(源)
令人惊讶的是,我只在我的多容器用例中找到了一个资源,旨在回答这个问题:https://forum.gitlab。 com/t/auto-build-for-multiple-docker-containers/46949
我听从了建议,只.gitlab-ci.yml对 dockerfiles 的路径进行了细微的更改。

但后来我遇到了 Dockerfiles 无法识别其文件夹中的文件的问题:App 的 Dockerfile 找不到requirements.txt在此处输入图像描述

并且 Nginx 的 Dockerfile 没有找到project.conf 在此处输入图像描述

似乎该DOCKERFILE_PATH: src/nginx/Dockerfile变量本身仅提供对 Dockerfile 的访问权限,但不将此路径理解为构建的位置。
如何自定义它.gitlab-ci.yml以使构建正确通过?
非常感谢 !

0 投票
1 回答
106 浏览

kubernetes - 为什么我的容器注册表适用于 gitlab 自动部署,但不适用于我的自定义管道?

嘿,我正在创建一个 gitlab 管道,我有 2 个阶段:staging 和 qa。对于 staging 我使用 gitlabsauto-deploy脚本,对于 qa 我使用自定义脚本。

随着分期管道的工作。对于 qa,容器注册表告诉我用户名/密码错误:

在管道期间,我正在为注册表创建一个包含登录详细信息的秘密。两个管道都使用以下方法创建它:

由于我没有部署令牌,因此默认为username=$CI_REGISTRY_USERand password=$CI_REGISTRY_PASSWORD。我仔细检查过,在各自的命名空间中有一个秘密。除了密码之外,这两个秘密都是相同的,每次运行管道时都会生成密码(据我所知)。

最后,我将秘密放入部署文件中:

所以这应该让我可以访问容器注册表,但它给了我上面的错误。它可以正常工作auto-deploy但不适合我的原因是什么?秘密是以相同的方式创建的,因此它应该产生相同的结果。

谢谢你的帮助 :)

编辑:
我在下添加了一个部署令牌project > settings > repository > deploy tokens并调用它gitlab-deploy-token。它拥有所有权限,并且其登录详细信息通过$CI_DEPLOY_USER和传递给管道$CI_DEPLOY_PASSWORD

pod 中的错误更改为:

根据gitlab 文档,我应该能够使用buildah login -u $CI_DEPLOY_USER -p $CI_DEPLOY_PASSWORD $CI_REGISTRY. 但是当我在登录和退出注册表的阶段这样做时,我得到:

链接是一个 json 文件:

由于我提供了用户名和密码,并且错误不会抱怨它们不匹配,我假设这是有效的。但是为什么认证仍然没有通过呢?是否还需要进行身份验证?也许一些证书?

auto-deploy现在也在使用的暂存管道(带有 的)gitlab-deploy-token仍然有效。

0 投票
0 回答
142 浏览

kubernetes - 无法使用 kubectl 连接到 Kubernetes 集群,并且 liveness 探测失败

更新

我们从 Dockerfile 中注释掉了 django 迁移和 collectstatic,我们设法进行了新的部署(通过了 liveness/readinnes 探测)。我们认为这将与其中一个有关,但随后我们返回,python manage.py migrate并且python manage.py collecstatic一切都继续工作。因此,部署工作正常,但我们不知道他们为什么停止工作。

但是我们仍然无法使用kubectl. 我们仍然收到超时错误。即使来自 Gitlab 界面。


我们有一个运行在由 Gitlab AutoDevops 管理的 Kubernetes 集群上的应用程序。几天前,由于某种未知的原因,我们无法再使用 Pod 连接到我们的 Pod kubectl。我们收到Error from server: error dialing backend: dial timeout, backstop。要连接到我们使用的 podkubectl -n <namespace> exec -it <pod> -- bash

此外,与此同时,由于livenessreadiness探测失败,我们的部署开始失败。检查 GKE,我们会看到以下消息:

  • Readiness probe failed: Get "http://10.59.1.234:5000/": dial tcp 10.59.1.232:5000: connect: connection refused
  • Liveness probe failed: Get "http://10.59.1.234:5000/": dial tcp 10.59.1.232:5000: connect: connection refused

我试图增加initialDelaySeconds- Helm 变量来控制 Probe 的值 - 但没有成功。5分钟后出现超时错误(Error: release review-fix-run-pi-xrsd0t failed, and has been uninstalled due to atomic being set: timed out waiting for the condition

应用程序仍在运行,但我们无法进行新的部署或访问 Pod。

下面是kubectl -n <namespace> describe pod <pod>在管道期间执行的命令的输出。几分钟后,管道出现故障。

有人告诉我这个问题与我们的集群内部网络有关。但我不知道从这里去哪里。

我们还注意到一些关于未就绪状态的 pod 的警告: 在此处输入图像描述

有关如何解决或调查此问题的任何提示?

提前致谢。

0 投票
1 回答
83 浏览

docker - Kubernetes 上的 GitLab Auto DevOps 挂起,网络超时,无法执行 yj

当使用GitLab Auto DevOps从我的存储库构建和部署应用程序到microk8s时,构建作业通常需要很长时间才能运行,最终会超时。这个问题在 99% 的情况下都会发生,但有些构建会运行。通常,构建在构建脚本中的不同时间停止。

这些项目不包含.gitlab-ci.yml文件,完全依赖 Auto DevOps 功能来发挥它的魔力。

对于 Spring Boot/Java 项目,通过 Gradle 包装器下载 Gradle 时构建通常会失败,有时在下载依赖项本身时会失败。错误消息非常模糊,根本没有帮助:

有时,如果幸运的话,错误会有所不同:

对于 React/TypeScript 问题,症状相似,但错误本身以不同的方式表现出来:

问题似乎主要发生在 GitLab 运行器本身在 Kubernetes 中部署时。microk8s 使用Project Calico来实现虚拟网络。

是什么赋予了?为什么错误消息没有帮助?有没有办法打开详细的构建日志或调试构建步骤?

0 投票
1 回答
28 浏览

next.js - 使用 Gitlab-CI AutoDevOps 为每个环境构建不同的图像

Dockerfiles 通过--build-args. 这些变量对于 NextJS 是必需的,用于静态页面(调用远程 API),并且在构建的图像中“硬编码”。

Gitlab-CI AutoDevOps 有一个 ENV var 来传递这些 args ( AUTO_DEVOPS_BUILD_IMAGE_EXTRA_ARGS)。但这仅在您使用一个环境/图像时才可使用。当需要多个环境 (stagingproduction) 时,URL 会有所不同 (https://staging.exmpl.comhttps://www.exmpl.com)。

如何修改 Gitlab AutoDevOps 以构建两个不同的图像?

在 CI/CD 设置中,我AUTO_DEVOPS_BUILD_IMAGE_EXTRA_ARGS设置了:

目前这是我的完整gitlab-ci.yml

如何在不“离开” AutoDevOps 的情况下构建两个映像?我假设我必须自定义构建阶段。

另一个想法是创建一个名为production的第二个 Git 存储库,其生产 URL 设置为$NEXT_PUBLIC_API_URL

  • 暂存构建并运行测试。
  • 如果成功,它将被发布
  • 暂存仓库内容将被复制到生产仓库
  • 生产 repo 被构建(带有生产 URL)并测试然后发布

然后我有两个图像。

有人请一个更好的主意吗?

先感谢您