Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace heroku/nodejs-engine with libcnb.rs implementation #184

Merged
merged 130 commits into from
Mar 9, 2022
Merged
Show file tree
Hide file tree
Changes from 118 commits
Commits
Show all changes
130 commits
Select commit Hold shift + click to select a range
6903d92
Add a rudimentary nodejs buildpack
joshwlewis Jan 20, 2022
1e57da2
Add rudimentary shared lib for libcnb buildpacks
joshwlewis Jan 24, 2022
f96263c
s/ruby/node
joshwlewis Jan 24, 2022
23a5606
Move package_json into it's own mod
joshwlewis Feb 17, 2022
697357f
Bring in resolve-version.rs
joshwlewis Feb 17, 2022
1ea2764
Use node-semver over semver
joshwlewis Feb 17, 2022
892d412
Add resolve-version.rs bins
joshwlewis Feb 17, 2022
eb9cc34
Rename version bins
joshwlewis Feb 17, 2022
47b9838
Move version parsing to lib
joshwlewis Feb 18, 2022
655ee4f
Refactor and deserialize package.json versions as node semver require…
joshwlewis Feb 19, 2022
3e8aa23
Move version to versions
joshwlewis Feb 19, 2022
6fbc5fb
Move libnodejs to libcncb-nodejs
joshwlewis Feb 19, 2022
9e34c93
Parse requested node version from package.json
joshwlewis Feb 24, 2022
05e2931
Get version detection and resolution working
joshwlewis Feb 24, 2022
4a6fece
Cache and reuse if node version hasn't changed
joshwlewis Feb 25, 2022
3f1fa52
Use compile target to determine default release
joshwlewis Feb 26, 2022
b6e5f2e
Drop debug lines
joshwlewis Feb 26, 2022
1182dcc
s/Software/Inventory
joshwlewis Feb 26, 2022
2528917
s/RuntimeLayer/DistLayer/
joshwlewis Feb 26, 2022
3d11db6
Detect server.js or index.js as default process
joshwlewis Feb 26, 2022
03bc820
Add integration tests for nodejs-runtime
joshwlewis Feb 26, 2022
10a92b1
Drop inventory dir
joshwlewis Feb 26, 2022
daf70d6
Set provides and requires for nodejs-runtime
joshwlewis Feb 27, 2022
26b76ea
Use layer metadata to evaluate dist layer reuse
joshwlewis Feb 27, 2022
fa66c08
Use cargo workspaces
joshwlewis Feb 27, 2022
e02ae9b
Create set_web_concurrency.rs
joshwlewis Feb 27, 2022
91c9678
Set WEB_CONCURRENCY via exec.d
joshwlewis Feb 27, 2022
0165279
Attempt to read memory from cgroups v2 and cgroups v1 as a fallback
joshwlewis Feb 28, 2022
bd43372
Replace nodejs-engine with nodejs-runtime
joshwlewis Feb 28, 2022
21e6363
Drop extra Cargo.lock
joshwlewis Feb 28, 2022
c08b9e5
Update libcnb-test dependency to use git over local
joshwlewis Feb 28, 2022
d3868ed
Update buildpack.toml with homepage
joshwlewis Feb 28, 2022
0519151
Drop reqwest,tokio,openssl
joshwlewis Feb 28, 2022
acf3115
Use released libcnb versions
joshwlewis Feb 28, 2022
6269b70
WebLayer -> WebEnvLayer
joshwlewis Feb 28, 2022
c5d3fd9
Drop util in favor of libherokubuildpack
joshwlewis Feb 28, 2022
41c1efd
Improve error typing
joshwlewis Mar 1, 2022
54cb46e
Improve error messaging
joshwlewis Mar 1, 2022
d021fba
Run rust fmt
joshwlewis Mar 1, 2022
70e4d99
Add error messaging
joshwlewis Mar 1, 2022
f01c6cf
Use libherokubuildpack logging
joshwlewis Mar 1, 2022
22fb4db
Update integration tests to match new logging
joshwlewis Mar 2, 2022
c361bd0
Adjust detection conditions
joshwlewis Mar 2, 2022
69fb71a
Add cargo test and rust fmt to circle build
joshwlewis Mar 2, 2022
35afc60
Install pack-cli in circle builds
joshwlewis Mar 2, 2022
304db02
Don't run shpec on nodejs-engine
joshwlewis Mar 2, 2022
239fe81
Add a nodejs-engine build script
joshwlewis Mar 2, 2022
5e6b40d
Use the machine executor for cargo test
joshwlewis Mar 2, 2022
161e8be
Bump nodejs-engine in test/meta-buildpacks
joshwlewis Mar 2, 2022
baba872
Add missing build.sh script
joshwlewis Mar 2, 2022
a7a28c0
Don't setup remote docker for cargo test
joshwlewis Mar 2, 2022
9cf5747
Install rust when packaging buildpacks
joshwlewis Mar 2, 2022
3ad707a
Install rust when running cutlass tests
joshwlewis Mar 2, 2022
3728f66
Use release target for build.sh
joshwlewis Mar 2, 2022
ac30113
Update nodejs-engine version for meta-buildpacks test
joshwlewis Mar 2, 2022
9a81d00
yarn buildpack should install it's own yj
joshwlewis Mar 2, 2022
a3cfc12
Add missing logging functionality to yarn buildpack
joshwlewis Mar 2, 2022
c582187
Include [types] table for the toolbox
joshwlewis Mar 2, 2022
9ef318d
npm buildpack should install it's own yj
joshwlewis Mar 2, 2022
0b12bca
Fix shellcheck issue
joshwlewis Mar 2, 2022
81c7373
Restore lost messaging
joshwlewis Mar 2, 2022
7c479bd
Adjust messaging expectations
joshwlewis Mar 2, 2022
5863047
Fix more shell linting issues
joshwlewis Mar 2, 2022
b015b86
Update all buildpacks to 0.6
joshwlewis Mar 2, 2022
d935b5e
Add [types] table to a few layers to support newer buildpack api
joshwlewis Mar 2, 2022
f7820bd
Adjust nodejs-engine logging
joshwlewis Mar 3, 2022
109b08b
Apply cargo fmt
joshwlewis Mar 3, 2022
7462d90
Update changelogs
joshwlewis Mar 3, 2022
2c2e619
Move nodejs to dist layer bin so that PATH changes aren't required
joshwlewis Mar 3, 2022
9845860
Run clippy in CI
joshwlewis Mar 3, 2022
54a8763
Apply clippy
joshwlewis Mar 3, 2022
9b8e50f
Fix linting issues
joshwlewis Mar 3, 2022
65134b9
Drop superfluous postfix on error variants
joshwlewis Mar 3, 2022
72b70d0
Additional lint fixes
joshwlewis Mar 3, 2022
9de2f78
Update the nodejs-engine README
joshwlewis Mar 3, 2022
2736085
Update root README.md
joshwlewis Mar 3, 2022
5f825d6
Adjust casing for keywords
joshwlewis Mar 4, 2022
a2b7723
s/libcnb-nodejs/libhkcnb-nodejs/
joshwlewis Mar 4, 2022
e78d5c6
Prune dependencies
joshwlewis Mar 4, 2022
6fa7d8c
Get a little more critical with lints
joshwlewis Mar 4, 2022
e373975
Add #[must_use] where appropriate
joshwlewis Mar 4, 2022
134d566
Allow module_name_repetitions
joshwlewis Mar 4, 2022
4e8e7cb
Drop unused tempfile crate form libhkcnb-nodejs
joshwlewis Mar 4, 2022
cbc6aec
Update lockfile
joshwlewis Mar 4, 2022
d25881e
Add missing Cargo.toml fields
joshwlewis Mar 4, 2022
1df941a
Address clippy::missing_errors_doc
joshwlewis Mar 4, 2022
2a8da5c
Add a small README.md for libhkcnb-nodejs
joshwlewis Mar 4, 2022
c17fb0e
Address clippy::cargo_common_metadata
joshwlewis Mar 4, 2022
c375bb5
Specify rust version
joshwlewis Mar 4, 2022
eef1327
Resolve clippy::single_char_pattern
joshwlewis Mar 4, 2022
97d571f
Apply additional clippy fixes
joshwlewis Mar 4, 2022
460772a
More cargo fmt
joshwlewis Mar 4, 2022
1adb598
Split inventory functionality out into inv package
joshwlewis Mar 5, 2022
d9cdd8a
Move inventory read functionality into lib
joshwlewis Mar 5, 2022
56a0404
Cargo fmt
joshwlewis Mar 5, 2022
5a2a5e7
Rename Ver and Req to Version and Requirement
joshwlewis Mar 7, 2022
ea5d95e
Rename versions::Ver,Req to vrs::Version,Requirement
joshwlewis Mar 7, 2022
c5cb7d5
Update libhkcnb-nodejs/src/package_json.rs
joshwlewis Mar 7, 2022
cfe6a81
Improve launchjs detection
joshwlewis Mar 7, 2022
188302f
Drop a few lets in version_range fetching
joshwlewis Mar 7, 2022
dafdd6f
Simplify detection
joshwlewis Mar 7, 2022
653d30f
Simplify layer initialization
joshwlewis Mar 7, 2022
86d41d6
Use StackId from libcnb::data
joshwlewis Mar 7, 2022
4301f61
Use derived Eq to detect layer strategy
joshwlewis Mar 7, 2022
0f731a6
Create helper function for initializing metadata
joshwlewis Mar 7, 2022
b2697f1
Update .circleci/config.yml
joshwlewis Mar 7, 2022
79f623c
Update .circleci/config.yml
joshwlewis Mar 7, 2022
fe87cf9
Fix clippy command in CI
joshwlewis Mar 7, 2022
2aeb9f4
Drop superfluous .buildpacks call in test
joshwlewis Mar 7, 2022
ec901fc
Drop superfluous .buildpacks call in test
joshwlewis Mar 7, 2022
5cd8f19
Update base image for CI tests
joshwlewis Mar 7, 2022
3227668
Output files checked with cargo fmt
joshwlewis Mar 7, 2022
d701275
Refactor web_env
joshwlewis Mar 8, 2022
051a647
Add clippy pedantic in more places
joshwlewis Mar 8, 2022
f32ee2c
Remove unused dependency in integration test
joshwlewis Mar 8, 2022
891ea47
Break apart integration and unit tests, fix CI
joshwlewis Mar 8, 2022
29760bc
Import test dependencies to silence unused dep clippy
joshwlewis Mar 8, 2022
1b66aad
Use 1.58 as minimum rust version
joshwlewis Mar 8, 2022
295a324
Update README.md dependencies
joshwlewis Mar 8, 2022
1c62c49
Don't install libcnb-cargo for integration tests
joshwlewis Mar 8, 2022
0c8b4a4
Set publish = false and drop cargo metadata
joshwlewis Mar 8, 2022
676b847
Update cargo manifests
joshwlewis Mar 8, 2022
e408361
Drop 'Buildpack' suffix from buildpack name
joshwlewis Mar 8, 2022
bf06f6f
Upgrade to libcnb-test 0.3.0
joshwlewis Mar 8, 2022
f0eb4d1
Use assert_contains from libcnb-test
joshwlewis Mar 8, 2022
f760497
Use assert_contains from libcnb_test
joshwlewis Mar 8, 2022
c704426
Move shared rust lib to common/nodejs-utils
joshwlewis Mar 9, 2022
0039f93
Group and organize use statements
joshwlewis Mar 9, 2022
7714383
Bump minor versions for yarn and npm buildpacks
joshwlewis Mar 9, 2022
4087999
Update test meta-buildpacks to point at new npm/yarn buildpack versions
joshwlewis Mar 9, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 51 additions & 5 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,19 @@ orbs:
install-build-dependencies:
steps:
- run:
name: "Install rsync, jq via apt"
command: sudo apt-get update && sudo apt-get install -y rsync jq
name: "Install rsync, jq, and musl-tools via apt"
command: sudo apt-get update && sudo apt-get install -y --no-install-recommends rsync jq musl-tools
- install-yq
install-rust-toolchain:
steps:
- run:
name: "Install rustc stable"
command: |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y -t x86_64-unknown-linux-musl
echo "export PATH=\"$HOME/.cargo/bin:$PATH\"" >> $BASH_ENV
- run:
name: "Install libcnb-cargo"
command: cargo install libcnb-cargo
joshwlewis marked this conversation as resolved.
Show resolved Hide resolved

jobs:
package-buildpack:
Expand All @@ -33,8 +43,9 @@ jobs:
- checkout
- setup_remote_docker
- pack/install-pack:
version: 0.23.0
version: 0.24.0
- heroku-buildpacks/install-build-dependencies
- heroku-buildpacks/install-rust-toolchain
- run:
name: "Build and package buildpack with retries"
command: |
Expand All @@ -61,9 +72,10 @@ jobs:
steps:
- checkout
- pack/install-pack:
version: 0.23.0
version: 0.24.0
- ruby/install-deps
- heroku-buildpacks/install-build-dependencies
- heroku-buildpacks/install-rust-toolchain
- run:
name: "Run rspec tests against a given directory"
command: |
Expand Down Expand Up @@ -110,16 +122,50 @@ jobs:
name: Shpec unit tests on heroku-<<parameters.stack-version>>
command: shpec << parameters.buildpack-dir >>/shpec/*_shpec.sh

rust-integration-test:
machine:
image: ubuntu-2004:202201-02
steps:
- checkout
- pack/install-pack:
version: 0.24.0
- heroku-buildpacks/install-build-dependencies
- heroku-buildpacks/install-rust-toolchain
- run:
command: cargo test --locked -- --ignored

rust-unit-test:
docker:
- image: cimg/rust:1.59
steps:
- checkout
- run:
command: cargo test --locked

rust-linting:
docker:
- image: cimg/rust:1.59
steps:
- checkout
- run:
name: rustfmt
command: cargo fmt -- --check --verbose
- run:
name: clippy
command: cargo clippy --all-targets --all-features --locked -- --deny warnings

workflows:
version: 2
ci:
jobs:
- shell-linting
- rust-linting
- rust-unit-test
- rust-integration-test
- shpec:
matrix:
parameters:
buildpack-dir:
- "buildpacks/nodejs-engine"
- "buildpacks/nodejs-function-invoker"
- "buildpacks/npm"
stack-version:
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
dist/
node_modules/
package-lock.json
.tool-versions
joshwlewis marked this conversation as resolved.
Show resolved Hide resolved

**/target/

Expand Down
Loading