作者:智慧与财富的拥有者_678 | 来源:互联网 | 2022-12-09 20:40
我是GitLab CI / CD作业的新手,但是我试图建立一个Python脚本,当将其推送到GitLab时,它会触发CI / CD作业运行它,并调用一个内部函数来再次推送到GitLab,前提是一定要符合条件。因此,例如,假设我有以下内容:
def hasFileInDirectory():
# checks if the current directory has at least 1 other file in it
if (1 or more files exist):
print 'Great! You have enough files!';
else:
print 'Oh no! You need more files! Let me create one!';
createFile('missingFile'+str(random.randint(0,1000000)+'.txt');
os.system('git add -A');
os.system('git commit -m "Automatically added new file..."');
os.system('git push origin HEAD:master --force');
如果我自己从命令行运行此函数,则该函数似乎运行得很好,但是,它似乎无法在GitLab CI / CD作业中运行。我得到的输出是:
remote: You are not allowed to upload code.
fatal: unable to access 'https://gitlab-ci-token:xxxxx@gitlab.com/path_to/my_repository.git/': The requested URL returned error: 403
致电时会发生此错误,git push
所以我想知道如何解决此问题。我将非常感谢您的帮助!
1> VonC..:
GitLab CI运行程序尚不能推动回购:此处有一个正在进行的提案。
同时,您可以将SSH URL与结合使用:
通过GitLab中的“设置”>“ CI / CD管道” Web界面将SSH私钥定义为秘密变量,然后
SSH密钥的公共部分存储为同一Web UI的部署密钥“设置”>“存储库”>“部署密钥”部分。
或者,如此处所述,您可以在个人资料的“设置”中使用“个人访问令牌”。
我使用范围api创建了令牌,并在管道中进行了配置。
在gitlab控制台中打开项目,转到“设置”>“ CI / CD”>“秘密变量”,创建一个值为key(在配置文件中生成)的变量。
我将“ $ {CI_JOB_TOKEN}”替换为变量“ $ {VAR01}”。
使用gitlab-ci.yml
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}"
CI_TAG_UPLOAD_TOKEN
是Secret变量