通过 Codehip 自动将文件从一个 GitHub 存储库复制到另一个

Automatically copy a file from one GitHub repository to another via Codehip

我有两个存储库:S1S2

如果文件被更改或创建,我想自动将文件从 S1 推送到 S2

例如:

我在S1中将translation.en.json推送到/translations/translation.en.jsontranslation.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

请注意,此脚本未经测试,绝对需要根据您的特定需求进行调整。有关身份验证和访问第二个存储库的说明也适用于此用例。