将 gitlab 存储库的一部分复制到 gitlab 中的另一个存储库
Duplicate part of gitlab repository to another repository inside gitlab
我有一个接受 Git 自动部署的共享服务器 运行 IIS,我使用的是 .Net 2.2。
使用 SSH 和 WebHooks 将文件推送到 gitlab 存储库后,文件将立即部署到 plesk 网站。
所以这个存储库只会部署,例如:dll 文件。
我在 gitlab 中有另一个存储库。
我可以在管道中通过下面的命令在本地发布。
publish-to-dev:
stage: publish-to-dev
image: mcr.microsoft.com/dotnet/sdk:3.1-focal
script:
- 'dotnet publish -c Release'
问题:如何创建一个管道命令,将部署的文件从代码存储库复制到deployment repository 在部署命令之后dotnet publish
?
编辑
问题已由 Mike bellow 回答,但我在复制文件的过程中遇到错误,我收到如下消息:
$ cp artifacts/emaua/* deploy/
cp: -r not specified; omitting directory 'artifacts/emaua/cs'
cp: -r not specified; omitting directory 'artifacts/emaua/de'
cp: -r not specified; omitting directory 'artifacts/emaua/es'
cp: -r not specified; omitting directory 'artifacts/emaua/fr'
cp: -r not specified; omitting directory 'artifacts/emaua/it'
cp: -r not specified; omitting directory 'artifacts/emaua/ja'
cp: -r not specified; omitting directory 'artifacts/emaua/ko'
cp: -r not specified; omitting directory 'artifacts/emaua/pl'
cp: -r not specified; omitting directory 'artifacts/emaua/pt-BR'
cp: -r not specified; omitting directory 'artifacts/emaua/refs'
cp: -r not specified; omitting directory 'artifacts/emaua/ru'
cp: -r not specified; omitting directory 'artifacts/emaua/runtimes'
cp: -r not specified; omitting directory 'artifacts/emaua/tr'
cp: -r not specified; omitting directory 'artifacts/emaua/wwwroot'
cp: -r not specified; omitting directory 'artifacts/emaua/zh-Hans'
cp: -r not specified; omitting directory 'artifacts/emaua/zh-Hant'
Cleaning up project directory and file based variables
00:00
ERROR: Job failed: exit code 1
通过添加 -r
如 - 'cp -r path/to/published/files/* deploy/'
解决了
使用 GitLab 工件
dotnet publish 命令将构建项目,然后将输出文件放入构建系统上的文件夹中。
这将是 运行 publish-to-dev
作业的 GitLab Runner 机器上的一个文件夹。
如果您希望能够从 GitLab 下载 publish
ed 文件,那么您可以使用 artifacts 指定包含已发布文件的目录被压缩并附加到作业完成后。
publish-to-dev:
stage: publish-to-dev
image: mcr.microsoft.com/dotnet/sdk:3.1-focal
script:
- 'dotnet publish -c Release'
artifacts:
paths:
- path/to/published/files/
文件将作为 artifacts.zip
在作业中提供(在右侧栏中)。
注意事项:
这并没有实际上将发布的文件放入部署存储库。为此,您必须下载 ZIP,然后自己将其添加到存储库中。
在你的工作中使用git
或者,如果您想将它们推送到其他存储库,那么事情就会变得更加棘手。你需要做这些事情:
- 为部署存储库
获取access token
- 将其存储在 代码存储库 的 pipeline variable 中 - 在我下面的示例中,它被称为
DEPLOY_REPO_TOKEN
- 在您的工作中检索令牌(使用
variables
),并在您对 部署存储库[=] 执行 git
操作时使用它进行身份验证69=]
- 在
publish-to-dev
作业中,git clone
部署存储库 (使用令牌),git add
发布的文件,然后 git push
,像这样:
variables:
DEPLOY_REPO_TOKEN: $DEPLOY_REPO_TOKEN
DEPLOY_REPO_URL: 'gitlab.example.com/group/project/deployment-repository'
publish-to-dev:
stage: publish-to-dev
image: mcr.microsoft.com/dotnet/sdk:3.1-focal
script:
- 'dotnet publish -c Release'
- `git clone https://oauth2:$DEPLOY_REPO_TOKEN@$DEPLOY_REPO_URL.git deploy'
- 'cp -r path/to/published/files/* deploy/'
- 'cd deploy'
- 'git add .'
- 'git commit -m "deployed"'
- 'git push'
注意事项:
- 我还没有查看
mcr.microsoft.com/dotnet/sdk:3.1-focal
图像以查看它是否是 Linux 上的 dotnet(以便 cp
命令起作用),或者它是否是 Windows 图片(需要 copy
和不同的路径分隔符)。
- 此外,图像需要
git
命令存在,否则您必须先安装它。
我有一个接受 Git 自动部署的共享服务器 运行 IIS,我使用的是 .Net 2.2。 使用 SSH 和 WebHooks 将文件推送到 gitlab 存储库后,文件将立即部署到 plesk 网站。 所以这个存储库只会部署,例如:dll 文件。 我在 gitlab 中有另一个存储库。
我可以在管道中通过下面的命令在本地发布。
publish-to-dev:
stage: publish-to-dev
image: mcr.microsoft.com/dotnet/sdk:3.1-focal
script:
- 'dotnet publish -c Release'
问题:如何创建一个管道命令,将部署的文件从代码存储库复制到deployment repository 在部署命令之后dotnet publish
?
编辑
问题已由 Mike bellow 回答,但我在复制文件的过程中遇到错误,我收到如下消息:
$ cp artifacts/emaua/* deploy/
cp: -r not specified; omitting directory 'artifacts/emaua/cs'
cp: -r not specified; omitting directory 'artifacts/emaua/de'
cp: -r not specified; omitting directory 'artifacts/emaua/es'
cp: -r not specified; omitting directory 'artifacts/emaua/fr'
cp: -r not specified; omitting directory 'artifacts/emaua/it'
cp: -r not specified; omitting directory 'artifacts/emaua/ja'
cp: -r not specified; omitting directory 'artifacts/emaua/ko'
cp: -r not specified; omitting directory 'artifacts/emaua/pl'
cp: -r not specified; omitting directory 'artifacts/emaua/pt-BR'
cp: -r not specified; omitting directory 'artifacts/emaua/refs'
cp: -r not specified; omitting directory 'artifacts/emaua/ru'
cp: -r not specified; omitting directory 'artifacts/emaua/runtimes'
cp: -r not specified; omitting directory 'artifacts/emaua/tr'
cp: -r not specified; omitting directory 'artifacts/emaua/wwwroot'
cp: -r not specified; omitting directory 'artifacts/emaua/zh-Hans'
cp: -r not specified; omitting directory 'artifacts/emaua/zh-Hant'
Cleaning up project directory and file based variables
00:00
ERROR: Job failed: exit code 1
通过添加 -r
如 - 'cp -r path/to/published/files/* deploy/'
使用 GitLab 工件
dotnet publish 命令将构建项目,然后将输出文件放入构建系统上的文件夹中。
这将是 运行 publish-to-dev
作业的 GitLab Runner 机器上的一个文件夹。
如果您希望能够从 GitLab 下载 publish
ed 文件,那么您可以使用 artifacts 指定包含已发布文件的目录被压缩并附加到作业完成后。
publish-to-dev:
stage: publish-to-dev
image: mcr.microsoft.com/dotnet/sdk:3.1-focal
script:
- 'dotnet publish -c Release'
artifacts:
paths:
- path/to/published/files/
文件将作为 artifacts.zip
在作业中提供(在右侧栏中)。
注意事项:
这并没有实际上将发布的文件放入部署存储库。为此,您必须下载 ZIP,然后自己将其添加到存储库中。
在你的工作中使用git
或者,如果您想将它们推送到其他存储库,那么事情就会变得更加棘手。你需要做这些事情:
- 为部署存储库 获取access token
- 将其存储在 代码存储库 的 pipeline variable 中 - 在我下面的示例中,它被称为
DEPLOY_REPO_TOKEN
- 在您的工作中检索令牌(使用
variables
),并在您对 部署存储库[=] 执行git
操作时使用它进行身份验证69=] - 在
publish-to-dev
作业中,git clone
部署存储库 (使用令牌),git add
发布的文件,然后git push
,像这样:
variables:
DEPLOY_REPO_TOKEN: $DEPLOY_REPO_TOKEN
DEPLOY_REPO_URL: 'gitlab.example.com/group/project/deployment-repository'
publish-to-dev:
stage: publish-to-dev
image: mcr.microsoft.com/dotnet/sdk:3.1-focal
script:
- 'dotnet publish -c Release'
- `git clone https://oauth2:$DEPLOY_REPO_TOKEN@$DEPLOY_REPO_URL.git deploy'
- 'cp -r path/to/published/files/* deploy/'
- 'cd deploy'
- 'git add .'
- 'git commit -m "deployed"'
- 'git push'
注意事项:
- 我还没有查看
mcr.microsoft.com/dotnet/sdk:3.1-focal
图像以查看它是否是 Linux 上的 dotnet(以便cp
命令起作用),或者它是否是 Windows 图片(需要copy
和不同的路径分隔符)。 - 此外,图像需要
git
命令存在,否则您必须先安装它。