我面临以下问题:
我正在尝试配置 GitLab CI pipline(shell)。
我的存储库包含两个子模块。
这两个子模块与包含它们的超级存储库位于同一台 GitLab 服务器上。
该克隆是 SSH 克隆,我已在本地配置了密钥,并将密钥添加到了 GitLab。
在安装运行程序的计算机上,我可以毫无问题地克隆所有内容,包括子模块。
但是,当运行程序尝试克隆时,它会返回“主机密钥验证失败”,但仅限于子模块。
我尝试使用其自己的用户和我的用户配置跑步者:
sudo gitlab-runner install --user=<user>
Run Code Online (Sandbox Code Playgroud)
没有效果。
最让我困惑的是,错误仅针对子模块,即使它们与包含它们的超级存储库位于同一服务器上,并且超级存储库可以毫无问题地克隆(当我关闭子模块递归变量时) yml 文件):
GIT_SUBMODULE_STRATEGY: recursive
Run Code Online (Sandbox Code Playgroud)
但当然我没有子模块。
如果您有任何有关检查或尝试内容的建议,我将不胜感激!
我是 git 和软件开发领域的新手。我指的是下面的链接来学习一些 git 命令。
https://medium.com/@iamsohail/git-commands-to-master-810cad71e22d
当我尝试使用“恢复”命令时,我收到错误消息“未找到恢复命令”。
我无法找到解决方案。任何帮助表示赞赏。
我使用的 git 版本低于 2.23。
我使用 gitlab 创建了一个私人 npm 注册表
我有以下 .npmrc 文件,该文件与我用来发布的 .npmrc 文件相同,没有任何问题。我已用占位符替换了所有公司值。
@myorg:registry=https://gitlab.com/api/v4/packages/npm/
//gitlab.com/api/v4/packages/npm/:_authToken=[[MY_TOKEN_HERE]]
//gitlab.com/api/v4/projects/12345678/packages/npm/:_authToken=[[MY_TOKEN_HERE]]
Run Code Online (Sandbox Code Playgroud)
当我去安装时,我收到以下错误消息
npm install @myorg/my-package-name-here
npm ERR! code E404
npm ERR! 404 Not Found - GET https://registry.npmjs.org/@myorg/my-package-name-here - Not found
npm ERR! 404
npm ERR! 404 '@myorg/my-package-name-here@latest' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, …Run Code Online (Sandbox Code Playgroud) 过去可以从 gitlab 问题创建分支,但此功能已不再存在。
是否需要在某处显式启用?
或者是否有一种新方法可以从问题创建分支?
我必须对我的 Mac 进行出厂重置,现在我正在重新配置我需要的所有开发内容,例如 Ruby/Rails 等...
下一步是配置 git,我的问题是关于我的 ssh 密钥:
根据我之前的配置,我将我的私有 ssh 密钥保存在一个文本文件中(我不知道这在安全性方面是否是一个好主意,但这不是重点),只需从我的终端复制它并将其粘贴到一个文本文件中。
我想再次使用该私有 ssh 密钥,而不是创建新的公共和私有密钥。我怎样才能做到这一点?我是否必须创建一个新的,然后以某种方式替换我之前保存的那个?如果是这样,怎么办?
如果您可以非常具体地回答,我们将非常感激,因为我对这个主题并不熟悉。
预先非常感谢!
所以我正在浏览 gitlab ci 文档以将变量传递给其他作业。但是,我该如何通过多个呢?我如何访问多个?
build:
stage: build
script:
- echo "BUILD_VERSION=hello" >> build.env
artifacts:
reports:
dotenv: build.env
deploy:
stage: deploy
script:
- echo "$BUILD_VERSION" # Output is: 'hello'
dependencies:
- build
Run Code Online (Sandbox Code Playgroud) 我们希望用户从有效选项列表中输入一个值。由于我们找不到定义有效值预设的方法,因此我们目前正在尝试使用 if 语句来实现。
然而,我们很难找到 OR 运算符的 if 语法。
我们目前拥有的:
variables:
BUMP_TYPE: 'no-release-just-build'
...
before_script:
- >
if [[ "$BUMP_TYPE" = "no-release-just-build"] || ["$BUMP_TYPE" = "patch" ]]; then
echo "valid $BUMP_TYPE"
else
echo "invalid $BUMP_TYPE"
fi
Run Code Online (Sandbox Code Playgroud)
然而,这输出:“无效的 no-release-just-build”--> else 情况
为什么"$VERSION" = "no-release-just-build"不真实呢?
我问这个问题是因为我正在研究Pro Git书,有一章“重写历史”,解释了如何更改最后一次提交$ git commit --amend,更改多个提交消息$ git rebase -i HEAD~ 3 、使用$ git filter-branch --tree-filter删除所有提交中的特定文件或文件夹。
我的问题是:这本书没有提到通过沿着所有提交历史进行多次签出来完成这项工作的可能性。所以我移动我的 HEAD,逐个提交,然后用$ git commit --amend一项一项地更改这个特定的提交。
我知道这真的(真的!)就花费的时间而言非常昂贵,但是它真的有可能(即它有效)吗?
如果是,在什么情况下这可能有用?
有什么方法可以将父管道的作业 ID 作为变量传递给子管道
package:
stage: package
script:
- zip -r ./service.zip
deploy:
stage: deploy
variables:
trigger:
include:
- project: '<namespace>/<project>'
ref: '<branch>'
file: '<path to yml file>'
strategy: depend
Run Code Online (Sandbox Code Playgroud)