如何使用Travis,Codedeploy和dockerized Database进行CI

时间:2016-10-28 15:14:43

标签: git mongodb docker-compose travis-ci aws-code-deploy

我目前正在开发基于docker-compose node.js 项目,该项目处理应用程序本身和 mongo 数据库。在数据库中存储了初始用户。

我已经知道它最初应该如何运作:

  1. 发布repo incl。 github上的初始数据库
  2. 触发 travis ci来测试/ lint
  3. 触发 codedeploy 部署到ec2实例
  4. 运行build命令并运行docker-compose up
  5. 现在该应用应该在线。在生产模式下,数据库获得更多数据。再次推送到master时,它应该再次部署,但不能使用github上的初始数据覆盖实时数据。目前整个过程有效但仍覆盖数据。我在本地和远程计算机上运行以下命令,但没有任何成功:

    cd ./data && git ls-files | tr '\n' ' ' | xargs git update-index --assume-unchanged

    我认为 codedeploy 只是拉取当前主分支但忽略了./data目录,因为上面的命令和.gitignore文件。但它似乎并非如此。

    到目前为止还有什么错过的吗?希望您有一些提示和想法如何解决这个问题。

    非常感谢!!
    附:以下是一些信息和文件摘录。

    系统详情

    • Ubuntu 14.04.4 LTS
    • node:v6.9.1
    • npm:3.10.8
    • docker:1.12.3
    • docker-compose:1.8.1
    • git:1.91

    文件结构

    config/                           # Some config files
    data/                             # The database its directory
    src/                              # The source files
    .gitignore
    .travis.yml
    appspec.yml
    docker-compose.yml
    

    以下是一些文件摘录:

    的.gitignore

    data/*
    

    .travis.yml

    language: node_js
    sudo: required
    dist: trusty
    node_js:
    - 6
    before_script:
    - npm install
    script:
    - npm run lint
    branches:
      only:
      - master
    deploy:
      provider: codedeploy
      wait-until-deployed: true
      access_key_id: 'mykeyid'
      secret_access_key: 'myaccesskey'
      application: appname
      deployment_group: grpname
      region: eu-central-1
    

    appspec.yml

    version: 0.0
    os: linux
    files:
      - source: /
        destination: /home/ubuntu/app
    permissions:
      - object: /
        pattern: "**"
        owner: ubuntu
    

    搬运工-compose.yml

    version: '2'
    services:
      server:
        image: node:6
        command: 'npm run go'
        working_dir: '/app'
        volumes:
          - ./:/app
        depends_on:
          - mongo
        ports:
          - '1337:1337'
        environment:
          - NODE_ENV=prod
        links:
          - mongo:mongodb
      mongo:
        image: mongo:latest
        ports:
          - '127.0.0.1:27017:27017'
        volumes:
          - ./data/:/data/db
    

0 个答案:

没有答案