我对Git和自动化部署还很陌生,我正尝试将作为CI的一部分所做的更改部署到Heroku。
高级构想:
一切正常,除了我在Heroku上获得的文件似乎是Git中的文件,而不是修改/缩小的文件。
我想问题出在我的YAML中:
... build steps
deploy:
docker:
- image: buildpack-deps:trusty
steps:
- checkout
- run:
name: Deploy to Heroku
command: |
git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME.git master
但是,我不确定如何更改它。
完整的YAML作为参考:
version: 2
jobs:
build:
docker:
# https://circleci.com/docs/2.0/circleci-images/
- image: circleci/node:10.10
- image: circleci/postgres:10.5-alpine-postgis
environment:
POSTGRES_USER: myproject
POSTGRES_DB: myproject
working_directory: ~/repo
steps:
- checkout
- restore_cache:
keys:
- v1-dependencies-{{ checksum "package.json" }}
- v1-dependencies-
- run: npm install
..........
- save_cache:
paths:
- node_modules
key: v1-dependencies-{{ checksum "package.json" }}
- run:
name: Unit Testing
command: npm run test_unit
- run:
name: Build client files
command: npm run build
- run:
name: API Testing
command: |
npm start &
npm run test_api
deploy:
docker:
- image: buildpack-deps:trusty
steps:
- checkout
- run:
name: Deploy to Heroku
command: |
git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME.git master
workflows:
version: 2
build-deploy:
jobs:
- build
- deploy:
requires:
- build
filters:
branches:
only: master
答案 0 :(得分:1)
您的CI工具不应该为Heroku构建应用程序。 (当然,它可以构建它以运行测试。)
Heroku会自行构建您的应用程序。推送您的源文件,让它发挥作用。使用Node.js构建包,您可以Heroku will run your postinstall
script, if provided,这是运行构建命令的好地方:
"scripts": {
"start": "node index.js",
"test": "mocha",
"postinstall": "npm rum build"
}
针对缩小文件(相对于未缩小文件)运行测试可能会让您感到更安全,但是您正在有效地测试缩小工具和自己的代码。理想情况下,您应该使用已经过良好测试的工具,并将自己的测试重点放在自己的代码上。 (如果您仍然希望针对缩小的代码运行,则不会造成太大的伤害。)
如果您想确保测试针对您在Heroku上的代码进行逐位精确复制(即仅构建一次),请考虑通过{{3 }}。
答案 1 :(得分:0)
我最近写了一个使用CirclCI,Heroku,Docker和FastAPI设置CI / CD的教程。尽管您没有使用FastAPI,但是大多数过程是相同的。
随时查看:production-ready-ci-cd-using-circleci-docker-heroku-fastapi