簡體   English   中英

.env 文件不在 Heroku CI/CD 中,帶有 Gitlab

[英].env file not in Heroku CI/CD with Gitlab

我正在嘗試通過 GitLab 管道將 Node.js 應用程序部署到 Heroku。 以下是我的管道代碼。 我在 GitLab 項目中設置了變量。 似乎.env文件未上傳到 Heroku 應用程序並且應用程序崩潰。

 image: node:latest before_script: - apt-get update -qy - apt-get install -y ruby-dev - gem install dpl # - npm link @angular/cli stages: # - test - production # unit-test: # stage: test # image: trion/ng-cli-karma:latest # script: # - npm install # - ng test # only: # - master production: type: deploy stage: production image: ruby:latest script: - echo "ACCOUNT_SID=$ACCOUNT_SID" >>.env - echo "AUTH_TOKEN=$AUTH_TOKEN" >>.env - echo "API_KEY=$API_KEY" >>.env - echo "API_SECRET=$API_SECRET" >>.env - echo "PHONE_NUMBER=$PHONE_NUMBER" >>.env - echo "sengrid_api=$sengrid_api" >>.env - dpl --provider=heroku --app=$HEROKU_APP_PRODUCTION --api-key=$HEROKU_API_KEY --skip_cleanup only: - master

好像.env文件沒有上傳到 Heroku 應用程序

也不應該。

.env文件是在開發中設置環境變量的便捷機制。 在 Heroku 上,您應該使用config vars ,這是設置環境變量便捷機制,例如

heroku config:set API_KEY=SOME_API_KEY

請注意,如果值包含<|等字符,您可能需要引用它們。 這對您使用的任何 shell 都有意義。

如果您在構建時需要這些變量,您可以將環境變量設置為 GitLab 配置的一部分(提交到您的存儲庫)或組級機密(未提交,並且在某些方面更符合每個環境設置的概念)。

您運行應用程序的每個環境都是不同的,並且應該有自己的環境變量。 這是正常的,並且預計他們不會跟隨您的申請。 這是 Heroku 的 model 設計的基本原則之一

使用 this.yml 文件,我可以構建我的 docker 映像並同時部署到我的兩個 Digital Ocean 液滴,並在它們前面使用負載平衡器。

 # ssh-keyscan gitlab.com >> authorized_keys: use this command to add gitlab ssh keys to sever. Run on server terminal # cat ~/.ssh/id_rsa.pub >> authorized_keys: Run this command on the sever on the terminal. # Both COMMANDS ABOVE ARE necessary. # Have to put.env echo statments in Docker build stage because documents dont persist. Artifacts could be used. stages: - build - deploy variables: TAG_LATEST: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:latest TAG_COMMIT: $CI_REGISTRY_IMAGE/$CI_COMMIT_REF_NAME:$CI_COMMIT_SHA build-App: image: docker:latest stage: build services: - docker:dind script: - echo "ACCOUNT_SID=$ACCOUNT_SID" >>.env - echo "AUTH_TOKEN=$AUTH_TOKEN" >>.env - echo "API_KEY=$API_KEY" >>.env - echo "API_SECRET=$API_SECRET" >>.env - echo "PHONE_NUMBER=$PHONE_NUMBER" >>.env - echo "sengrid_api=$sengrid_api" >>.env - cat.env - docker build. -t $TAG_COMMIT -t $TAG_LATEST - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY - docker push $TAG_COMMIT - docker push $TAG_LATEST deploy-1: image: ubuntu:latest stage: deploy tags: - deployment before_script: - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client git -y )' - eval $(ssh-agent -s) - mkdir -p ~/.ssh - chmod 700 ~/.ssh - echo "$SSH_PRIVATE_KEY" | tr -d '\r' > ~/.ssh/id_rsa - echo "$SSH_PUBLIC_KEY" | tr -d '\r' > ~/.ssh/id_rsa.pub - chmod 600 ~/.ssh/* - chmod 644 ~/.ssh/*.pub - ssh-add - ssh-keyscan gitlab.com >> ~/.ssh/known_hosts - chmod 644 ~/.ssh/known_hosts - ls -ld ~/.ssh/* script: - ssh -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY" - ssh -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "docker pull $TAG_COMMIT" - ssh -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "docker container rm -f my-app || true" - ssh -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP "docker run -d -p 3000:3000 --name my-app $TAG_COMMIT" environment: name: production url: http://134.122.23.185 only: - master deploy-2: image: ubuntu:latest stage: deploy tags: - deployment-backup before_script: - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client git -y )' - eval $(ssh-agent -s) - mkdir -p ~/.ssh - chmod 700 ~/.ssh - echo "$SSH_PRIVATE_KEY_BACKUP" | tr -d '\r' > ~/.ssh/id_rsa - echo "$SSH_PUBLIC_KEY_BACKUP" | tr -d '\r' > ~/.ssh/id_rsa.pub - chmod 600 ~/.ssh/* - chmod 644 ~/.ssh/*.pub - ssh-add - ssh-keyscan gitlab.com >> ~/.ssh/known_hosts - chmod 644 ~/.ssh/known_hosts - ls -ld ~/.ssh/* script: - ssh -o StrictHostKeyChecking=no $SERVER_USER_BACKUP@$SERVER_IP_BACKUP "docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN $CI_REGISTRY" - ssh -o StrictHostKeyChecking=no $SERVER_USER_BACKUP@$SERVER_IP_BACKUP "docker pull $TAG_COMMIT" - ssh -o StrictHostKeyChecking=no $SERVER_USER_BACKUP@$SERVER_IP_BACKUP "docker container rm -f my-app || true" - ssh -o StrictHostKeyChecking=no $SERVER_USER_BACKUP@$SERVER_IP_BACKUP "docker run -d -p 3000:3000 --name my-app $TAG_COMMIT" environment: name: production-backup url: http://161.35.123.72 only: - master

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM