gpt4 book ai didi

在谷歌云构建中使用 git 容器进行 git commit

转载 作者:行者123 更新时间:2023-12-04 14:09:29 25 4
gpt4 key购买 nike

我在玩谷歌云构建。在我的用例中,我必须在构建过程中更改一个文件并将其提交到 git 中。

我绘制了如下所示的构建步骤,它们确实有效。但这对于做一个简单的 git commit 来说是一种仪式。

你有什么建议如何缩短这些东西吗?

steps:
- name: alpine
args: ["touch", "some-file.txt"]
- name: gcr.io/cloud-builders/git
args: [ "config", "--global", "user.name", "batman" ]
- name: gcr.io/cloud-builders/git
args: [ "config", "--global", "user.email", "batman@gotham.city" ]
- name: gcr.io/cloud-builders/git
args: [ "add", "-A" ]
- name: gcr.io/cloud-builders/git
args: [ 'commit', '-m', 'batmans commit' ]
- name: gcr.io/cloud-builders/git
args: [ 'push', 'https://source.developers.google.com/p/$PROJECT_ID/r/my-repo', 'master']

最佳答案

Push to Private Google repositories



尝试放 by command像这样:
steps:
- name: 'gcr.io/cloud-builders/git'
entrypoint: 'bash'
args:
- '-c'
- |
touch ./some-file.txt
git config --global user.name batman
git config --global user.email batman@gotham.city
git add -A
git commit -m 'batmans commit'
git push 'https://source.developers.google.com/p/$PROJECT_ID/r/my-repo' master

或者把它们放在 script file像这样:
steps:
- name: gcr.io/cloud-builders/git
args: ["sh", "git.sh"]

或换 alpine python 像这样:
steps:
- name: python
args: ["sh", "git.sh"]

或者使用 config elements 写它像这样:
steps:
- name: python
entrypoint: /bin/sh
args: ['-c', './git.sh]

然后把你所有的 build stepsgit.sh文件:
#!bin/sh
sh ./some-file.txt
git config --global user.name batman
git config --global user.email batman@gotham.city
git add -A
git commit -m 'batmans commit'
git remote set-url origin 'https://source.developers.google.com/p/$PROJECT_ID/r/my-repo'
git push origin master

Push to Private GitHub repositories



如果您想将 repo 推送到 Github,您可以使用 kms service 运行构建器连同 ssh-agent and or expect .然后模拟 git interaction to private GitHub repositories像这样:
steps:
- name: 'gcr.io/cloud-builders/gcloud'
args: ['kms', 'decrypt', '--location', 'global',
'--keyring', 'my-keyring','--key', 'github-key',
'--ciphertext-file', 'id_rsa.enc', '--plaintext-file', '/root/.ssh/id_rsa']
volumes:
- name: 'ssh'
path: /root/.ssh

- name: 'python'
entrypoint: 'bash'
args: ['-c', './git.sh]
volumes:
- name: 'ssh'
path: /root/.ssh

与上面类似,您也可以放置步骤 resourcegit.sh文件:
#!bin/sh
chmod 600 /root/.ssh/id_rsa
cat <<EOF >/root/.ssh/config
Hostname github.com
IdentityFile /root/.ssh/id_rsa
EOF
mv known_hosts /root/.ssh/known_hosts
apt-get update
apt-get --assume-yes install expect
git config --global <github:user.name>
git config --global <github:user.email>
eval `ssh-agent` && expect agent_builder && ssh-add -l
cd /path/to/my-repo
git add .
git commit -m 'batmans commit'
git remote set-url origin 'git@github.com:my-user/my-repo.git'
git push origin master

文件 agent_builder包含以下代码:
#!/usr/bin/expect -f
spawn ssh-add /root/.ssh/id_rsa
expect "Enter passphrase for /root/.ssh/id_rsa:"
send "my-passphrase\n";
expect "Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)"
interact

当您设置 mirror configuration 然后,您推送到 GitHub 存储库的提交将被复制或镜像回托管在 Cloud Source Repositories 中的 Google 存储库。

关于在谷歌云构建中使用 git 容器进行 git commit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51997933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com