I'm using Apt file in Heroku to have graphicmagic package available in Dyno for years.
Now I wanted to set up Heroku Pipeline tests, but the Heroku does not install apt packages in the build for tests at all. So tests using the graphicmagic are failing.
Is there any way to install the apt packages in the build for Heroku Pipeline tests?
Build logs are here:
Application build log (installing Apt packages at the end)
-----> Building on the Heroku-20 stack
-----> Using buildpacks:
1. heroku/nodejs
2. https://github.com/heroku/heroku-buildpack-apt
-----> Node.js app detected
-----> Creating runtime environment
NPM_CONFIG_LOGLEVEL=error
NODE_VERBOSE=false
NODE_ENV=test
NODE_MODULES_CACHE=true
-----> Installing binaries
engines.node (package.json): 10.23.*
engines.npm (package.json): 6.14.8
Resolving node version 10.23.*...
Downloading and installing node 10.23.3...
Bootstrapping npm 6.14.8 (replacing 6.14.11)...
npm 6.14.8 installed
-----> Restoring cache
- node_modules
-----> Installing dependencies
Installing node modules
> PayJsRouter@1.40.0 preinstall /tmp/build_6e87a3cd
> npx npm-force-resolutions
npx: installed 6 in 2.301s
> core-js@2.6.11 postinstall /tmp/build_6e87a3cd/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"
> protobufjs@6.10.1 postinstall /tmp/build_6e87a3cd/node_modules/protobufjs
> node scripts/postinstall
> fsevents@1.2.13 install /tmp/build_6e87a3cd/node_modules/babel/node_modules/fsevents
> node install.js
Skipping 'fsevents' build as platform linux is not supported
> fsevents@1.2.13 install /tmp/build_6e87a3cd/node_modules/steal-tools/node_modules/fsevents
> node install.js
Skipping 'fsevents' build as platform linux is not supported
> fsevents@1.2.13 install /tmp/build_6e87a3cd/node_modules/nodemon/node_modules/fsevents
> node install.js
Skipping 'fsevents' build as platform linux is not supported
> nodemon@1.19.4 postinstall /tmp/build_6e87a3cd/node_modules/nodemon
> node bin/postinstall || exit 0
Love nodemon? You can now support the project via the open collective:
> https://opencollective.com/nodemon/donate
> PayJsRouter@1.40.0 postinstall /tmp/build_6e87a3cd
> npm run build-steal && npm run build-lodash && npm run build-prepare
> PayJsRouter@1.40.0 build-steal /tmp/build_6e87a3cd
> node ./scripts/buildSteal
> PayJsRouter@1.40.0 build-lodash /tmp/build_6e87a3cd
> node ./node_modules/lodash-cli/bin/lodash compat exports=umd modularize --development --output node_modules/lodash/
Created 420 modules in 13.616 seconds.
> PayJsRouter@1.40.0 build-prepare /tmp/build_6e87a3cd
> mkdir -p ./public/dist/templates
added 1681 packages in 66.104s
-----> Build
Running build
> PayJsRouter@1.40.0 build /tmp/build_6e87a3cd
> grunt steal-build
... MANY LINES OF BUILD OUTPUT
Build was successful.
Done.
-----> Caching build
- node_modules
-----> Pruning devDependencies
Skipping because NODE_ENV is 'test'
-----> Cleanup
Running heroku-cleanup
> PayJsRouter@1.40.0 heroku-cleanup /tmp/build_6e87a3cd
> npm prune --production
added 458 packages from 863 contributors, removed 1041 packages and audited 643 packages in 28.358s
38 packages are looking for funding
run `npm fund` for details
found 44 vulnerabilities (13 low, 11 moderate, 19 high, 1 critical)
run `npm audit fix` to fix them, or `npm audit` for details
-----> Build succeeded!
-----> Apt app detected
-----> Reusing cache
-----> Updating apt caches
Get:1 http://apt.postgresql.org/pub/repos/apt focal-pgdg InRelease [81.6 kB]
Hit:2 http://archive.ubuntu.com/ubuntu focal InRelease
Get:3 http://archive.ubuntu.com/ubuntu focal-security InRelease [109 kB]
Get:4 http://apt.postgresql.org/pub/repos/apt focal-pgdg/main amd64 Packages [310 kB]
Get:5 http://archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB]
Get:6 http://archive.ubuntu.com/ubuntu focal-security/main amd64 Packages [778 kB]
Get:7 http://archive.ubuntu.com/ubuntu focal-security/universe amd64 Packages [684 kB]
Get:8 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [1,194 kB]
Get:9 http://archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages [952 kB]
Fetched 4,222 kB in 1s (3,431 kB/s)
Reading package lists...
-----> Fetching .debs for graphicsmagick
Reading package lists...
Building dependency tree...
The following additional packages will be installed:
libgraphicsmagick-q16-3
Suggested packages:
graphicsmagick-dbg
The following NEW packages will be installed:
graphicsmagick libgraphicsmagick-q16-3
0 upgraded, 2 newly installed, 0 to remove and 20 not upgraded.
Need to get 0 B/1,794 kB of archives.
After this operation, 8,566 kB of additional disk space will be used.
Download complete and in download only mode
-----> Fetching .debs for libpng-dev
Reading package lists...
Building dependency tree...
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 20 not upgraded.
Need to get 0 B/175 kB of archives.
After this operation, 0 B of additional disk space will be used.
Download complete and in download only mode
-----> Fetching .debs for zlib1g-dev
Reading package lists...
Building dependency tree...
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 20 not upgraded.
Need to get 0 B/155 kB of archives.
After this operation, 0 B of additional disk space will be used.
Download complete and in download only mode
-----> Installing graphicsmagick_1.4+really1.3.35-1_amd64.deb
-----> Installing libgraphicsmagick-q16-3_1.4+really1.3.35-1_amd64.deb
-----> Installing libpng-dev_1.6.37-2_amd64.deb
-----> Installing zlib1g-dev_1%3a1.2.11.dfsg-2ubuntu1.2_amd64.deb
-----> Writing profile script
-----> Rewrite package-config files
-----> Discovering process types
Procfile declares types -> web, worker
-----> Compressing...
Done: 82.1M
-----> Launching...
Released v823
https://xyz.herokuapp.com/ deployed to Heroku
Pipeline test build log (installing Apt packages is not present)
-----> Building on the Heroku-20 stack
-----> Auto detecting buildpacks...
buildpack detected
-----> Node.js app detected
-----> Creating runtime environment
NPM_CONFIG_PRODUCTION=false
NPM_CONFIG_LOGLEVEL=error
NODE_VERBOSE=false
NODE_ENV=testing
NODE_MODULES_CACHE=true
-----> Installing binaries
engines.node (package.json): 10.23.*
engines.npm (package.json): 6.14.8
Resolving node version 10.23.*...
Downloading and installing node 10.23.3...
Bootstrapping npm 6.14.8 (replacing 6.14.11)...
npm 6.14.8 installed
-----> Restoring cache
- node_modules
-----> Installing dependencies
Installing node modules
.
> PayJsRouter@1.40.0 preinstall /app
> npx npm-force-resolutions
npx: installed 6 in 2.844s
> core-js@2.6.11 postinstall /app/node_modules/core-js
> node -e "try{require('./postinstall')}catch(e){}"
> protobufjs@6.10.1 postinstall /app/node_modules/protobufjs
> node scripts/postinstall
> fsevents@1.2.13 install /app/node_modules/babel/node_modules/fsevents
> node install.js
Skipping 'fsevents' build as platform linux is not supported
> fsevents@1.2.13 install /app/node_modules/steal-tools/node_modules/fsevents
> node install.js
Skipping 'fsevents' build as platform linux is not supported
> fsevents@1.2.13 install /app/node_modules/nodemon/node_modules/fsevents
> node install.js
Skipping 'fsevents' build as platform linux is not supported
> nodemon@1.19.4 postinstall /app/node_modules/nodemon
> node bin/postinstall || exit 0
Love nodemon? You can now support the project via the open collective:
> https://opencollective.com/nodemon/donate
> PayJsRouter@1.40.0 postinstall /app
> npm run build-steal && npm run build-lodash && npm run build-prepare
> PayJsRouter@1.40.0 build-steal /app
> node ./scripts/buildSteal
> PayJsRouter@1.40.0 build-lodash /app
> node ./node_modules/lodash-cli/bin/lodash compat exports=umd modularize --development --output node_modules/lodash/
Created 420 modules in 17.29 seconds.
> PayJsRouter@1.40.0 build-prepare /app
> mkdir -p ./public/dist/templates
added 1738 packages in 85.344s
-----> Build
Running build
> PayJsRouter@1.40.0 build /app
> grunt steal-build
... MANY LINES OF BUILD OUTPUT
Build was successful.
Done.
-----> Caching build
- node_modules
-----> Pruning devDependencies
Skipping because NODE_ENV is not 'production'
-----> Build succeeded!
-----> No test-setup command provided. Skipping.
It is autodetecting. Your Apt buildpack is not recognized:
-----> Auto detecting buildpacks...
buildpack detected
-----> Node.js app detected
For your application setting the buildpack with heroku buildpacks:set
is sufficient.
For the pipeline you need an app.json
with your buildpacks:
{
"buildpacks": [
{
"url": "heroku/nodejs"
},
{
"url": "https://github.com/heroku/heroku-buildpack-apt"
}
]
}
Ressources to read:
https://devcenter.heroku.com/articles/heroku-ci and https://devcenter.heroku.com/articles/app-json-schema#buildpacks