Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gitlab CI Web部署_Gitlab_Gitlab Ci_Gitlab Ci Runner - Fatal编程技术网

Gitlab CI Web部署

Gitlab CI Web部署,gitlab,gitlab-ci,gitlab-ci-runner,Gitlab,Gitlab Ci,Gitlab Ci Runner,因此,我们目前正在远离我们当前的部署提供商:Beanstalk,这很好,但我们处于顶层,我们一直在耗尽空间或达到存储库的极限。因此,我们正在搬迁,因此请不要建议任何其他SaaS提供商 我个人将Gitlab用于我自己的项目和一些公司项目,令人惊讶的是,我们在公司大楼的本地服务器上使用了自托管版本 我们已经有了CI设置,目前正在使用以下部署代码(我已经缩小了位,只用于开发部署)-这在我们部署到现有linux服务器时使用shell executer进行部署 variables: HOSTNAME:

因此,我们目前正在远离我们当前的部署提供商:Beanstalk,这很好,但我们处于顶层,我们一直在耗尽空间或达到存储库的极限。因此,我们正在搬迁,因此请不要建议任何其他SaaS提供商

我个人将Gitlab用于我自己的项目和一些公司项目,令人惊讶的是,我们在公司大楼的本地服务器上使用了自托管版本

我们已经有了CI设置,目前正在使用以下部署代码(我已经缩小了位,只用于开发部署)-这在我们部署到现有linux服务器时使用shell executer进行部署

variables:
  HOSTNAME: '<hostname>'
  USERNAME: '<username>'
  PASSWORD: '<password>'
  PATH_DEV: '/path/to/www'

# Define the stages (we can add as many as we want)
stages:
  # - build
  - deploy

# The code for development deployment
deploy_dev:
  stage: deploy
  script:
    - echo "Deploying to development environment..."
    - rm .gitlab-ci.yml
    - rsync -urltvz --filter=':- .gitignore' --exclude=".git" -e "sshpass -p"$PASSWORD" ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null" * $USERNAME@$HOSTNAME:$PATH_DEV
    - echo "Finished deploying."
  environment:
    name: Development
    url: http://dev.domain.com
  only:
    - envdev
变量:
主机名:“”
用户名:“”
密码:“”
路径_DEV:“/PATH/to/www”
#定义阶段(我们可以添加任意数量的阶段)
阶段:
#-建造
-部署
#开发部署代码
部署开发人员:
阶段:部署
脚本:
-echo“部署到开发环境…”
-rm.gitlab-ci.yml
-rsync-urltvz--filter=':-.gitignore'--exclude=“.git”-e“sshpass-p”$PASSWORD”ssh-o StrictHostKeyChecking=no-o UserKnownHostsFile=/dev/null”*$USERNAME@$HOSTNAME:$PATH\u dev
-echo“已完成部署”
环境:
名称:发展
网址:http://dev.domain.com
仅:
-恩夫德夫
问题:

当我们使用上面的代码来部署它时,它是完美的,并且工作得非常好,它在优化后部署了所有的代码等等,但是我们在这里发现了一个小错误

当您删除一个文件时,rsync命令将不会删除该文件,现在我进行了一些搜索,找到了--remove标志,您可以添加它,它工作了--但是它也删除了所有用户上传的内容。现在我在过滤中添加了.gitignore,这样它就可以忽略它们中的一些文件(通常是用户生成的)或配置文件或/和库(npm等)。在用户开始使用我们框架中的media manager上载文件之前,这是正常的。media manager存储在一个不在.gitignore文件中的文件夹中,它不能上载文件,因为它包含其他文件,因为我们也在其中添加了自己的文件,因此用户可以编辑这些文件,所以现在我不确定如何管理这些文件

我们正在寻找的是一个CI设置,它将文件更改上传到服务器,这样它将搜索最新的提交,并找到已更改的最新文件,然后只向上推送这些文件。当然,我仍然希望使用Gitlab CI来实现这一点,所以任何想法、示例或教程都会令人惊叹

提前谢谢

~Danny

希望它能帮助: 看起来这个工具是为php项目设计的,但我认为它可以使用其他web部署

工作原理: PHPloy在服务器上存储名为.revision的文件。此文件包含已部署到该服务器的提交的哈希值。当您运行phploy时,它会下载该文件,并将其中的提交引用与您尝试部署的提交进行比较,以确定要上载哪些文件。PHPloy还为存储库中的每个子模块存储一个.revision文件