2016-02-17 5 views
11

私はNodeJSで開発したAPIを持っており、.gitlab-ci.ymlファイルを使って継続的な統合を成功裏にセットアップしました。次の段階は、すべてのテストがマスターブランチを通過する場合、Herokuへの継続的なデプロイメントをセットアップすることです。GitLabを使ったNodeJSの継続的なデプロイ

RubyとPythonアプリケーションのデプロイメントについては多くのチュートリアルがありますが、NodeJSでは何もありません。現在、私の.gitlab-ci.ymlファイルは次のようになります。

image: node:latest 

job1: 
    script: "ls -l" 

test: 
    script: "npm install;npm test" 

production: 
    type: deploy 
    script: 
    - npm install 
    - npm start 
    - gem install dpl 
    - dpl --provider=heroku --app=my-first-nodejs --api-key=XXXXXXXXXX 
    only: 
    - master 

RubyやPythonのチュートリアル展開するdplツールを使用していますが、どのように私は、サーバー上のNodeJSスクリプトが一度に展開を開始することができますか?

生産セクションを追加してそれを押した後、テストは実行されてパスしますが、デプロイメントステージは保留中に突き当たります。コンソールは空白です。誰もNodeJSのための成功したCDスクリプトを設定しましたか?

+1

こんにちは、現在の解決策をこれに共有できますか?ありがとう:) –

答えて

6

これは最長の回答ではありませんが、これはmay help youです。それは今までに消える場合

はここでコンテンツです:

image: node:argon 

    before_script: 
    - apt-get -qq update 
    - apt-get -qq install -y python2.7 python2.7-dev build-essential make gcc g++ libicu-dev 
    - npm -g install npm --silent 
    - "echo -e \"export default {CLIENT_ID: '$CLIENT_ID'}\" > app/scripts/settings.js" 
    - npm set progress=false 
    - npm install --silent 

    stages: 
    - test 
    - build 
    - clean_up 

    run_tests: 
    stage: test 
    script: 
     - npm test 

    build_and_deploy_prod: 
    stage: build 
    script: 
     - npm run build 
     - mkdir dist/build 
     - tar czfC dist/build/latest.tar.gz dist/$CI_BUILD_REF_NAME/ . 
     - tar czfC dist/build/$CI_BUILD_REF.tar.gz dist/$CI_BUILD_REF_NAME/ . 
     - apt-get install -yqq ruby ruby-dev 
     - gem install dpl 
     - dpl --skip_cleanup --provider=s3 --region=eu-west-1 --access-key-id=$AWS_ACCESS_KEY --secret-access-key=$AWS_SECRET_KEY --bucket=$AWS_BUCKET --local-dir=dist/build/ --upload-dir=$CI_BUILD_REF_NAME 
    artifacts: 
     paths: 
     - dist/$CI_BUILD_REF_NAME/ 
    only: 
     - master 
     - develop 

    clean_up_job: 
    stage: clean_up 
    script: 
     - rm -rf node_modules 
     - rm -rf ~/.node-gyp 
    when: on_failure 
6

あなたはCIのための段階を定義することができますはるかにシンプルなYAMLスクリプトを使用することができます(本番デプロイする前にテストを実行するために)あなたが使用することができますHerokuの展開段階では別のイメージノードアプリケーションの場合、デフォルトイメージをnode:latestとして定義します。次に、dplを使用した本番環境では、ルビ画像を使用できます。

image: node:latest 

stages: 
    - job1 
    - test 
    - production 

job1: 
    stage: job1 
    script: "ls -l" 

test: 
    stage: test 
    script: 
    - npm install 
    - npm test 
    artifacts: 
    paths: 
     - dist/ 

production: 
    type: deploy 
    stage: production 
    image: ruby:latest 
    script: 
    - apt-get update -qy 
    - apt-get install -y ruby-dev 
    - gem install dpl 
    - dpl --provider=heroku --app=my-first-nodejs --api-key=XXXXXXXXXX 
    only: 
    - master 
+0

xam、質問があります。私はherokuの私のアカウントに '' --api-key'''をつけています。だからgitlabで公開ソースプロジェクトを持っていれば誰でも私のherokuサーバに展開できます。私のgitlab.ciだけが私のapi-keyで展開できることをどうやって確認できますか? –

+2

@CynthiaSanchezあなたはgitlabであなただけが見える変数を追加することができます。あなたのプロジェクトの設定を確認してください。それはどこかにある – Ced

+0

(gitlab> = v10)ですが、環境変数として作成し、 '$ ENV_NAME'でファイルから参照します。 – xam

関連する問題