Skip to content

Commit

Permalink
improvement: switch to Node.js 12
Browse files Browse the repository at this point in the history
Note: This needed an update to how we build our docker images, since
we now need to build the alpine image in the container.
  • Loading branch information
edvald committed Jan 8, 2020
1 parent 6d3abfb commit 4c51aae
Show file tree
Hide file tree
Showing 17 changed files with 4,814 additions and 3,369 deletions.
4 changes: 2 additions & 2 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -379,8 +379,8 @@ jobs:
# ...export for subsequent runs...
echo 'export NVM_DIR="/opt/circleci/.nvm"' >> $BASH_ENV
echo "[ -s \"$NVM_DIR/nvm.sh\" ] && . \"$NVM_DIR/nvm.sh\"" >> $BASH_ENV
nvm install 10
nvm alias default 10
nvm install 12
nvm alias default 12
nvm use default
# ...and finally symlink for when calling Garden with sudo below
sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/node" "/usr/local/bin/node"
Expand Down
14 changes: 4 additions & 10 deletions bin/bootstrap-osx
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,10 @@ gcloud components update
gcloud components install beta

# install nvm and node
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash
nvm install 10
nvm alias default 10
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.35.1/install.sh | bash
nvm install 12
nvm alias default 12
nvm use default

# install/update global packages
npm install -g gulp-cli
npm install -g ts-node
npm install -g typescript

# install CircleCI CLI
curl -o /usr/local/bin/circleci https://circle-downloads.s3.amazonaws.com/releases/build_agent_wrapper/circleci
chmod +x /usr/local/bin/circleci
npm install -g gulp-cli ts-node typescript
7,482 changes: 4,418 additions & 3,064 deletions dashboard/package-lock.json

Large diffs are not rendered by default.

63 changes: 31 additions & 32 deletions dashboard/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,50 +4,49 @@
"private": true,
"devDependencies": {
"@types/d3": "^5.7.2",
"@types/dagre-d3": "^0.4.38",
"@types/jest": "^23.3.9",
"@types/lodash": "^4.14.123",
"@types/node": "^10.14.4",
"@types/react": "^16.8.13",
"@types/react-dom": "^16.8.4",
"@types/react-router-dom": "^4.3.2",
"@types/react-select": "^2.0.17",
"@typescript-eslint/eslint-plugin-tslint": "^2.3.1",
"@types/dagre-d3": "^0.4.39",
"@types/jest": "^24.0.23",
"@types/lodash": "^4.14.149",
"@types/node": "^12.12.16",
"@types/react": "^16.9.16",
"@types/react-dom": "^16.9.4",
"@types/react-router-dom": "^5.1.3",
"@types/react-select": "^3.0.8",
"@typescript-eslint/eslint-plugin-tslint": "^2.11.0",
"eslint-plugin-only-warn": "^1.0.1",
"prettier": "^1.18.2",
"react-scripts": "3.1.2",
"ts-node": "^7.0.1",
"tslint": "^5.20.0",
"prettier": "^1.19.1",
"react-scripts": "3.3.0",
"tslint": "^5.20.1",
"tslint-config-prettier": "^1.18.0",
"tslint-microsoft-contrib": "^6.2.0",
"tslint-no-unused": "^0.2.0-alpha.1",
"tslint-plugin-prettier": "^2.0.1",
"tslint-react": "^4.1.0",
"typescript": "^3.4.3"
"typescript": "^3.7.3"
},
"dependencies": {
"@emotion/core": "^10.0.10",
"@emotion/styled": "^10.0.10",
"axios": "^0.18.0",
"@emotion/core": "^10.0.22",
"@emotion/styled": "^10.0.23",
"axios": "^0.19.0",
"classnames": "^2.2.6",
"d3": "^5.9.2",
"dagre-d3": "^0.6.1",
"emotion": "^10.0.9",
"d3": "^5.14.2",
"dagre-d3": "^0.6.4",
"emotion": "^10.0.23",
"flexboxgrid": "^6.3.1",
"flexboxgrid-helpers": "^1.1.3",
"garden-service": "^0.10.16",
"http-proxy-middleware": "^0.19.1",
"immer": "^3.1.3",
"lodash": "^4.17.11",
"http-proxy-middleware": "^0.20.0",
"immer": "^5.0.1",
"lodash": "^4.17.15",
"moment": "^2.24.0",
"node-sass": "^4.10.0",
"normalize-url": "^4.3.0",
"react": "^16.8.6",
"react-content-loader": "^4.2.1",
"react-dom": "^16.8.6",
"react-router-dom": "^5.0.0",
"react-select": "^2.3.0",
"uuid": "^3.3.2"
"node-sass": "^4.13.0",
"normalize-url": "^4.5.0",
"react": "^16.12.0",
"react-content-loader": "^4.3.3",
"react-dom": "^16.12.0",
"react-router-dom": "^5.1.2",
"react-select": "^3.0.8",
"uuid": "^3.3.3"
},
"scripts": {
"start": "react-scripts start",
Expand All @@ -65,4 +64,4 @@
"not ie <= 11",
"not op_mini all"
]
}
}
11 changes: 4 additions & 7 deletions dashboard/src/contexts/api.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -142,13 +142,10 @@ interface WsMessageReceived extends ActionBase {

export type Action = ActionStart | ActionError | ActionSuccess | WsMessageReceived

const initialRequestState = requestKeys.reduce(
(acc, key) => {
acc[key] = { pending: false, initLoadComplete: false }
return acc
},
{} as { [K in RequestKey]: RequestState }
)
const initialRequestState = requestKeys.reduce((acc, key) => {
acc[key] = { pending: false, initLoadComplete: false }
return acc
}, {} as { [K in RequestKey]: RequestState })

const initialState: Store = {
entities: {
Expand Down
9 changes: 2 additions & 7 deletions garden-service/.dockerignore
Original file line number Diff line number Diff line change
@@ -1,10 +1,6 @@
.garden
bin/
build/
dist/garden-*
dist/linux-*
dist/macos-*
dist/windows-*
.git
dist/
lib/
src/
test/
Expand All @@ -17,4 +13,3 @@ gulpfile.ts
tsconfig.*
**/.garden
**/node_modules
*.json
28 changes: 24 additions & 4 deletions garden-service/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,18 +1,38 @@
FROM node:10.16.0-alpine
FROM node:12.13.1-alpine

# system dependencies
RUN apk add --no-cache \
bash \
curl \
docker \
docker-cli \
git \
openssl \
rsync \
ca-certificates \
tar \
gzip
gzip \
libstdc++

ADD dist/alpine-amd64/ /garden
VOLUME ["~/.pkg-cache"]

ADD bin /tmp/bin
ADD build /tmp/build
ADD package.json /tmp/

# build binary (need to do this in-container for alpine due to a bug in zeit/pkg)
RUN cd /tmp \
&& npm install \
&& node_modules/.bin/pkg --target node12-alpine-x64 . \
&& mkdir -p /garden \
&& mv garden-service /garden/garden \
&& rm -rf node_modules \
/root/.npm/* \
/usr/lib/node_modules/npm/man/* \
/usr/lib/node_modules/npm/doc/* \
/usr/lib/node_modules/npm/html/* \
/usr/lib/node_modules/npm/scripts/*

ADD static /garden/static

WORKDIR /project

Expand Down
20 changes: 16 additions & 4 deletions garden-service/bin/build-containers.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,24 @@ cd ${garden_service_root}
args=( $@ )
version=${args[0]:-$(git rev-parse --short HEAD)}

base_tag=gardendev/garden:${version}
gcloud_tag=gardendev/garden-gcloud:${version}
buster_tag=gardendev/garden:${version}-buster

echo "Building version ${version}"

docker build -t gardendev/garden:${version} .
echo "-> Build ${base_tag}"
docker build -t gardendev/garden:${version} -f Dockerfile .
echo "-> Check ${base_tag}"
docker run --rm -it gardendev/garden:${version} version

echo "-> Build ${gcloud_tag}"
docker build -t gardendev/garden-gcloud:${version} --build-arg TAG=${version} -f gcloud.Dockerfile .
echo "-> Check ${gcloud_tag}"
docker run --rm -it gardendev/garden-gcloud:${version} version

echo "Sanity checking..."
echo "-> Build ${buster_tag}"
docker build -t gardendev/garden:${version}-buster -f buster.Dockerfile dist/linux-amd64
echo "-> Check ${buster_tag}"
docker run --rm -it gardendev/garden:${version}-buster version

docker run --rm -it gardendev/garden:${version} version
docker run --rm -it gardendev/garden-gcloud:${version} version
26 changes: 7 additions & 19 deletions garden-service/bin/build-pkg.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ else
version="v$(cat package.json | jq -r .version)"
fi

shopt -s expand_aliases
alias pkg=${garden_service_root}/node_modules/.bin/pkg

echo "Packaging version ${version}-${commit_hash}"

Expand All @@ -47,7 +49,7 @@ echo "-> Preparing packages..."
cd dist

echo " -> linux-amd64"
pkg --target node10-linux-x64 ../tmp/dist
pkg --target node12-linux-x64 ../tmp/dist
rm -rf linux-amd64
mkdir linux-amd64
mv garden-service linux-amd64/garden
Expand All @@ -56,7 +58,7 @@ echo " -> tar"
tar -czf garden-${version}-linux-amd64.tar.gz linux-amd64

echo " -> alpine-amd64"
pkg --target node10-alpine-x64 ../tmp/dist
pkg --target node12-alpine-x64 ../tmp/dist
rm -rf alpine-amd64
mkdir alpine-amd64
mv garden-service alpine-amd64/garden
Expand All @@ -65,7 +67,7 @@ echo " -> tar"
tar -czf garden-${version}-alpine-amd64.tar.gz alpine-amd64

echo " -> windows-amd64"
pkg --target node10-win-x64 ../tmp/dist
pkg --target node12-win-x64 ../tmp/dist
rm -rf windows-amd64
mkdir windows-amd64
# Name should match go release and other standards using full "windows" name
Expand All @@ -77,26 +79,12 @@ zip -q -r garden-${version}-windows-amd64.zip windows-amd64
echo " -> macos-amd64"
rm -rf macos-amd64
mkdir macos-amd64

# Need to use a newer version of Pkg for the fsevents module to work properly,
# which unfortunately does NOT work for other platforms :/
echo " -> install pkg@4.4.0"
npm init -y
npm install pkg@4.4.0

echo " -> build binary"
node_modules/.bin/pkg --target node10-macos-x64 ../tmp/dist

pkg --target node12-macos-x64 ../tmp/dist
mv garden-service macos-amd64/garden
cp -r ../tmp/dist/static macos-amd64

# need to include the .node binary for fsevents
cp ../lib/fsevents/node-v64-darwin-x64/fsevents.node macos-amd64/fsevents.node
cp ../lib/fsevents/node-v72-darwin-x64/fse.node macos-amd64/fse.node

echo " -> tar"
tar -czf garden-${version}-macos-amd64.tar.gz macos-amd64

echo "-> removing node_modules and package files..."
rm -rf node_modules
rm package.json
rm package-lock.json
22 changes: 22 additions & 0 deletions garden-service/buster.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
FROM node:12.13.1-buster

# system dependencies
RUN set -ex; \
apt-get update; \
apt-get install -y --no-install-recommends \
bash \
docker \
git \
gzip \
openssl \
rsync; \
rm -rf /var/lib/apt/lists/*

ADD . /garden

WORKDIR /project

RUN ln -s /garden/garden /bin/garden \
&& chmod +x /bin/garden

ENTRYPOINT ["/garden/garden"]
Binary file not shown.
Binary file not shown.
Loading

0 comments on commit 4c51aae

Please sign in to comment.