部署Vue+;作为单个二进制文件转到Heroku

部署Vue+;作为单个二进制文件转到Heroku,heroku,gitlab,gitlab-ci,Heroku,Gitlab,Gitlab Ci,我已经合并了我的独立前端和后端回购到一个单一的。我的gitlab ci管道在单独的项目中工作得非常好,但我无法将其作为单个项目来工作 单个后端项目的管道: ... staging: image: ruby stage: deployment script: - apt-get update -qy - apt-get install -y ruby-dev - gem install dpl - dpl --provider=heroku --app

我已经合并了我的独立前端和后端回购到一个单一的。我的gitlab ci管道在单独的项目中工作得非常好,但我无法将其作为单个项目来工作

单个后端项目的管道:

...

staging:
  image: ruby
  stage: deployment
  script:
    - apt-get update -qy
    - apt-get install -y ruby-dev
    - gem install dpl
    - dpl --provider=heroku --app=$HEROKU_APP_STAGING --api-key=$HEROKU_API_KEY
  environment:
    name: Staging
  only:
    - staging
...

build site:
  image: node
  stage: build
  script:
    - yarn install --progress=false
    - yarn build
  artifacts:
    expire_in: 1 week
    paths:
      - dist

staging:
  image: ruby
  stage: deployment
  script:
    - apt-get update -qy
    - apt-get install -y ruby-dev
    - gem install dpl
    - dpl --provider=heroku --app=$$HEROKU_APP_STAGING --api-key=$HEROKU_API_KEY
  environment:
    name: Staging
  only:
    - staging
单个前端项目的管道:

...

staging:
  image: ruby
  stage: deployment
  script:
    - apt-get update -qy
    - apt-get install -y ruby-dev
    - gem install dpl
    - dpl --provider=heroku --app=$HEROKU_APP_STAGING --api-key=$HEROKU_API_KEY
  environment:
    name: Staging
  only:
    - staging
...

build site:
  image: node
  stage: build
  script:
    - yarn install --progress=false
    - yarn build
  artifacts:
    expire_in: 1 week
    paths:
      - dist

staging:
  image: ruby
  stage: deployment
  script:
    - apt-get update -qy
    - apt-get install -y ruby-dev
    - gem install dpl
    - dpl --provider=heroku --app=$$HEROKU_APP_STAGING --api-key=$HEROKU_API_KEY
  environment:
    name: Staging
  only:
    - staging
然后我决定将这两个项目合并在一起。项目结构如下所示:

Project
 |
 +-- backend
 |    
 +-- frontend
 |  |  
 |  +-- dist
 |  |  
 |  +-- package.json
 |    
 +-- Procfile
 |    
 +-- .gitlab-ci.yml
Go后端以静态路由为Vue前端提供服务。因此,我需要在后端之前构建前端,然后在后端构建中引用生成的dist目录

这是程序文件:

web: backend
这是我的gitlab-ci.yml的当前状态:

...

build frontend:
  image: node
  stage: frontend
  script:
    - cd frontend
    - yarn install --progress=false
    - yarn build
  artifacts:
    name: "frontend"
    expire_in: 1 week
    paths:
      - frontend/dist

build backend:
  image: golang
  stage: backend
  script:
    - cd backend
    - go build
    - ls -la
  artifacts:
    name: "backend"
    expire_in: 1 week
    paths:
      - backend/backend

staging:
  image: ruby
  stage: deployment
  script:
    - apt-get update -qy
    - apt-get install -y ruby-dev
    - gem install dpl
    - dpl  --skip_cleanup --provider=heroku --app=$HEROKU_APP_STAGING --api-key=$HEROKU_API_KEY
  environment:
    name: Staging
  only:
    - staging
此版本的管道在部署时失败,出现以下错误:

-----> App not compatible with buildpack: https://buildpack-registry.s3.amazonaws.com/buildpacks/heroku/go.tgz
       More info: https://devcenter.heroku.com/articles/buildpacks#detection-failure
 !     Push failed
deploy failed
没有进一步的信息来检查到底上传了什么。据我理解,它应该是二进制的,不应该失败

我做错了什么或者我的误解是什么

编辑: 更新的暂存部分:

staging:
  image: ruby
  stage: deployment
  script:
    - ./detect backend
    - cd backend
    - apt-get update -qy
    - apt-get install -y ruby-dev
    - gem install dpl
    - ls -la ../frontend/dist
    - ls -la
    - dpl --skip_cleanup --provider=heroku --app=$HEROKU_APP_STAGING --api-key=$HEROKU_API_KEY
    - ls -la
返回:

$ ./detect backend
Go

$ ls -la
total 30896
drwxrwxrwx 5 root root     4096 Sep 21 11:39 .
drwxrwxrwx 5 root root     4096 Sep 21 11:03 ..
drwxrwxrwx 2 root root     4096 Sep 18 15:03 controllers
-rw-rw-rw- 1 root root     1306 Sep 21 10:11 go.mod
-rw-rw-rw- 1 root root    56556 Sep 21 10:11 go.sum
-rw-rw-rw- 1 root root      251 Sep 18 13:14 main.go
-rwxr-xr-x 1 root root 31527936 Sep 21 11:38 backend
drwxrwxrwx 2 root root     4096 Sep 18 13:14 middleware
drwxrwxrwx 2 root root     4096 Sep 18 13:14 model

...
       Detected the following main packages to install:
            backend
       
-----> Running: go install -v -tags heroku backend 
...

github.com/jackc/pgx/v4
github.com/jackc/pgx/v4/stdlib
 !     Push rejected, failed to compile Go app.
 !     Push failed
deploy failed

运行此
detect
脚本是为了检查您的项目是否与heroku-buildpack-go兼容。嗨,我签出了您引用的脚本。正如您在我的编辑中看到的,它与heroku buildpack兼容。你知道为什么这一推现在被拒绝了吗?