如何使用 gitlab-ci.yml 进行简单的拉取?
How to do a simple pull with gitlab-ci.yml?
每次我从我的本地项目向我的 git 实验室存储库执行 git 推送时,在我的服务器项目中执行 git pull
的正确形式是什么?
这是我的git实验室-ci.yml:
stages:
- test
- deploy
test:
stage: test
only:
- develop
- production
script:
- git checkout develop
- git pull
step-deploy-prod:
stage: deploy
only:
- production
script:
- git checkout production
- git pull
environment: production
when: manual
这是来自 Gitlab CI/CD 工作的消息:
Running with gitlab-runner 13.9.0-rc2 (69c049fd)
on docker-auto-scale 72989761
feature flags: FF_GITLAB_REGISTRY_HELPER_IMAGE:true
Preparing the "docker+machine" executor
00:36
Using Docker executor with image ruby:2.5 ...
Pulling docker image ruby:2.5 ...
Using docker image sha256:ad71c4982eb130f0dabcd6028201d00350863250b5a5cbc991adbf0c4e37b4f2 for ruby:2.5 with digest ruby@sha256:1cb06265c85952ececf5e4990b70abf3146ce798a670c50c1dd3380a6ba470d7 ...
Preparing environment
00:02
Running on runner-72989761-project-25613657-concurrent-0 via runner-72989761-srm-1618105481-ed6a658b...
Getting source from Git repository
00:05
$ eval "$CI_PRE_CLONE_SCRIPT"
Fetching changes with git depth set to 50...
Initialized empty Git repository in /builds/ivanvaleraa/pos_v1/.git/
Created fresh repository.
Checking out eabdc2d3 as develop...
Skipping Git submodules setup
Executing "step_script" stage of the job script
00:02
Using docker image sha256:ad71c4982eb130f0dabcd6028201d00350863250b5a5cbc991adbf0c4e37b4f2 for ruby:2.5 with digest ruby@sha256:1cb06265c85952ececf5e4990b70abf3146ce798a670c50c1dd3380a6ba470d7 ...
$ git checkout develop
Switched to a new branch 'develop'
Branch 'develop' set up to track remote branch 'develop' from 'origin'.
$ git pull
From https://gitlab.com/ivanvaleraa/pos_v1
* [new branch] master -> origin/master
* [new branch] production -> origin/production
Already up to date.
Cleaning up file based variables
00:00
Job succeeded
它说“任务成功”但是我的服务器还没有更新。
我的服务器是 DigitalOcean 中的 Droplet:Ubuntu 20.04 (LTS) x64 安装了 LAMP 环境。我要拉的项目在 PHP.
当前观察到的行为是预期行为,因为 gitlab 运行 的所有命令都在其自己的环境中,而不是在您的服务器上。
要实现预期的行为:
- 了解在
git checkout
命令之前您的环境中已经有 develop/production 代码库,为了确认它您可以在 git checkout
之前包含 ls -al
。因此,git checkout 和 git pull 是多余的,因为 only
配置确保你的管道只有 运行s 用于那些特定的分支。
- 您必须执行以下操作之一:
- 将您的文件从当前 gitlab 环境同步到您的 digitalocean 服务器(使用 rsync)
- 从您的 digitalocean 服务器 (Reference1 and Reference2) 上的 gitlab 管道远程 运行 您的命令
git checkout
和 git pull
。
1 推荐用于需要在部署前构建的代码库。然而,对于您的简单用例 2 就足够了。
每次我从我的本地项目向我的 git 实验室存储库执行 git 推送时,在我的服务器项目中执行 git pull
的正确形式是什么?
这是我的git实验室-ci.yml:
stages:
- test
- deploy
test:
stage: test
only:
- develop
- production
script:
- git checkout develop
- git pull
step-deploy-prod:
stage: deploy
only:
- production
script:
- git checkout production
- git pull
environment: production
when: manual
这是来自 Gitlab CI/CD 工作的消息:
Running with gitlab-runner 13.9.0-rc2 (69c049fd)
on docker-auto-scale 72989761
feature flags: FF_GITLAB_REGISTRY_HELPER_IMAGE:true
Preparing the "docker+machine" executor
00:36
Using Docker executor with image ruby:2.5 ...
Pulling docker image ruby:2.5 ...
Using docker image sha256:ad71c4982eb130f0dabcd6028201d00350863250b5a5cbc991adbf0c4e37b4f2 for ruby:2.5 with digest ruby@sha256:1cb06265c85952ececf5e4990b70abf3146ce798a670c50c1dd3380a6ba470d7 ...
Preparing environment
00:02
Running on runner-72989761-project-25613657-concurrent-0 via runner-72989761-srm-1618105481-ed6a658b...
Getting source from Git repository
00:05
$ eval "$CI_PRE_CLONE_SCRIPT"
Fetching changes with git depth set to 50...
Initialized empty Git repository in /builds/ivanvaleraa/pos_v1/.git/
Created fresh repository.
Checking out eabdc2d3 as develop...
Skipping Git submodules setup
Executing "step_script" stage of the job script
00:02
Using docker image sha256:ad71c4982eb130f0dabcd6028201d00350863250b5a5cbc991adbf0c4e37b4f2 for ruby:2.5 with digest ruby@sha256:1cb06265c85952ececf5e4990b70abf3146ce798a670c50c1dd3380a6ba470d7 ...
$ git checkout develop
Switched to a new branch 'develop'
Branch 'develop' set up to track remote branch 'develop' from 'origin'.
$ git pull
From https://gitlab.com/ivanvaleraa/pos_v1
* [new branch] master -> origin/master
* [new branch] production -> origin/production
Already up to date.
Cleaning up file based variables
00:00
Job succeeded
它说“任务成功”但是我的服务器还没有更新。
我的服务器是 DigitalOcean 中的 Droplet:Ubuntu 20.04 (LTS) x64 安装了 LAMP 环境。我要拉的项目在 PHP.
当前观察到的行为是预期行为,因为 gitlab 运行 的所有命令都在其自己的环境中,而不是在您的服务器上。
要实现预期的行为:
- 了解在
git checkout
命令之前您的环境中已经有 develop/production 代码库,为了确认它您可以在git checkout
之前包含ls -al
。因此,git checkout 和 git pull 是多余的,因为only
配置确保你的管道只有 运行s 用于那些特定的分支。 - 您必须执行以下操作之一:
- 将您的文件从当前 gitlab 环境同步到您的 digitalocean 服务器(使用 rsync)
- 从您的 digitalocean 服务器 (Reference1 and Reference2) 上的 gitlab 管道远程 运行 您的命令
git checkout
和git pull
。
1 推荐用于需要在部署前构建的代码库。然而,对于您的简单用例 2 就足够了。