Node 8 container with rsync, python and ssh support
- Create file .gitlab-ci.yml, e.g.:
image: kirbownz/node8-rsync-python-ssh
###### STAGES #################################################################
stages:
  - install
  - test
  - build
  - deploy
###### TEMPLATES ##############################################################
.general: &general
  variables:
    GIT_STRATEGY: fetch
variables:
  # Docker in Docker variables
  DOCKER_HOST: "tcp://docker:2375"
###### JOBS ###################################################################
install:
  <<: *general
  stage: install
  artifacts:
    paths:
      - node_modules
    expire_in: 1 day
  script:
    - rm yarn.lock
    - yarn
test:
  <<: *general
  stage: test
  dependencies:
    - install
  script:
    - yarn test
build:
  <<: *general
  stage: build
  dependencies:
    - install
  artifacts:
    paths:
      - build
    expire_in: 1 week
  script:
    - yarn build
deployment:
  <<: *general
  stage: deploy
  dependencies:
    - build
  script:
    - mkdir -p ~/.ssh
    - echo "${ssh_key}" > ~/.ssh/id_rsa
    - chmod 700 ~/.ssh
    - chmod 600 ~/.ssh/id_rsa
    - echo "${gitconfig}" > ~/.gitconfig
    - ssh-keyscan -t rsa ${demo_host} >> ~/.ssh/known_hosts
    - rsync build/ ${demo_user}@${demo_host}:${demo_path} --delete-after -r -v- Add the variables above in GitLab -> Project -> Settings -> CI / CD -> Variables:
| Type | Key | Value | Protected | Masked | Scope | 
|---|---|---|---|---|---|
| Variable | demo_host | example.com | - | - | All environments | 
| Variable | demo_path | ~/project/dist/ | - | - | All environments | 
| Variable | demo_user | user | - | - | All environments | 
| Variable | gitconfig | [user]name = Firstname Lastnameemail = email@me.com | - | - | All environments | 
| Variable | ssh_key | -----BEGIN RSA... | - | - | All environments |