通过 Codehip 自动将文件从一个 GitHub 存储库复制到另一个
Automatically copy a file from one GitHub repository to another via Codehip
我有两个存储库:S1
、S2
如果文件被更改或创建,我想自动将文件从 S1
推送到 S2
。
例如:
我在S1
中将translation.en.json
推送到/translations/translation.en.json
。
translation.en.json
应该自动推送到 S2
中的 /dashboard/translation.en.json
。
当我将某些内容推送到 S1
中的 master 分支时,codeship 构建将是 运行.
我想在 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"
我们有一个基于脚本的部署,用于推送到 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
请注意,此脚本未经测试,绝对需要根据您的特定需求进行调整。有关身份验证和访问第二个存储库的说明也适用于此用例。
我有两个存储库:S1
、S2
如果文件被更改或创建,我想自动将文件从 S1
推送到 S2
。
例如:
我在S1
中将translation.en.json
推送到/translations/translation.en.json
。
translation.en.json
应该自动推送到 S2
中的 /dashboard/translation.en.json
。
当我将某些内容推送到 S1
中的 master 分支时,codeship 构建将是 运行.
我想在 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"
我们有一个基于脚本的部署,用于推送到 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
请注意,此脚本未经测试,绝对需要根据您的特定需求进行调整。有关身份验证和访问第二个存储库的说明也适用于此用例。