-
Notifications
You must be signed in to change notification settings - Fork 3
OCM package build + publish + local tests #331
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
base: main
Are you sure you want to change the base?
Changes from all commits
e87e951
bd7439b
8232ef0
a53fb56
12a9a5d
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -33,3 +33,6 @@ public/frontend-config.json | |
|
||
# Sentry Config File | ||
.env.sentry-build-plugin | ||
|
||
# OCM build artifacts | ||
.ctf/ |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -10,6 +10,7 @@ RUN npm ci | |
|
||
# Build | ||
ENV NODE_ENV=production | ||
ENV NODE_OPTIONS=--max-old-space-size=4096 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is it without not working? Why we need to change the Dockerfile? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It was not working for me when I was trying to deploy it locally |
||
COPY . . | ||
RUN npm run build | ||
|
||
|
Original file line number | Diff line number | Diff line change | ||||||
---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,144 @@ | ||||||||
version: "3" | ||||||||
|
||||||||
vars: | ||||||||
# Variables for Docker image | ||||||||
REGISTRY: ghcr.io/openmcp-project | ||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Lets do it like this. So someone can override the registry locally if he/she wants to. |
||||||||
IMAGE_NAME: mcp-ui-frontend | ||||||||
IMAGE_TAG: '{{.TAG | default "latest"}}' | ||||||||
DOCKER_IMAGE: "{{.REGISTRY}}/{{.IMAGE_NAME}}:{{.IMAGE_TAG}}" | ||||||||
|
||||||||
# Variables for local testing | ||||||||
LOCAL_REGISTRY: localhost:5000 | ||||||||
LOCAL_IMAGE_NAME: mcp-ui-frontend | ||||||||
LOCAL_DOCKER_IMAGE: "{{.LOCAL_REGISTRY}}/{{.LOCAL_IMAGE_NAME}}:{{.IMAGE_TAG}}" | ||||||||
Comment on lines
+11
to
+13
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
You dont need to add a local registry & image for building the ocm component locally. You can just use the oci image from remote and build it locally with the remote image. |
||||||||
|
||||||||
# Variables for OCM component | ||||||||
OCM_COMPONENT_NAME: github.com/openmcp-project/ui | ||||||||
OCM_COMPONENT_VERSION: '{{.OCM_COMPONENT_VERSION | default .IMAGE_TAG}}' | ||||||||
OCM_PROVIDER: openmcp-project | ||||||||
OCM_TARGET_REPO: '{{.OCM_TARGET_REPO | default (print .REGISTRY "/components") }}' | ||||||||
OCM_OUTPUT_DIR: "{{.ROOT_DIR}}/.ctf" | ||||||||
OCM_DESCRIPTOR: "{{.ROOT_DIR}}/ocm/component-descriptor.yaml" | ||||||||
OCM_DESCRIPTOR_LOCAL: "{{.ROOT_DIR}}/ocm/component-descriptor-local.yaml" | ||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||
|
||||||||
tasks: | ||||||||
default: | ||||||||
desc: Show available tasks | ||||||||
cmds: | ||||||||
- task --list | ||||||||
|
||||||||
build:ocm: | ||||||||
desc: "Builds the ocm component. Usage: task build:ocm -- <version>" | ||||||||
cmds: | ||||||||
- rm -rf {{.OCM_OUTPUT_DIR}} | ||||||||
- | | ||||||||
ocm add components --create --force --copy-resources \ | ||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Also we dont need to copy the resource, the image is already pushed to the oci ghcr repo |
||||||||
--complete \ | ||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
We dont need the complete mark here. |
||||||||
--lookup {{.OCM_TARGET_REPO}} \ | ||||||||
--file {{.OCM_OUTPUT_DIR}} \ | ||||||||
{{.OCM_DESCRIPTOR}} -- \ | ||||||||
VERSION={{.OCM_COMPONENT_VERSION}} \ | ||||||||
COMPONENT_NAME={{.OCM_COMPONENT_NAME}} \ | ||||||||
PROVIDER={{.OCM_PROVIDER}} | ||||||||
vars: | ||||||||
OCM_COMPONENT_VERSION: '{{.CLI_ARGS}}' | ||||||||
|
||||||||
publish:ocm: | ||||||||
desc: "Publishes the ocm component to the registry." | ||||||||
cmds: | ||||||||
- | | ||||||||
ocm transfer ctf \ | ||||||||
--copy-resources \ | ||||||||
--enforce --overwrite \ | ||||||||
Comment on lines
+51
to
+52
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
No need for copy-resources, the image is already in ghcr. This would copy it again. |
||||||||
{{.OCM_OUTPUT_DIR}} {{.OCM_TARGET_REPO}} | ||||||||
# Those tasks are only for local testing purposes | ||||||||
|
||||||||
test:inspect-ocm: | ||||||||
desc: "Inspects the locally built OCM component. Usage: task test:inspect-ocm -- <version>" | ||||||||
cmds: | ||||||||
- echo "--- Component Details ---" | ||||||||
- ocm get component -o yaml {{.OCM_COMPONENT_NAME}}:{{.OCM_COMPONENT_VERSION}} --repo {{.OCM_OUTPUT_DIR}} | ||||||||
- echo "\n--- Component Resources ---" | ||||||||
- ocm get resources -o wide {{.OCM_COMPONENT_NAME}}:{{.OCM_COMPONENT_VERSION}} --repo {{.OCM_OUTPUT_DIR}} | ||||||||
vars: | ||||||||
OCM_COMPONENT_VERSION: '{{.CLI_ARGS}}' | ||||||||
|
||||||||
test:build-image: | ||||||||
desc: "Builds the docker image for local testing. Usage: task test:build-image TAG=v-local-test" | ||||||||
cmds: | ||||||||
- docker build -t {{.DOCKER_IMAGE}} . | ||||||||
|
||||||||
test:publish-image: | ||||||||
desc: "Publishes the docker image for local testing. Usage: task test:publish-image TAG=v-local-test" | ||||||||
cmds: | ||||||||
- docker push {{.DOCKER_IMAGE}} | ||||||||
|
||||||||
test:run: | ||||||||
desc: "Runs the locally built image in a docker container. Usage: task test:run TAG=v-local-test" | ||||||||
cmds: | ||||||||
- docker run --rm -p 3000:3000 {{.DOCKER_IMAGE}} | ||||||||
|
||||||||
test:run-from-ocm: | ||||||||
desc: "Extracts image reference from OCM component and runs it. Usage: task test:run-from-ocm -- <version>" | ||||||||
cmds: | ||||||||
- | | ||||||||
IMAGE_REF=$(ocm get resources {{.OCM_COMPONENT_NAME}}:{{.OCM_COMPONENT_VERSION}} --repo {{.OCM_OUTPUT_DIR}} -o json | jq -r '.items[0].element.access.imageReference') | ||||||||
echo "Running image from OCM component: $IMAGE_REF" | ||||||||
docker run --rm -p 5173:5173 --env-file {{.ROOT_DIR}}/.env $IMAGE_REF | ||||||||
vars: | ||||||||
OCM_COMPONENT_VERSION: '{{.CLI_ARGS}}' | ||||||||
Comment on lines
+57
to
+90
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Would prefer to call this not Maybe lets call it We also don't need the action |
||||||||
|
||||||||
local:start-registry: | ||||||||
desc: "Starts a local Docker registry on localhost:5000" | ||||||||
cmds: | ||||||||
- docker run -d -p 5000:5000 --name registry --rm registry:2 | ||||||||
status: | ||||||||
- docker ps | grep -q registry | ||||||||
|
||||||||
local:stop-registry: | ||||||||
desc: "Stops the local Docker registry" | ||||||||
cmds: | ||||||||
- docker stop registry | ||||||||
ignore_error: true | ||||||||
|
||||||||
local:build-and-push: | ||||||||
desc: "Builds and pushes image to local registry. Usage: task local:build-and-push TAG=v0.0.1" | ||||||||
cmds: | ||||||||
- docker build -t localhost:5000/mcp-ui-frontend:{{.TAG}} . | ||||||||
- docker push localhost:5000/mcp-ui-frontend:{{.TAG}} | ||||||||
vars: | ||||||||
TAG: '{{.TAG | default "latest"}}' | ||||||||
|
||||||||
local:build-ocm: | ||||||||
desc: "Builds OCM component with local registry reference (uses --skip-digest-generation for local testing). Usage: task local:build-ocm -- <version>" | ||||||||
cmds: | ||||||||
- rm -rf {{.OCM_OUTPUT_DIR}} | ||||||||
- | | ||||||||
ocm add components --create --force --skip-digest-generation \ | ||||||||
--file {{.OCM_OUTPUT_DIR}} \ | ||||||||
{{.OCM_DESCRIPTOR_LOCAL}} -- \ | ||||||||
VERSION={{.OCM_COMPONENT_VERSION}} \ | ||||||||
COMPONENT_NAME={{.OCM_COMPONENT_NAME}} \ | ||||||||
PROVIDER={{.OCM_PROVIDER}} | ||||||||
vars: | ||||||||
OCM_COMPONENT_VERSION: '{{.CLI_ARGS}}' | ||||||||
|
||||||||
# This is full workflow to create local registry, build, push, create OCM and run application locally. | ||||||||
|
||||||||
local:test-full-flow: | ||||||||
desc: "Full local test: start registry, build, push, create OCM, run. Usage: task local:test-full-flow TAG=v0.0.1" | ||||||||
cmds: | ||||||||
- task: local:start-registry | ||||||||
- task: local:build-and-push | ||||||||
vars: | ||||||||
TAG: "{{.TAG}}" | ||||||||
- task: local:build-ocm | ||||||||
vars: | ||||||||
CLI_ARGS: "{{.TAG}}" | ||||||||
- task: test:inspect-ocm | ||||||||
vars: | ||||||||
CLI_ARGS: "{{.TAG}}" | ||||||||
- task: test:run-from-ocm | ||||||||
vars: | ||||||||
CLI_ARGS: "{{.TAG}}" | ||||||||
Comment on lines
+92
to
+144
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Lets remove this local registry part. We don't need this. |
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There is no need for having a local and a remote descriptor. We just need one, the remote. |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
name: ${COMPONENT_NAME} | ||
version: ${VERSION} | ||
provider: | ||
name: ${PROVIDER} | ||
sources: [] | ||
componentReferences: [] | ||
resources: | ||
- name: mcp-ui-frontend-image | ||
type: ociImage | ||
version: ${VERSION} | ||
access: | ||
type: ociArtifact | ||
imageReference: localhost:5000/mcp-ui-frontend:${VERSION} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
name: ${COMPONENT_NAME} | ||
version: ${VERSION} | ||
provider: | ||
name: ${PROVIDER} | ||
sources: [] | ||
componentReferences: [] | ||
resources: | ||
- name: mcp-ui-frontend-image | ||
type: ociImage | ||
version: ${VERSION} | ||
access: | ||
type: ociArtifact | ||
imageReference: ghcr.io/openmcp-project/mcp-ui-frontend:${VERSION} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure if we need this and installation below
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We need this.