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スクリプトをセットアップしましたか?
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
さて、これはこれまでで最も長い答えにはなりませんが、これは あなたを助けるかもしれません です。
消えた場合のコンテンツは次のとおりです。
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
GitLabを使用したNodeJSの継続的デプロイメントに関する十分に説明された記事: