diff --git a/frontend/Dockerfile b/frontend/Dockerfile index 31b3e6991..c02fccb40 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -7,7 +7,7 @@ WORKDIR /frontend COPY . . -RUN npm install && \ +RUN npm install && npm rebuild node-sass && \ npm run postinstall && \ CI=true npm run test:coverage && \ npm run build diff --git a/frontend/docker_build.js b/frontend/docker_build.js new file mode 100644 index 000000000..d90ce8355 --- /dev/null +++ b/frontend/docker_build.js @@ -0,0 +1,32 @@ +/** + * Docker build cross platform script for KF Metadata + * This will calculate your current hash, and build date and use them + * to build the docker image in the format: + * + * gcr.io/kubeflow-images-public/metadata-frontend:${COMMIT_HASH} + */ +const {exec, spawn} = require('child_process') +const runCmd = cmd => new Promise((res, rej) => exec(cmd, (e, out, err) => e?rej(e):res({out, err}))) + +// COMMIT_HASH=`git rev-parse HEAD`; docker build -t gcr.io/kubeflow-images-public/metadata-frontend:${COMMIT_HASH} --build-arg COMMIT_HASH=${COMMIT_HASH} --build-arg DATE=\"`date -u`\" . +const main = async _ => { + const commitHash = (await runCmd('git rev-parse HEAD')).out.trim() + const date = new Date().toUTCString() + const protocProcess = spawn( + 'docker', [ + `build`, + `-t`,`gcr.io/kubeflow-images-public/metadata-frontend:${commitHash}`, + `--build-arg`,`COMMIT_HASH=${commitHash}`, + `--build-arg`,`DATE="${date}"`, + `.` + ], {shell: true} + ); + protocProcess.stdout.on('data', buffer => console.log(buffer.toString())) + protocProcess.stderr.on('data', buffer => console.error(buffer.toString())) + protocProcess.on('close', code => { + if (code) return + console.log(`Docker image built!`) + }) +} + +main() diff --git a/frontend/package.json b/frontend/package.json index f9dafcbee..d99a502f0 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -43,7 +43,7 @@ "apis:metadata": "node ./gen_grpc_web_protos.js", "apis:service": "java -jar swagger-codegen-cli.jar generate -i ../api/service.swagger.json -l typescript-fetch -o ./src/apis/service -c ./swagger-config.json", "build": "cross-env EXTEND_ESLINT=true react-scripts build", - "docker": "cross-env COMMIT_HASH=`git rev-parse HEAD`; docker build -t gcr.io/kubeflow-images-public/metadata-frontend:${COMMIT_HASH} --build-arg COMMIT_HASH=${COMMIT_HASH} --build-arg DATE=\"`date -u`\" .", + "docker": "node ./docker_build.js", "eject": "cross-env EXTEND_ESLINT=true react-scripts eject", "postinstall": "cd ./server && npm i", "start": "cross-env EXTEND_ESLINT=true react-scripts start",