Skip to content

Commit

Permalink
Allow to build blueprint based on local Theia sources
Browse files Browse the repository at this point in the history
Contributed on behalf of STMicroelectronics

Signed-off-by: Johannes Faltermeier <[email protected]>
  • Loading branch information
jfaltermeier committed Sep 26, 2023
1 parent 249a6ff commit 2504be3
Show file tree
Hide file tree
Showing 5 changed files with 146 additions and 0 deletions.
43 changes: 43 additions & 0 deletions .github/workflows/publish-theia-builder.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Publish Theia Builder Docker Image

on:
push:
branches:
- jf/local-theia-build
inputs:
tag:
description: The image's tag
required: true
default: next
workflow_dispatch:
inputs:
tag:
description: The image's tag
required: true
default: next

jobs:
build:
name: Build and push theia builder image to Github Packages
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v2

- name: Log in to the Github Container registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push Docker image
uses: docker/build-push-action@v2
with:
context: ./docker/local-theia-build
file: local-theia-build.Dockerfile
push: true
tags: |
ghcr.io/${{ github.repository }}/blueprint-theia-builder:${{ github.event.inputs.tag }}
ghcr.io/${{ github.repository }}/blueprint-theia-builder:latest
16 changes: 16 additions & 0 deletions docker/local-theia-build/adduser
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#!/usr/bin/expect -f
set timeout 10

spawn npm adduser --registry http://localhost:4873/
match_max 100000

expect "Username"
send "dummy-user\r"

expect "Password"
send "dummy-p4ssword\r"

expect "Email: (this IS public)"
send "[email protected]\r"

expect "Logged in on http://localhost:4873/."
30 changes: 30 additions & 0 deletions docker/local-theia-build/entrypoint
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#!/bin/sh

if [ "$#" -eq 0 ]
then
REGISTRY=http://localhost:4873/
echo "Launching Verdaccio and adding dummy user"
verdaccio &
VERDACCIO_PID=$!
while ! nc -z localhost 4873; do
sleep 1
done
expect -f /tmp/adduser
else
REGISTRY=$1
fi

echo "Building Theia"
cd /tmp/theia
yarn config set registry $REGISTRY
yarn
yarn build

if [ "$#" -eq 0 ]
then
echo "Publishing Theia"
yarn publish:local:next --registry $REGISTRY

echo "Waiting..."
wait $VERDACCIO_PID
fi
27 changes: 27 additions & 0 deletions local-theia-build.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Prerequisites
# https://github.com/eclipse-theia/theia/blob/master/doc/Developing.md#prerequisites
FROM node:18.17.0
RUN apt-get update && \
apt-get install -y \
make \
gcc \
pkg-config \
build-essential \
libx11-dev \
libxkbfile-dev \
libsecret-1-dev && \
# install local npm registry and helper tools
yarn global add verdaccio && \
apt-get install -y expect-dev netcat-openbsd && \
mkdir /tmp/verdaccio

# Set storage location for verdaccio
ENV VERDACCIO_STORAGE_PATH /tmp/verdaccio

# Switch to expected workdir
WORKDIR /tmp

COPY adduser /tmp/adduser
COPY entrypoint /tmp/entrypoint

ENTRYPOINT ["/tmp/entrypoint"]
30 changes: 30 additions & 0 deletions local-theia-build.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Local Theia Build

## Prerequisites

All required tools to build Theia locally can be found

```sh
docker build -t local-theia-builder -f local-theia-build.Dockerfile ./docker/local-theia-build
```

## Local Build

```sh
# switch to your checked out theia code
cd ~/git/theia

# optional: if you built Theia locally before, you may want to clean local changes in order to get a reproducible clean build
# git clean -xfd

# export the location where you want the local registry to store your results
export VERDACCIO_STORAGE_PATH=~/tmp/verdaccio

# build Theia with our builder image
docker run --rm \
-v ${PWD}:/tmp/theia \
-v ${VERDACCIO_STORAGE_PATH}:/tmp/verdaccio \
-u $(id -u ${USER}):$(id -g ${USER}) \
-p=4873:4873 \
local-theia-builder
```

0 comments on commit 2504be3

Please sign in to comment.