web-dev-qa-db-ja.com

GitLabを使用したNodeJSの継続的なデプロイ

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

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スクリプトをセットアップしましたか?

13
Mark Tyers

cIのステージを定義できる(本番デプロイの前にテストを実行する)より単純なYAMLスクリプトを使用して、Herokuデプロイステージで別のイメージを使用できます。したがって、ノードアプリの場合、デフォルトのイメージをnode:latestとして定義します。次に、dplを使用した本番環境の展開では、Rubyイメージを使用できます。

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
10
xam

さて、これはこれまでで最も長い答えにはなりませんが、これは あなたを助けるかもしれません です。

消えた場合のコンテンツは次のとおりです。

  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
8
plunntic iam

GitLabを使用したNodeJSの継続的デプロイメントに関する十分に説明された記事:

[〜#〜]リンク[〜#〜]

1
Pulkit chadha