首页 文章

BitBucket管道 - 使用node / gulp / git ftp构建和部署

提问于
浏览
5

昨天我注意到BitBucket支持CICD管道,这是我渴望使用的一个了不起的功能 .

但是我设置起来有些困难 .

我的建设过程一般:

  • npm安装

  • npm install -g bower

  • 凉亭安装

  • npm install -g gulp

  • gulp

gulp命令正在构建HTML应用程序并将输出放置到 build 文件夹 . 构建完成后,我希望将代码转移到我网站上的目录中 .

这转换为以下 bitbucket.yml

# This is a sample build configuration for JavaScript.
# Check our guides at https://confluence.atlassian.com/x/14UWN for more examples.
# Only use spaces to indent your .yml configuration.
# -----
# You can specify a custom docker image from Docker Hub as your build environment.
image: node:6.9.4

pipelines:
  default:
    - step:
        caches:
          - node
        script: # Modify the commands below to build your repository.
          - npm install
          - npm install -g bower
          - bower install --allow-root
          - npm install -g gulp
          - gulp
          - cd build
          - apt-get update
          - apt-get -qq install git-ftp
          - git ftp init --user $FTP_USERNAME --passwd $FTP_PASSWORD ftp://mywebsite.com/public_html/mydirectory

我得到的问题是 git ftp init 似乎正在上传 src 文件夹,而不是在 gulp 步骤中创建的 build 的内容 .

有任何想法吗?


Update: --syncroot 似乎确实是一个部分修复 . 这意味着它现在尝试上传 build 目录 . 但是,此时的问题是 git ftp 似乎只是同步跟踪文件 .

由于 build 文件夹中的文件是在管道构建期间创建的,因此不适用于这些文件 .

我试图添加一个名为 .git-ftp-include 的文件,如上所述应该传输未跟踪的文件 . 遗憾的是,我没有成功部署我的代码 .

.git-ftp-include 文件内容:build / index.html:/src/index.html

基本上说:只要 src 目录中的 index.html 发生更改,就会从 build syncroot上传 index.html .

2 回答

  • 0

    对于要通过 git-ftp 传输的未跟踪文件, .git-ftp-include 中的语法为!filename .

  • 0

    在这种情况下,我建议您使用 ncftp . 在管道中将是这样的:

    - apt-get -qq install ncftp
    - ncftpput -v -u "$FTP_USERNAME" -p "$FTP_PASSWORD" -R $FTP_HOST /remote build/*
    

相关问题