Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
H
heroku-buildpack-nodejs
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Python-Dev
heroku-buildpack-nodejs
Commits
58ed00de
Unverified
Commit
58ed00de
authored
Jan 24, 2019
by
Jeremy Morrell
Committed by
GitHub
Jan 24, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add bin/compile to shellcheck check (#602)
* Add bin/compile to shellcheck check
parent
5a76f5f1
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
69 additions
and
34 deletions
+69
-34
.travis.yml
.travis.yml
+1
-0
compile
bin/compile
+50
-30
cache.sh
lib/cache.sh
+11
-4
makefile
makefile
+7
-0
No files found.
.travis.yml
View file @
58ed00de
...
@@ -3,6 +3,7 @@ sudo: required
...
@@ -3,6 +3,7 @@ sudo: required
services
:
services
:
-
docker
-
docker
env
:
env
:
-
TEST=shellcheck
-
TEST=heroku-18 STACK=heroku-18
-
TEST=heroku-18 STACK=heroku-18
-
TEST=heroku-16 STACK=heroku-16
-
TEST=heroku-16 STACK=heroku-16
-
TEST=cedar-14 STACK=cedar-14
-
TEST=cedar-14 STACK=cedar-14
...
...
bin/compile
View file @
58ed00de
...
@@ -9,6 +9,8 @@ unset GIT_DIR # Avoid GIT_DIR leak from previous build steps
...
@@ -9,6 +9,8 @@ unset GIT_DIR # Avoid GIT_DIR leak from previous build steps
### Constants
### Constants
# This is used by the buildpack stdlib for metrics
# shellcheck disable=SC2034
BPLOG_PREFIX
=
"buildpack.nodejs"
BPLOG_PREFIX
=
"buildpack.nodejs"
### Configure directories
### Configure directories
...
@@ -16,22 +18,32 @@ BPLOG_PREFIX="buildpack.nodejs"
...
@@ -16,22 +18,32 @@ BPLOG_PREFIX="buildpack.nodejs"
BUILD_DIR
=
${
1
:-}
BUILD_DIR
=
${
1
:-}
CACHE_DIR
=
${
2
:-}
CACHE_DIR
=
${
2
:-}
ENV_DIR
=
${
3
:-}
ENV_DIR
=
${
3
:-}
BP_DIR
=
$(
cd
"
$(
dirname
${
0
:-}
)
"
;
cd
..
;
pwd
)
BP_DIR
=
$(
cd
"
$(
dirname
"
${
0
:-}
"
)
"
;
cd
..
;
pwd
)
STDLIB_FILE
=
$(
mktemp
-t
stdlib.XXXXX
)
STDLIB_FILE
=
$(
mktemp
-t
stdlib.XXXXX
)
### Load dependencies
### Load dependencies
curl
--silent
--retry
5
--retry-max-time
15
'https://lang-common.s3.amazonaws.com/buildpack-stdlib/v7/stdlib.sh'
>
"
$STDLIB_FILE
"
curl
--silent
--retry
5
--retry-max-time
15
'https://lang-common.s3.amazonaws.com/buildpack-stdlib/v7/stdlib.sh'
>
"
$STDLIB_FILE
"
# shellcheck source=/dev/null
source
"
$STDLIB_FILE
"
source
"
$STDLIB_FILE
"
source
$BP_DIR
/lib/output.sh
# shellcheck source=lib/output.sh
source
$BP_DIR
/lib/monitor.sh
source
"
$BP_DIR
/lib/output.sh"
source
$BP_DIR
/lib/json.sh
# shellcheck source=lib/monitor.sh
source
$BP_DIR
/lib/failure.sh
source
"
$BP_DIR
/lib/monitor.sh"
source
$BP_DIR
/lib/environment.sh
# shellcheck source=lib/json.sh
source
$BP_DIR
/lib/binaries.sh
source
"
$BP_DIR
/lib/json.sh"
source
$BP_DIR
/lib/cache.sh
# shellcheck source=lib/failure.sh
source
$BP_DIR
/lib/dependencies.sh
source
"
$BP_DIR
/lib/failure.sh"
source
$BP_DIR
/lib/plugin.sh
# shellcheck source=lib/environment.sh
source
"
$BP_DIR
/lib/environment.sh"
# shellcheck source=lib/binaries.sh
source
"
$BP_DIR
/lib/binaries.sh"
# shellcheck source=lib/cache.sh
source
"
$BP_DIR
/lib/cache.sh"
# shellcheck source=lib/dependencies.sh
source
"
$BP_DIR
/lib/dependencies.sh"
# shellcheck source=lib/plugin.sh
source
"
$BP_DIR
/lib/plugin.sh"
export
PATH
=
"
$BUILD_DIR
/.heroku/node/bin:
$BUILD_DIR
/.heroku/yarn/bin"
:
$PATH
export
PATH
=
"
$BUILD_DIR
/.heroku/node/bin:
$BUILD_DIR
/.heroku/yarn/bin"
:
$PATH
...
@@ -73,7 +85,7 @@ warn_missing_package_json "$BUILD_DIR"
...
@@ -73,7 +85,7 @@ warn_missing_package_json "$BUILD_DIR"
### Behavior flags
### Behavior flags
[
!
"
$NEW_BUILD_SCRIPT_BEHAVIOR
"
]
&&
NEW_BUILD_SCRIPT_BEHAVIOR
=
$(
read_json
"
$BUILD_DIR
/package.json"
".[
\"
heroku-run-build-script
\"
]"
)
[
!
"
$NEW_BUILD_SCRIPT_BEHAVIOR
"
]
&&
NEW_BUILD_SCRIPT_BEHAVIOR
=
$(
read_json
"
$BUILD_DIR
/package.json"
".[
\"
heroku-run-build-script
\"
]"
)
warn_build_script_behavior_opt_in
$NEW_BUILD_SCRIPT_BEHAVIOR
| output
"
$LOG_FILE
"
warn_build_script_behavior_opt_in
"
$NEW_BUILD_SCRIPT_BEHAVIOR
"
| output
"
$LOG_FILE
"
### Compile
### Compile
...
@@ -87,20 +99,23 @@ create_env() {
...
@@ -87,20 +99,23 @@ create_env() {
header
"Creating runtime environment"
| output
"
$LOG_FILE
"
header
"Creating runtime environment"
| output
"
$LOG_FILE
"
mkdir
-p
"
$BUILD_DIR
/.heroku/node/"
mkdir
-p
"
$BUILD_DIR
/.heroku/node/"
cd
$BUILD_DIR
cd
"
$BUILD_DIR
"
create_env
# can't pipe the whole thing because piping causes subshells, preventing exports
create_env
# can't pipe the whole thing because piping causes subshells, preventing exports
list_node_config | output
"
$LOG_FILE
"
list_node_config | output
"
$LOG_FILE
"
create_build_env
create_build_env
### Configure package manager cache directories
### Configure package manager cache directories
[
!
"
$YARN_CACHE_FOLDER
"
]
&&
export
YARN_CACHE_FOLDER
=
$(
mktemp
-d
-t
yarncache.XXXXX
)
[
!
"
$YARN_CACHE_FOLDER
"
]
&&
YARN_CACHE_FOLDER
=
$(
mktemp
-d
-t
yarncache.XXXXX
)
[
!
"
$NPM_CONFIG_CACHE
"
]
&&
export
NPM_CONFIG_CACHE
=
$(
mktemp
-d
-t
npmcache.XXXXX
)
[
!
"
$NPM_CONFIG_CACHE
"
]
&&
NPM_CONFIG_CACHE
=
$(
mktemp
-d
-t
npmcache.XXXXX
)
export
YARN_CACHE_FOLDER NPM_CONFIG_CACHE
install_bins
()
{
install_bins
()
{
local
node_engine
=
$(
read_json
"
$BUILD_DIR
/package.json"
".engines.node"
)
local
node_engine iojs_engine npm_engine yarn_engine npm_version node_version
local
iojs_engine
=
$(
read_json
"
$BUILD_DIR
/package.json"
".engines.iojs"
)
local
npm_engine
=
$(
read_json
"
$BUILD_DIR
/package.json"
".engines.npm"
)
node_engine
=
$(
read_json
"
$BUILD_DIR
/package.json"
".engines.node"
)
local
yarn_engine
=
$(
read_json
"
$BUILD_DIR
/package.json"
".engines.yarn"
)
iojs_engine
=
$(
read_json
"
$BUILD_DIR
/package.json"
".engines.iojs"
)
npm_engine
=
$(
read_json
"
$BUILD_DIR
/package.json"
".engines.npm"
)
yarn_engine
=
$(
read_json
"
$BUILD_DIR
/package.json"
".engines.yarn"
)
if
[
-n
"
$iojs_engine
"
]
;
then
if
[
-n
"
$iojs_engine
"
]
;
then
echo
"engines.iojs (package.json):
$iojs_engine
(iojs)"
echo
"engines.iojs (package.json):
$iojs_engine
(iojs)"
...
@@ -116,15 +131,15 @@ install_bins() {
...
@@ -116,15 +131,15 @@ install_bins() {
if
[
-n
"
$iojs_engine
"
]
;
then
if
[
-n
"
$iojs_engine
"
]
;
then
warn_node_engine
"
$iojs_engine
"
warn_node_engine
"
$iojs_engine
"
install_iojs
"
$iojs_engine
"
"
$BUILD_DIR
/.heroku/node"
install_iojs
"
$iojs_engine
"
"
$BUILD_DIR
/.heroku/node"
local
npm_version
=
"
$(
npm
--version
)
"
npm_version
=
"
$(
npm
--version
)
"
local
node_version
=
"
$(
node
--version
)
"
node_version
=
"
$(
node
--version
)
"
echo
"Using bundled npm version for iojs compatibility:
$npm_version
"
echo
"Using bundled npm version for iojs compatibility:
$npm_version
"
mcount
"version.iojs.
$node_version
"
mcount
"version.iojs.
$node_version
"
else
else
warn_node_engine
"
$node_engine
"
warn_node_engine
"
$node_engine
"
monitor
"install-node-binary"
install_nodejs
"
$node_engine
"
"
$BUILD_DIR
/.heroku/node"
monitor
"install-node-binary"
install_nodejs
"
$node_engine
"
"
$BUILD_DIR
/.heroku/node"
monitor
"install-npm-binary"
install_npm
"
$npm_engine
"
"
$BUILD_DIR
/.heroku/node"
$NPM_LOCK
monitor
"install-npm-binary"
install_npm
"
$npm_engine
"
"
$BUILD_DIR
/.heroku/node"
$NPM_LOCK
local
node_version
=
"
$(
node
--version
)
"
node_version
=
"
$(
node
--version
)
"
mcount
"version.node.
$node_version
"
mcount
"version.node.
$node_version
"
fi
fi
...
@@ -148,8 +163,10 @@ header "Installing binaries" | output "$LOG_FILE"
...
@@ -148,8 +163,10 @@ header "Installing binaries" | output "$LOG_FILE"
install_bins | output
"
$LOG_FILE
"
install_bins | output
"
$LOG_FILE
"
restore_cache
()
{
restore_cache
()
{
local
cache_status
=
"
$(
get_cache_status
)
"
local
cache_status cache_directories
local
cache_directories
=
"
$(
get_cache_directories
)
"
cache_status
=
"
$(
get_cache_status
)
"
cache_directories
=
"
$(
get_cache_directories
)
"
if
$YARN
;
then
if
$YARN
;
then
if
[
-e
"
$BUILD_DIR
/node_modules"
]
;
then
if
[
-e
"
$BUILD_DIR
/node_modules"
]
;
then
...
@@ -166,7 +183,7 @@ restore_cache() {
...
@@ -166,7 +183,7 @@ restore_cache() {
if
[[
"
$cache_directories
"
==
""
]]
;
then
if
[[
"
$cache_directories
"
==
""
]]
;
then
restore_default_cache_directories
"
$BUILD_DIR
"
"
$CACHE_DIR
"
restore_default_cache_directories
"
$BUILD_DIR
"
"
$CACHE_DIR
"
else
else
restore_custom_cache_directories
"
$BUILD_DIR
"
"
$CACHE_DIR
"
$cache_directories
restore_custom_cache_directories
"
$BUILD_DIR
"
"
$CACHE_DIR
"
"
$cache_directories
"
fi
fi
elif
[[
"
$cache_status
"
==
"new-signature"
]]
;
then
elif
[[
"
$cache_status
"
==
"new-signature"
]]
;
then
header
"Restoring cache"
header
"Restoring cache"
...
@@ -177,7 +194,7 @@ restore_cache() {
...
@@ -177,7 +194,7 @@ restore_cache() {
# If the user has specified custom cache directories, be more explicit
# If the user has specified custom cache directories, be more explicit
echo
"Invalidating cache due to a change in version of node, npm, yarn or stack"
echo
"Invalidating cache due to a change in version of node, npm, yarn or stack"
echo
"Will not restore the following directories for this build:"
echo
"Will not restore the following directories for this build:"
for
directory
in
$
(
<
$cache_directories
)
;
do
for
directory
in
$
cache_directories
;
do
echo
"
$directory
"
echo
"
$directory
"
done
done
fi
fi
...
@@ -192,10 +209,12 @@ restore_cache() {
...
@@ -192,10 +209,12 @@ restore_cache() {
restore_cache | output
"
$LOG_FILE
"
restore_cache | output
"
$LOG_FILE
"
build_dependencies
()
{
build_dependencies
()
{
local
cache_status start
run_if_present
'heroku-prebuild'
run_if_present
'heroku-prebuild'
local
cache_status
=
"
$(
get_cache_status
)
"
cache_status
=
"
$(
get_cache_status
)
"
local
start
=
$(
nowms
)
start
=
$(
nowms
)
if
$YARN
;
then
if
$YARN
;
then
yarn_node_modules
"
$BUILD_DIR
"
yarn_node_modules
"
$BUILD_DIR
"
...
@@ -223,7 +242,8 @@ header "Building dependencies" | output "$LOG_FILE"
...
@@ -223,7 +242,8 @@ header "Building dependencies" | output "$LOG_FILE"
build_dependencies | output
"
$LOG_FILE
"
build_dependencies | output
"
$LOG_FILE
"
cache_build
()
{
cache_build
()
{
local
cache_directories
=
"
$(
get_cache_directories
)
"
local
cache_directories
cache_directories
=
"
$(
get_cache_directories
)
"
clear_cache
clear_cache
if
!
${
NODE_MODULES_CACHE
:-
true
}
;
then
if
!
${
NODE_MODULES_CACHE
:-
true
}
;
then
...
@@ -235,7 +255,7 @@ cache_build() {
...
@@ -235,7 +255,7 @@ cache_build() {
save_default_cache_directories
"
$BUILD_DIR
"
"
$CACHE_DIR
"
save_default_cache_directories
"
$BUILD_DIR
"
"
$CACHE_DIR
"
else
else
header
"Caching build"
header
"Caching build"
save_custom_cache_directories
"
$BUILD_DIR
"
"
$CACHE_DIR
"
$cache_directories
save_custom_cache_directories
"
$BUILD_DIR
"
"
$CACHE_DIR
"
"
$cache_directories
"
fi
fi
save_signature
save_signature
}
}
...
@@ -261,7 +281,7 @@ summarize_build() {
...
@@ -261,7 +281,7 @@ summarize_build() {
mmeasure
'modules.size'
"
$(
measure_size
)
"
mmeasure
'modules.size'
"
$(
measure_size
)
"
}
}
install_plugin
$BP_DIR
$BUILD_DIR
install_plugin
"
$BP_DIR
"
"
$BUILD_DIR
"
header
"Build succeeded!"
| output
"
$LOG_FILE
"
header
"Build succeeded!"
| output
"
$LOG_FILE
"
mcount
"compile"
mcount
"compile"
...
...
lib/cache.sh
View file @
58ed00de
#!/usr/bin/env bash
source
$BP_DIR
/lib/binaries.sh
source
$BP_DIR
/lib/binaries.sh
create_signature
()
{
create_signature
()
{
...
@@ -29,8 +31,9 @@ get_cache_status() {
...
@@ -29,8 +31,9 @@ get_cache_status() {
}
}
get_cache_directories
()
{
get_cache_directories
()
{
local
dirs1
=
$(
read_json
"
$BUILD_DIR
/package.json"
".cacheDirectories | .[]?"
)
local
dirs1 dirs2
local
dirs2
=
$(
read_json
"
$BUILD_DIR
/package.json"
".cache_directories | .[]?"
)
dirs1
=
$(
read_json
"
$BUILD_DIR
/package.json"
".cacheDirectories | .[]?"
)
dirs2
=
$(
read_json
"
$BUILD_DIR
/package.json"
".cache_directories | .[]?"
)
if
[
-n
"
$dirs1
"
]
;
then
if
[
-n
"
$dirs1
"
]
;
then
echo
"
$dirs1
"
echo
"
$dirs1
"
...
@@ -61,9 +64,11 @@ restore_default_cache_directories() {
...
@@ -61,9 +64,11 @@ restore_default_cache_directories() {
}
}
restore_custom_cache_directories
()
{
restore_custom_cache_directories
()
{
local
cache_directories
local
build_dir
=
${
1
:-}
local
build_dir
=
${
1
:-}
local
cache_dir
=
${
2
:-}
local
cache_dir
=
${
2
:-}
local
cache_directories
=(
"
${
@
:3
}
"
)
# Parse the input string with multiple lines: "a\nb\nc" into an array
mapfile
-t
cache_directories
<<<
"
$3
"
echo
"Loading
${#
cache_directories
[@]
}
from cacheDirectories (package.json):"
echo
"Loading
${#
cache_directories
[@]
}
from cacheDirectories (package.json):"
...
@@ -113,9 +118,11 @@ save_default_cache_directories() {
...
@@ -113,9 +118,11 @@ save_default_cache_directories() {
}
}
save_custom_cache_directories
()
{
save_custom_cache_directories
()
{
local
cache_directories
local
build_dir
=
${
1
:-}
local
build_dir
=
${
1
:-}
local
cache_dir
=
${
2
:-}
local
cache_dir
=
${
2
:-}
local
cache_directories
=(
"
${
@
:3
}
"
)
# Parse the input string with multiple lines: "a\nb\nc" into an array
mapfile
-t
cache_directories
<<<
"
$3
"
echo
"Saving
${#
cache_directories
[@]
}
cacheDirectories (package.json):"
echo
"Saving
${#
cache_directories
[@]
}
cacheDirectories (package.json):"
...
...
makefile
View file @
58ed00de
test
:
heroku-18 heroku-16 cedar-14
test
:
heroku-18 heroku-16 cedar-14
shellcheck
:
@
shellcheck
-x
bin/compile
@
echo
TODO shellcheck bin/detect bin/release bin/test bin/test-compile
@
echo
TODO shellcheck
-x
lib/
**
/
*
.sh
@
echo
TODO shellcheck
-x
ci-profile/
**
/
*
.sh
@
echo
TODO shellcheck
-x
etc/
**
/
*
.sh
heroku-18
:
heroku-18
:
@
echo
"Running tests in docker (heroku-18)..."
@
echo
"Running tests in docker (heroku-18)..."
@
docker run
-v
$(
shell
pwd
)
:/buildpack:ro
--rm
-it
-e
"STACK=heroku-18"
heroku/heroku:18 bash
-c
'cp -r /buildpack /buildpack_test; cd /buildpack_test/; test/run;'
@
docker run
-v
$(
shell
pwd
)
:/buildpack:ro
--rm
-it
-e
"STACK=heroku-18"
heroku/heroku:18 bash
-c
'cp -r /buildpack /buildpack_test; cd /buildpack_test/; test/run;'
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment