Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 将CircleCI更改部署到Heroku_Git_Heroku_Deployment_Continuous Deployment_Circleci - Fatal编程技术网

Git 将CircleCI更改部署到Heroku

Git 将CircleCI更改部署到Heroku,git,heroku,deployment,continuous-deployment,circleci,Git,Heroku,Deployment,Continuous Deployment,Circleci,我对Git和自动化部署非常陌生,我正在尝试将作为CI的一部分所做的更改部署到Heroku 高层次理念: 将我的代码发送到GitHub CircleCI拿起它做了一些缩小 CircleCI进行了一些测试 CircleCI将我的文件(包括我对它们所做的更改)部署到Heroku 一切都很好,除了我在Heroku上得到的文件似乎是来自Git的文件,而不是修改/缩小的文件 我猜问题来自我的YAML: ... build steps deploy: docker: - image: build

我对Git和自动化部署非常陌生,我正在尝试将作为CI的一部分所做的更改部署到Heroku

高层次理念:

  • 将我的代码发送到GitHub
  • CircleCI拿起它做了一些缩小
  • CircleCI进行了一些测试
  • CircleCI将我的文件(包括我对它们所做的更改)部署到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
    
    然而,我真的不知道如何改变它

    • 直接将修改后的文件发送给Heroku是一种不好的做法吗?我是否应该首先将它们提交到GitHub的特别发行版文件夹中,然后将其发送给Heroku?怎么做
    • 这只是我的YAML中缺少的东西吗
    填写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
    

    您的CI工具不应该为Heroku构建应用程序。(当然,它可以构建它来运行测试。)

    Heroku将自行构建应用程序。推送你的源文件,让它做它的事情。您可以使用Node.js buildpack,这是运行build命令的好地方:

    "scripts": {
      "start": "node index.js",
      "test": "mocha",
      "postinstall": "npm rum build"
    }
    
    对缩小的文件(与未缩小的文件相比)运行测试可能会让您感到更安全,但您实际上是在测试缩小工具以及您自己的代码。理想情况下,您应该使用经过良好测试的工具,并将自己的测试集中在自己的代码上。(如果您仍然喜欢在小型化代码上运行,则不会造成太大危害。)


    如果你想确保测试对你在HeloCu上的代码有一点精确的复制(即只建立一次),考虑通过A.

    < P>建立和部署你的应用程序。我最近写了一个教程,用于用CalCCI、HeloCu、DOCKER和FastAPI建立一个CI /CD。虽然您没有使用FastAPI,但大多数过程都是相同的


    请随意查看:

    我添加了完整的YAML,目标是基于NodeJS的。通过构建,我的意思主要是缩小客户端javascript和CSS文件,对我来说,这似乎是(IMO)CI工作的一部分,特别是因为我想在缩小的文件上运行UI测试