按文件gitlab-CI通过CI亚军
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了按文件gitlab-CI通过CI亚军相关的知识,希望对你有一定的参考价值。
我使用gitlab CI转轮来测试我的代码,并生成一些文件。我只是想推生成的文件通过CI转轮gitlab库。有没有办法做到这一点?
我已经这样做解决了这个问题:
- 生成API范围新gitlab访问令牌:
User Settings > Access Tokens
- 添加一个受保护的CI变量与新的令牌项目设置:
Your project > Settings > Secret variable
- >编辑:如果你想混帐推到非保护的分支没有设置亚军变量保护
然后你可以使用此令牌,而不是在你的默认gitlab慈脚本。例如 :
before_script:
- git remote set-url origin https://USERNAME:${CI_PUSH_TOKEN}@gitlab.com/your-project.git
- git config --global user.email 'your@email.com'
- git config --global user.name 'yourname'
...
- git checkout -B branch
- change files
- git commit -m '[skip ci] commit from CI runner'
- git push --follow-tags origin branch
生成gitlab一个SSH密钥
- >配置文件设置 - > SSH密钥 - >生成它
生成的gitlab变量命名SSH的SSH密钥库后
- >项目设置 - >变量 - >添加变量
在.gitlab-ci.yml添加下面的线。
before_script:
- mkdir -p ~/.ssh
- echo "$SSH" | tr -d '
' > ~/.ssh/id_rsa
- chmod 600 ~/.ssh/id_rsa
- ssh-keyscan -H 'Git_Domain' >> ~/.ssh/known_hosts
在此之后,文件推到仓库使用下面的js代码这一点。
var child_process = require("child_process");
child_process.execSync("git checkout -B 'Your_Branch'");
child_process.execSync("git remote set-url origin Your_Repository_Git_Url");
child_process.execSync("git config --global user.email 'Your_Email_ID'");
child_process.execSync("git config --global user.name 'Your_User_Name'");
for (var i=0;i<filesToBeAdded.length;i++) {
child_process.execSync("git add "+filesToBeAdded[i]);
}
var ciLog = child_process.execSync("git commit -m '[skip ci]Automated commit for CI'");
var pushLog = child_process.execSync("git push origin Your_Branch");
[跳过Cl]在提交消息是最重要的。否则,它会启动CI过程的无限循环。
你可以使用SSH当然键,但你也可以提供用户名和密码的秘密变量(与写访问用户),并使用它们。
例:
before_script:
- git remote set-url origin https://$GIT_CI_USER:$GIT_CI_PASS@gitlab.com/$CI_PROJECT_PATH.git
- git config --global user.email 'myuser@mydomain.com'
- git config --global user.name 'MyUser'
你必须定义GIT_CI_USER
和GIT_CI_PASS
作为秘密变量(你总是可以为此创建了专门的用户)。
有了这个配置,你可以正常使用Git工作。我使用这种方式发布后推标签(与公理发布摇篮Pluing - http://axion-release-plugin.readthedocs.io/en/latest/index.html)
例如解除作业:
release:
stage: release
script:
- git branch
- gradle release -Prelease.disableChecks -Prelease.pushTagsOnly
- git push --tags
only:
- master
您正在寻找的功能被称为文物。文物是被连接到一个构建时,他们是成功的文件。
为了能够把这个在您的.gitlab-ci.yml的神器:
artifacts:
paths:
- dir/
- singlefile
这将上传dir
目录和文件singlefile
回GitLab。
以上是关于按文件gitlab-CI通过CI亚军的主要内容,如果未能解决你的问题,请参考以下文章
将脚本移动到 gitlab-ci.yml 中的单独文件中以避免代码重复并将其包含在多个文件中