我有两个存储库:S1
,S2
如果文件被更改或创建,我想自动将文件从S1
推送到S2
。
例如:
我将translation.en.json
推送到/translations/translation.en.json
中的S1
。
translation.en.json
应自动推送到/dashboard/translation.en.json
中的S2
。
当我在S1
中推送某个主分支时,将运行代码生成。
我想用codeship
步骤编写一个脚本,可以自动执行此操作。
我尝试过这样的事情:
#!/bin/bash
set -e
mkdir -p _translations/dashboard/
cd _translations
git fetch --unshallow || true
git fetch origin "+refs/heads/*:refs/remotes/origin/*"
git push git@github.com:company/translations.git "${CI_COMMIT_ID}:master"
答案 0 :(得分:1)
我们有一个基于脚本的部署,可以推送到https://github.com/codeship/scripts/blob/master/deployments/git_push.sh
提供的其他git存储库您可以通过设置所需的环境变量并添加curl
命令添加脚本部署,将其添加到部署管道中,例如
export REMOTE_REPOSITORY="git@github.com:company/s2.git"
export REMOTE_BRANCH="master"
\curl -sSL https://raw.githubusercontent.com/codeship/scripts/master/deployments/git_push.sh | bash -s
您还需要确保允许Codeship项目SSH密钥(通过项目设置可用)推送到第二个存储库。有关如何配置此内容,请参阅https://documentation.codeship.com/general/projects/access-to-other-repositories-fails-during-build/。
但是,这会将S1
的完整内容推送到其他存储库。如果您只想推送特定文件(或一组文件),我建议克隆第二个存储库,复制文件,然后提交和推送。示例脚本可能如下所示:
cd "${HOME}"
git clone git@github.com:company/s2.git
# "${HOME}/clone" is the default checkout path on Codeship
cp ./clone/translation.en.json ./s2/
cd ./s2
git commit -a "Automatic commit, based on "company/s1@${CI_COMMIT_ID}"
git push origin master
请注意,此脚本未经过测试,必须根据您的具体需求进行调整。有关身份验证和访问第二个存储库的说明也适用于此用例。