Gitlab管道阶段需要数小时或数天来显​​示结果(通过,失败) - docker,node app

时间:2017-03-06 07:43:09

标签: node.js docker gitlab docker-compose gitlab-ci

我正在使用Gitlab持续集成(.gitlab-ci.yml)和docker,docker-compose来构建,测试和部署我的节点应用程序,但构建和测试需要花费很多时间来完成gitlab管道(在我的本地docker应用程序构建和测试运行顺利),我认为这不是gitlab ci的正常行为,我认为我缺少一些东西或者我使用了错误的配置

请检查下面的配置(.gitlab-ci.yml)和底部管道的屏幕截图

.gitlab-ci.yml

# GitLab CI Docker Image
image: node:6.10.0

# Build - Build necessary JS files
# Test - Run tests
# Deploy - Deploy application to ElasticBeanstalk
stages:
  - build
  - test
  - deploy

# Configuration
variables:
  POSTGRES_DB: f_ci
  POSTGRES_USER: f_user
  POSTGRES_PASSWORD: sucof

services:
  - postgres:latest

cache:
  paths:
  - node_modules/

# Job: Build
# Installs npm packages
# Passes node_modules/ onto next steps using artifacts
build:linux:
  stage: build
  script:
    - npm install
  artifacts:
    paths:
      - node_modules/
  tags:
    - f-api

# Job: Test
# Run tests against our application
# If this fails, we do not deploy
test:linux:
  stage: test
  variables:
    NODE_ENV: continuous_integration  
  script:
    - ./node_modules/.bin/sequelize db:migrate --env=continuous_integration
    - ./node_modules/.bin/sequelize db:seed:all --env=continuous_integration
    - npm test
  tags:
    - f-api


# Job: Deploy
# Staging environment
deploy:staging:aws:
  stage: deploy
  script:
    - apt-get update -qq
    - apt-get -qq install python3 python3-dev
    - curl -O https://bootstrap.pypa.io/get-pip.py
    - python3 get-pip.py
    - pip install awsebcli --upgrade
    - mkdir ~/.aws/
    - touch ~/.aws/credentials
    - printf "[default]\naws_access_key_id = %s\naws_secret_access_key = %s\n" "$AWS_ACCESS_KEY_ID" "$AWS_SECRET_ACCESS_KEY" >> ~/.aws/credentials
    - touch ~/.aws/config
    - printf "[profile adm-eb-cli]\naws_access_key_id = %s\naws_secret_access_key = %s\n" "$AWS_ACCESS_KEY_ID" "$AWS_SECRET_ACCESS_KEY" >> ~/.aws/config
    - eb deploy f-api-stg
  environment:
    name: staging
    url: http://f-api-stg.gxnvwbgfma.ap-southeast-1.elasticbeanstalk.com
  tags:
    - f-api
  only:
    - staging

# Job: Deploy
# Production environment
deploy:prod:aws:
  stage: deploy
  script:
    - echo "Deploy to production server"
  environment:
    name: production
    url: http://f-api.gxnvwbgfma.ap-southeast-1.elasticbeanstalk.com
  when: manual
  tags:
    - f-api
  only:
    - master

Dockerfile

FROM node:6.10.0

MAINTAINER Theodore GARSON-CORBEAUX <tgcorbeaux@maltem.com>

# Create app directory
ENV HOME=/usr/src/app
RUN mkdir -p $HOME
WORKDIR $HOME

# Install api dependencies
ADD package.json /usr/src/app/package.json
RUN npm install
ADD . /usr/src/app

EXPOSE 3000

CMD ["npm","start"]

搬运工-compose.yml

version: "2.1"

services:

  db_dev:
    image: postgres:latest
    ports:
      - "49170:5432"
    environment:
      - POSTGRES_USER=f_user
      - POSTGRES_PASSWORD=pass
      - POSTGRES_DB=f_dev
    healthcheck:
      test: "exit 0"

  db_test:
    image: postgres:latest
    ports:
      - "49171:5432"
    environment:
      - POSTGRES_USER=f_user
      - POSTGRES_PASSWORD=pass
      - POSTGRES_DB=f_test
    healthcheck:
      test: "exit 0"

  app:
    build: .
    environment:
      - NODE_ENV=development     
    command: "npm start"
    ports:
      - "49160:3000"
    depends_on:
      db_dev:
        condition: service_healthy

  migrate:
    build: .
    environment:
      - NODE_ENV
    command: "./node_modules/.bin/sequelize db:migrate --env ${NODE_ENV}"
    depends_on:
      db_dev:
        condition: service_healthy
      db_test:
        condition: service_healthy
    healthcheck:
      test: "exit 0"

  populate_db:
    build: .
    environment:
      - NODE_ENV
    command: "./node_modules/.bin/sequelize db:seed:all --env ${NODE_ENV}"
    depends_on:
      migrate:
        condition: service_healthy
    healthcheck:
      test: "exit 0"

  depopulate_db:
    build: .
    environment:
      - NODE_ENV
    command: "./node_modules/.bin/sequelize db:seed:undo:all --env ${NODE_ENV}"
    depends_on:
      migrate:
        condition: service_healthy
    healthcheck:
      test: "exit 0"

  test:
    build: .
    environment:
      - NODE_ENV=test  
    command: "npm test"
    depends_on:
      populate_db:
        condition: service_healthy

enter image description here

0 个答案:

没有答案