Pipeline - Build and deploy using node / gulp / git ftp

Lt.Kraken July 13, 2017

Hey everyone,

I noticed yesterday that BitBucket supported CICD pipelines, which is an amazing feature i'm eager to use.

I have however some difficulty setting it up.

My building process in general:

  • npm install
  • npm install -g bower
  • bower install
  • npm instlal -g gulp
  • gulp

The gulp command is building the HTML application and places the output to a 'build' folder. After the build has been completed, I'd like the code to be transfered to a directory on my website.

This translates to the following 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

The issue i'm getting is that the git ftp init seems to be uploading the src folder, and not the contents of the 'build' one which is created in the gulp step.

Any ideas?

Kind regards,
Lars

3 answers

0 votes
simoneast April 1, 2019

As I posted in this Github thread, while `git-ftp` is designed to only deploy tracked file changes, it is actually possible to deploy your entire `dist` folder on every commit, even if these files are untracked.

You first need to create a file called `.git-ftp-include` in the root of your repo, and add a single line with the path to your dist folder, ensuring you add `!` to the start of the line:

!.vuepress/dist/

You *should* (in theory) be able to then run `git ftp push` but for some reason this doesn't always upload the `dist` folder. I needed to run `git ftp push --all` which uploads ALL your files (even unchanged ones).

0 votes
Vladi December 25, 2017

I think what you are looking for is adding another parameter

--syncroot : Specifies a local directory to sync from as if it were the git project root path.

0 votes
Matt T July 21, 2017

I found this comment that said No, https://www.savjee.be/2016/06/Deploying-website-to-ftp-or-amazon-s3-with-BitBucket-Pipelines/#comment-3160331772

 

I found your post and I am having the same issue. I'm trying some additional configs adding the build destination .git-ftp-include.

If I get anywhere I'll update with an answer.

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events