Skip to content

Commit

Permalink
Build Docker image using code-server (contributes to IBM-Blockchain#1494
Browse files Browse the repository at this point in the history
)

Signed-off-by: Simon Stone <sstone1@uk.ibm.com>
  • Loading branch information
Simon Stone committed Nov 18, 2019
1 parent 28585df commit 98ba1fb
Show file tree
Hide file tree
Showing 6 changed files with 121 additions and 1 deletion.
27 changes: 27 additions & 0 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
Expand Up @@ -254,3 +254,30 @@ stages:
steps:
- template: azure-templates/setup-steps.yml
- template: azure-templates/cucumber-steps.yml
- stage: docker
dependsOn:
- unitTest
- cucumberTest
- jestTest
- cypressTest
jobs:
- job: docker
pool:
vmImage: ubuntu-16.04
steps:
- script: docker/build.sh
displayName: Build Docker image
- script: |
set -ex
VERSION=$(jq -r ".version" package.json)
docker tag ibmblockchain/vscode:latest ibmblockchain/vscode:${VERSION}
echo docker push ibmblockchain/vscode:${VERSION}
echo docker push ibmblockchain/vscode:latest
condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags'))
displayName: Push Docker image to Docker Hub (release build)
- script: |
set -ex
docker tag ibmblockchain/vscode:latest ibmblockchain/vscode:unstable
echo docker push ibmblockchain/vscode:unstable
condition: eq(variables['Build.Reason'], 'Schedule')
displayName: Push Docker image to Docker Hub (nightly build)
4 changes: 4 additions & 0 deletions docker/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#
# SPDX-License-Identifier: Apache-2.0
#
*.vsix
54 changes: 54 additions & 0 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
#
# SPDX-License-Identifier: Apache-2.0
#
FROM codercom/code-server:v2
# Revert back to root
USER root
# Add essential build dependencies
RUN apt-get update && \
apt-get -y install build-essential python && \
rm -rf /var/lib/apt/lists/*
# Install Go and the various Go dependencies
RUN wget -qO go1.13.4.linux-amd64.tar.gz https://dl.google.com/go/go1.13.4.linux-amd64.tar.gz && \
tar xzvf go1.13.4.linux-amd64.tar.gz -C /usr/local && \
rm go1.13.4.linux-amd64.tar.gz
ENV PATH /usr/local/go/bin:${PATH}
RUN GOPATH=/tmp/go go get github.com/mdempsky/gocode \
github.com/uudashr/gopkgs/cmd/gopkgs \
github.com/ramya-rao-a/go-outline \
github.com/acroca/go-symbols \
golang.org/x/tools/cmd/guru \
golang.org/x/tools/cmd/gorename \
github.com/go-delve/delve/cmd/dlv \
github.com/stamblerre/gocode \
github.com/rogpeppe/godef \
github.com/sqs/goreturns \
golang.org/x/lint/golint && \
tar cf - -C /tmp/go/bin . | tar xf - -C /usr/local/bin && \
rm -rf /tmp/go
# Install Java
RUN mkdir /usr/local/java && \
wget -qO OpenJDK8U-jdk_x64_linux_hotspot_8u232b09.tar.gz https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u232-b09/OpenJDK8U-jdk_x64_linux_hotspot_8u232b09.tar.gz && \
tar xzvf OpenJDK8U-jdk_x64_linux_hotspot_8u232b09.tar.gz --strip 1 -C /usr/local/java && \
rm OpenJDK8U-jdk_x64_linux_hotspot_8u232b09.tar.gz
ENV PATH /usr/local/java/bin:${PATH}
# Install Node.js
RUN mkdir /usr/local/node && \
wget -qO node-v10.17.0-linux-x64.tar.xz https://nodejs.org/dist/latest-v10.x/node-v10.17.0-linux-x64.tar.xz && \
tar xJvf node-v10.17.0-linux-x64.tar.xz --strip 1 -C /usr/local/node && \
rm node-v10.17.0-linux-x64.tar.xz
ENV PATH /usr/local/node/bin:${PATH}
# Install other extensions for Visual Studio Code
RUN code-server --extensions-dir /usr/local/extensions --install-extension ms-vscode.go && \
code-server --extensions-dir /usr/local/extensions --install-extension vscjava.vscode-java-pack
# Install our extension for Visual Studio Code
COPY ibm-blockchain-platform-docker.vsix /tmp/
RUN code-server --extensions-dir /usr/local/extensions --install-extension /tmp/ibm-blockchain-platform-docker.vsix && \
cd /usr/local/extensions/ibmblockchain.ibm-blockchain-platform-* && \
npm rebuild
# Create a user which doesn't have sudo access
RUN useradd -m -s /bin/bash vscode
ADD vscode.sh /usr/local/bin/
USER vscode
WORKDIR /home/vscode
ENTRYPOINT ["/usr/local/bin/vscode.sh"]
25 changes: 25 additions & 0 deletions docker/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#!/usr/bin/env bash
#
# SPDX-License-Identifier: Apache-2.0
#
set -ex
ROOT=$(git rev-parse --show-toplevel)
cd ${ROOT}
cp -f package.json package.json.orig
trap "cd ${ROOT}; cp -f package.json.orig package.json; rm -f package.json.orig" EXIT
npm ci --only=production
npm install vsce
npm run compile
npm run productionFlag
cat package.json.orig \
| jq '.contributes.configuration.properties."ibm-blockchain-platform.ext.bypassPreReqs".default = true' \
| jq '.contributes.configuration.properties."ibm-blockchain-platform.home.showOnStartup".default = false' \
| jq '(.actualActivationEvents.onView | map("onView:" + .)) as $onView |
(.actualActivationEvents.onCommand | map("onCommand:" + .)) as $onCommand |
(.actualActivationEvents.other) as $other |
.activationEvents = $onView + $onCommand + $other' \
> package.json
npm run package
mv ibm-blockchain-platform-*.vsix docker/ibm-blockchain-platform-docker.vsix
cd docker
docker build -t ibmblockchain/vscode:latest .
9 changes: 9 additions & 0 deletions docker/vscode.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/usr/bin/env bash
#
# SPDX-License-Identifier: Apache-2.0
#
set -ex
if [ ! -r ~/.profile ]; then
tar cf - -C /etc/skel . | tar xf - -C ~
fi
exec dumb-init code-server --host 0.0.0.0 --extra-extensions-dir /usr/local/extensions --auth none
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -1396,7 +1396,8 @@
"templates/SampleView.ejs",
"templates/TutorialGallery.ejs",
"templates/PreReqView.ejs",
"tutorials"
"tutorials",
"docker"
],
"file_type_method": "EXCLUDE",
"file_types": [
Expand Down

0 comments on commit 98ba1fb

Please sign in to comment.