使用Gitlab管道将数据推送到ftpserver

使用Gitlab管道将数据推送到ftpserver,gitlab,gitlab-ci,Gitlab,Gitlab Ci,我想使用Gitlab管道部署到ftp服务器。 我尝试了以下代码: deploy: // You can name your task however you like stage: deploy only: - master deploy: script: - apt-get update -qq && apt-get install -y -qq lftp 但我收到一条错误信息。最好的方法是什么?:) 试试这个。Gi

我想使用Gitlab管道部署到ftp服务器。 我尝试了以下代码:

deploy: // You can name your task however you like
    stage: deploy
    only:
        - master
        deploy:
  script:
    - apt-get update -qq && apt-get install -y -qq lftp

但我收到一条错误信息。最好的方法是什么?:)

试试这个。Gitlab中有一个CI Lint工具,可以帮助处理格式错误。linter显示了一个错误,即附加的deploy语句

deploy:
  stage: deploy
  only:
    - master

  script:
    - apt-get update -qq && apt-get install -y -qq lftp
明白了:)


然后在.gitlab-ci.yml文件中添加以下代码

variables:
  HOST: "example.com"
  USERNAME: "yourUserNameHere"
  PASSWORD: "yourPasswordHere"

deploy:
  script:
    - apt-get update -qq && apt-get install -y -qq lftp
    - lftp -c "set ftp:ssl-allow no; open -u $USERNAME,$PASSWORD $HOST; mirror -Rnev ./ ./public_html --ignore-time --parallel=10 --exclude-glob .git* --exclude .git/"
  only:
    - master
上述代码将把Gitlab存储库中最近修改的所有文件推送到FTP服务器根目录中的public_html文件夹中

只需使用FTP凭据更新变量主机、用户名和密码,并将此文件提交到Gitlab存储库,就可以了

现在,每当您在主分支中进行更改时,Gitlab将自动将您的更改推送到远程FTP服务器。

我使用这个

deploy:
  script:
    - apt-get update -qq && apt-get install -y -qq lftp
    - lftp -c "set ftp:ssl-allow no; open -u $FTP_USERNAME,$FTP_PASSWORD $FTP_HOST; mirror -v ./ $FTP_DESTINATION --reverse --ignore-time --parallel=10 --exclude-glob .git* --exclude .git/"
  environment:
    name: production
  only:
    - master

尝试删除
-master
行之后的
deploy:
。这似乎是放错地方了。deploy://您可以随意命名您的任务stage:deploy only:-主脚本:-apt get update-qq&&apt get install-y-qq lftp我更改为这个,但仍然不起作用。我建议不要将您的凭据放在yml文件中,因为它可能会被暴露。相反,请转到设置->CI/CD->(单击)变量->在此处设置主机、密码和用户名变量。然后,您可以在您提到的yml文件中引用它们,但是,通过这种方式,您不会冒暴露它们的风险。
deploy:
  script:
    - apt-get update -qq && apt-get install -y -qq lftp
    - lftp -c "set ftp:ssl-allow no; open -u $FTP_USERNAME,$FTP_PASSWORD $FTP_HOST; mirror -v ./ $FTP_DESTINATION --reverse --ignore-time --parallel=10 --exclude-glob .git* --exclude .git/"
  environment:
    name: production
  only:
    - master