From 5455d0d479bd773b6254f5ebd2f73eb80340dd55 Mon Sep 17 00:00:00 2001 From: mathieu-benoit <11720844+mathieu-benoit@users.noreply.github.com> Date: Mon, 19 Jan 2026 10:05:17 +0000 Subject: [PATCH] chore: update generated content Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- .../template/gcp-pubsub-emulator.md | 26 ++++ .../gcp-pubsub-emulator.md | 112 ++++++++++++++++++ data/examplesMeta.yml | 2 + .../.devcontainer/installMoreTools.sh | 16 +++ .../resource-provisioners/community/README.md | 1 + .../10-gcp-pubsub-emulator.provisioners.yaml | 40 +++++++ .../community/gcp-pubsub-emulator/score.yaml | 18 +++ .../.devcontainer/installMoreTools.sh | 16 +++ .../community-provisioners/README.md | 1 + .../10-gcp-pubsub-emulator.provisioners.yaml | 40 +++++++ .../gcp-pubsub-emulator/score.yaml | 18 +++ 11 files changed, 290 insertions(+) create mode 100644 content/en/examples/resource-provisioners/community/gcp-pubsub-emulator/score-compose/template/gcp-pubsub-emulator.md create mode 100644 content/en/examples/score/resources/community-provisioners/gcp-pubsub-emulator.md create mode 100644 gen/external-content/resource-provisioners/community/gcp-pubsub-emulator/score-compose/10-gcp-pubsub-emulator.provisioners.yaml create mode 100644 gen/external-content/resource-provisioners/community/gcp-pubsub-emulator/score.yaml create mode 100644 gen/external-content/score/resources/community-provisioners/gcp-pubsub-emulator/score-compose/10-gcp-pubsub-emulator.provisioners.yaml create mode 100644 gen/external-content/score/resources/community-provisioners/gcp-pubsub-emulator/score.yaml diff --git a/content/en/examples/resource-provisioners/community/gcp-pubsub-emulator/score-compose/template/gcp-pubsub-emulator.md b/content/en/examples/resource-provisioners/community/gcp-pubsub-emulator/score-compose/template/gcp-pubsub-emulator.md new file mode 100644 index 00000000..73cdaa2f --- /dev/null +++ b/content/en/examples/resource-provisioners/community/gcp-pubsub-emulator/score-compose/template/gcp-pubsub-emulator.md @@ -0,0 +1,26 @@ +--- +title: "gcp-pubsub-emulator" +draft: false +mermaid: true +type: examples +source: "community" +implementation: "score-compose" +resourceType: "gcp-pubsub-emulator" +provisionerType: "template" +flavor: "gcp" +excerpt: '' +description: 'Generates a Google Cloud Pub/Sub Emulator service for local development.' +expectedOutputs: + - host + - port + - project_id + - emulator_host +supportedParams: + - project_id +hasMore: false + +--- + +{{% resource-provisioner-content description="Generates a Google Cloud Pub/Sub Emulator service for local development." type="gcp-pubsub-emulator" supportedParams="project_id" expectedOutputs="host,port,project_id,emulator_host" %}} + +{{% example-file filename="10-gcp-pubsub-emulator.provisioners.yaml" dir="resource-provisioners/community/gcp-pubsub-emulator/score-compose" githubUrl="https://github.com/score-spec/community-provisioners/blob/main" %}} diff --git a/content/en/examples/score/resources/community-provisioners/gcp-pubsub-emulator.md b/content/en/examples/score/resources/community-provisioners/gcp-pubsub-emulator.md new file mode 100644 index 00000000..44b4f646 --- /dev/null +++ b/content/en/examples/score/resources/community-provisioners/gcp-pubsub-emulator.md @@ -0,0 +1,112 @@ +--- +title: "Gcp Pubsub Emulator" +draft: false +mermaid: true +type: examples +excerpt: '' +hasMore: false +parent: "Community Provisioners" +flavor: "Resources" + +--- + +{{% example-file filename="score.yaml" dir="score/resources/community-provisioners/gcp-pubsub-emulator" githubUrl="https://github.com/score-spec/community-provisioners/blob/main" %}} + +{{< tabs >}} +{{% tab name="score-compose" %}} +{{% example-file filename="10-gcp-pubsub-emulator.provisioners.yaml" dir="score/resources/community-provisioners/gcp-pubsub-emulator/score-compose" githubUrl="https://github.com/score-spec/community-provisioners/blob/main" %}} + +--- + +Initialize your local workspace, by importing a specific community provisioner: + +```bash +score-compose init --provisioners REPLACE-ME-WITH-ACTUAL-PROVISIONER-FILE-URL.yaml +``` + +_Note: you need to replace `REPLACE-ME-WITH-ACTUAL-PROVISIONER-FILE-URL.yaml` by the actual provisioner file you want to use and import. More information [here](https://docs.score.dev/docs/score-implementation/score-compose/resources-provisioners/#install-provisioner-files)._ + +Get the provisioners definition: + +```bash +score-compose provisioners list +``` + +Generate the platform specific manifests: + +```bash +score-compose generate score.yaml +``` + +See the resource outputs: + +```bash +score-compose resources list +``` + +You can run the following command on each resource listed with the previous command to get their `outputs`: + +```bash +score-compose resources get-outputs +``` + +Deploy the generated manifests: + +```bash +docker compose up -d +``` + +See the running containers: + +```bash +docker ps +``` + +{{%/ tab %}} +{{% tab name="score-k8s" %}} +Initialize your local workspace, by importing a specific community provisioner: + +```bash +score-k8s init --provisioners REPLACE-ME-WITH-ACTUAL-PROVISIONER-FILE-URL.yaml +``` + +_Note: you need to replace `REPLACE-ME-WITH-ACTUAL-PROVISIONER-FILE-URL.yaml` by the actual provisioner file you want to use and import. More information [here](https://docs.score.dev/docs/score-implementation/score-k8s/resources-provisioners/#install-provisioner-files)._ + +Get the provisioners definition: + +```bash +score-k8s provisioners list +``` + +Generate the platform specific manifests: + +```bash +score-k8s generate score.yaml +``` + +See the resource outputs: + +```bash +score-k8s resources list +``` + +You can run the following command on each resource listed with the previous command to get their `outputs`: + +```bash +score-k8s resources get-outputs +``` + +Deploy the generated manifests: + +```bash +kubectl apply -f manifests.yaml +``` + +See the running containers: + +```bash +kubectl get all +``` + +{{%/ tab %}} +{{< /tabs >}} diff --git a/data/examplesMeta.yml b/data/examplesMeta.yml index 430a472b..b20140f5 100644 --- a/data/examplesMeta.yml +++ b/data/examplesMeta.yml @@ -16,6 +16,7 @@ resource-provisioners: - endpoint - environment - example-provisioner-resource + - gcp-pubsub-emulator - horizontal-pod-autoscaler - kafka-topic - llm-model @@ -44,6 +45,7 @@ resource-provisioners: - endpoint-with-microcks-cli - example-provisioner - foo + - gcp - helm-template-redis - helm-upgrade-redis - ingress diff --git a/gen/external-content/resource-provisioners/community/.devcontainer/installMoreTools.sh b/gen/external-content/resource-provisioners/community/.devcontainer/installMoreTools.sh index 0c0d25e7..eca856ee 100755 --- a/gen/external-content/resource-provisioners/community/.devcontainer/installMoreTools.sh +++ b/gen/external-content/resource-provisioners/community/.devcontainer/installMoreTools.sh @@ -3,25 +3,41 @@ mkdir install-more-tools cd install-more-tools +# score-compose SCORE_COMPOSE_VERSION=$(curl -sL https://api.github.com/repos/score-spec/score-compose/releases/latest | jq -r .tag_name) wget https://github.com/score-spec/score-compose/releases/download/${SCORE_COMPOSE_VERSION}/score-compose_${SCORE_COMPOSE_VERSION}_linux_amd64.tar.gz tar -xvf score-compose_${SCORE_COMPOSE_VERSION}_linux_amd64.tar.gz chmod +x score-compose sudo mv score-compose /usr/local/bin +# score-k8s SCORE_K8S_VERSION=$(curl -sL https://api.github.com/repos/score-spec/score-k8s/releases/latest | jq -r .tag_name) wget https://github.com/score-spec/score-k8s/releases/download/${SCORE_K8S_VERSION}/score-k8s_${SCORE_K8S_VERSION}_linux_amd64.tar.gz tar -xvf score-k8s_${SCORE_K8S_VERSION}_linux_amd64.tar.gz chmod +x score-k8s sudo mv score-k8s /usr/local/bin +# kind KIND_VERSION=$(curl -sL https://api.github.com/repos/kubernetes-sigs/kind/releases/latest | jq -r .tag_name) curl -Lo ./kind https://kind.sigs.k8s.io/dl/${KIND_VERSION}/kind-linux-amd64 chmod +x ./kind sudo mv ./kind /usr/local/bin/kind +# yq sudo wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/bin/yq sudo chmod +x /usr/bin/yq +# docker model-plugin +sudo install -m 0755 -d /etc/apt/keyrings +sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc +sudo chmod a+r /etc/apt/keyrings/docker.asc +echo \ +"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ +$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \ +sudo tee /etc/apt/sources.list.d/docker.list > /dev/null +sudo apt-get update +sudo apt-get install -y docker-model-plugin +docker model list + cd .. rm -rf install-more-tools \ No newline at end of file diff --git a/gen/external-content/resource-provisioners/community/README.md b/gen/external-content/resource-provisioners/community/README.md index bfd3cf3a..8af987f9 100644 --- a/gen/external-content/resource-provisioners/community/README.md +++ b/gen/external-content/resource-provisioners/community/README.md @@ -18,6 +18,7 @@ score-compose init --provisioners https://raw.githubusercontent.com/score-spec/c | 10-dns-with-url.provisioners.yaml | `dns` | (any) | (none) | `host`, `url` | Outputs a `*.localhost` domain as the hostname and associated URL in http on port `8080`. | 10-endpoint-with-microcks.provisioners.yaml | `endpoint` | (any) | `port`, `openapi_file`, `openapi_title` | `url` | Outputs an endpoint URL for connecting to an other workload (a Microcks mock is generated if not found). | 10-env.provisioners.yaml | `environment` | (any) | (none) | (none) | Loads environment variables from a local `.env` file. +| 10-gcp-pubsub-emulator.provisioners.yaml | `gcp-pubsub-emulator` | (any) | `project_id` | `host`, `port`, `project_id`, `emulator_host` | Generates a Google Cloud Pub/Sub Emulator service for local development. | 10-hpa.provisioners.yaml | `horizontal-pod-autoscaler` | (any) | (none) | (none) | Generates an empty object because HPA is not supported in Docker Compose. | 10-dmr-llm-model-via-curl-cmd.provisioners.yaml | `llm-model` | (any) | `model` | `model`, `url`, `api-key` | Runs `curl` to download the model with the Docker Model Runner (DMR). | 10-dmr-llm-model-via-curl-service.provisioners.yaml | `llm-model` | (any) | `model` | `model`, `url`, `api-key` | Generates a `curl` service downloading the model with the Docker Model Runner (DMR). diff --git a/gen/external-content/resource-provisioners/community/gcp-pubsub-emulator/score-compose/10-gcp-pubsub-emulator.provisioners.yaml b/gen/external-content/resource-provisioners/community/gcp-pubsub-emulator/score-compose/10-gcp-pubsub-emulator.provisioners.yaml new file mode 100644 index 00000000..457382a9 --- /dev/null +++ b/gen/external-content/resource-provisioners/community/gcp-pubsub-emulator/score-compose/10-gcp-pubsub-emulator.provisioners.yaml @@ -0,0 +1,40 @@ +# GCP Pub/Sub Emulator provisioner +# For local development and testing without connecting to real GCP +- uri: template://community-provisioners/gcp-pubsub-emulator + type: gcp-pubsub-emulator + description: Generates a Google Cloud Pub/Sub Emulator service for local development. + supported_params: + - project_id + init: | + port: 8085 + randomServiceName: pubsub-emulator-{{ randAlphaNum 6 | lower }} + defaultProjectId: test-project-{{ randAlphaNum 6 | lower }} + state: | + serviceName: {{ dig "serviceName" .Init.randomServiceName .State | quote }} + projectId: {{ dig "projectId" (.Params.project_id | default .Init.defaultProjectId) .State | quote }} + outputs: | + host: {{ .State.serviceName }} + port: {{ .Init.port }} + project_id: {{ .State.projectId }} + emulator_host: {{ .State.serviceName }}:{{ .Init.port }} + expected_outputs: + - host + - port + - project_id + - emulator_host + services: | + {{ .State.serviceName }}: + labels: + dev.score.compose.res.uid: {{ .Uid }} + image: gcr.io/google.com/cloudsdktool/google-cloud-cli:emulators + command: + - gcloud + - beta + - emulators + - pubsub + - start + - --host-port=0.0.0.0:{{ .Init.port }} + - --project={{ .State.projectId }} + restart: always + info_logs: | + - "{{ .Uid }}: Pub/Sub Emulator is running at {{ .State.serviceName }}:{{ .Init.port }}" diff --git a/gen/external-content/resource-provisioners/community/gcp-pubsub-emulator/score.yaml b/gen/external-content/resource-provisioners/community/gcp-pubsub-emulator/score.yaml new file mode 100644 index 00000000..e9abaa0c --- /dev/null +++ b/gen/external-content/resource-provisioners/community/gcp-pubsub-emulator/score.yaml @@ -0,0 +1,18 @@ +apiVersion: score.dev/v1b1 +metadata: + name: my-workload +containers: + my-container: + image: busybox + command: ["/bin/sh"] + args: ["-c", "while true; do echo $PUBSUB_EMULATOR_HOST; sleep 5; done"] + variables: + PUBSUB_HOST: "${resources.pubsub.host}" + PUBSUB_PORT: "${resources.pubsub.port}" + PUBSUB_PROJECT_ID: "${resources.pubsub.project_id}" + PUBSUB_EMULATOR_HOST: "${resources.pubsub.emulator_host}" +resources: + pubsub: + type: gcp-pubsub-emulator + params: + project_id: my-test-project diff --git a/gen/external-content/score/resources/community-provisioners/.devcontainer/installMoreTools.sh b/gen/external-content/score/resources/community-provisioners/.devcontainer/installMoreTools.sh index 0c0d25e7..eca856ee 100755 --- a/gen/external-content/score/resources/community-provisioners/.devcontainer/installMoreTools.sh +++ b/gen/external-content/score/resources/community-provisioners/.devcontainer/installMoreTools.sh @@ -3,25 +3,41 @@ mkdir install-more-tools cd install-more-tools +# score-compose SCORE_COMPOSE_VERSION=$(curl -sL https://api.github.com/repos/score-spec/score-compose/releases/latest | jq -r .tag_name) wget https://github.com/score-spec/score-compose/releases/download/${SCORE_COMPOSE_VERSION}/score-compose_${SCORE_COMPOSE_VERSION}_linux_amd64.tar.gz tar -xvf score-compose_${SCORE_COMPOSE_VERSION}_linux_amd64.tar.gz chmod +x score-compose sudo mv score-compose /usr/local/bin +# score-k8s SCORE_K8S_VERSION=$(curl -sL https://api.github.com/repos/score-spec/score-k8s/releases/latest | jq -r .tag_name) wget https://github.com/score-spec/score-k8s/releases/download/${SCORE_K8S_VERSION}/score-k8s_${SCORE_K8S_VERSION}_linux_amd64.tar.gz tar -xvf score-k8s_${SCORE_K8S_VERSION}_linux_amd64.tar.gz chmod +x score-k8s sudo mv score-k8s /usr/local/bin +# kind KIND_VERSION=$(curl -sL https://api.github.com/repos/kubernetes-sigs/kind/releases/latest | jq -r .tag_name) curl -Lo ./kind https://kind.sigs.k8s.io/dl/${KIND_VERSION}/kind-linux-amd64 chmod +x ./kind sudo mv ./kind /usr/local/bin/kind +# yq sudo wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -O /usr/bin/yq sudo chmod +x /usr/bin/yq +# docker model-plugin +sudo install -m 0755 -d /etc/apt/keyrings +sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc +sudo chmod a+r /etc/apt/keyrings/docker.asc +echo \ +"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ +$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \ +sudo tee /etc/apt/sources.list.d/docker.list > /dev/null +sudo apt-get update +sudo apt-get install -y docker-model-plugin +docker model list + cd .. rm -rf install-more-tools \ No newline at end of file diff --git a/gen/external-content/score/resources/community-provisioners/README.md b/gen/external-content/score/resources/community-provisioners/README.md index bfd3cf3a..8af987f9 100644 --- a/gen/external-content/score/resources/community-provisioners/README.md +++ b/gen/external-content/score/resources/community-provisioners/README.md @@ -18,6 +18,7 @@ score-compose init --provisioners https://raw.githubusercontent.com/score-spec/c | 10-dns-with-url.provisioners.yaml | `dns` | (any) | (none) | `host`, `url` | Outputs a `*.localhost` domain as the hostname and associated URL in http on port `8080`. | 10-endpoint-with-microcks.provisioners.yaml | `endpoint` | (any) | `port`, `openapi_file`, `openapi_title` | `url` | Outputs an endpoint URL for connecting to an other workload (a Microcks mock is generated if not found). | 10-env.provisioners.yaml | `environment` | (any) | (none) | (none) | Loads environment variables from a local `.env` file. +| 10-gcp-pubsub-emulator.provisioners.yaml | `gcp-pubsub-emulator` | (any) | `project_id` | `host`, `port`, `project_id`, `emulator_host` | Generates a Google Cloud Pub/Sub Emulator service for local development. | 10-hpa.provisioners.yaml | `horizontal-pod-autoscaler` | (any) | (none) | (none) | Generates an empty object because HPA is not supported in Docker Compose. | 10-dmr-llm-model-via-curl-cmd.provisioners.yaml | `llm-model` | (any) | `model` | `model`, `url`, `api-key` | Runs `curl` to download the model with the Docker Model Runner (DMR). | 10-dmr-llm-model-via-curl-service.provisioners.yaml | `llm-model` | (any) | `model` | `model`, `url`, `api-key` | Generates a `curl` service downloading the model with the Docker Model Runner (DMR). diff --git a/gen/external-content/score/resources/community-provisioners/gcp-pubsub-emulator/score-compose/10-gcp-pubsub-emulator.provisioners.yaml b/gen/external-content/score/resources/community-provisioners/gcp-pubsub-emulator/score-compose/10-gcp-pubsub-emulator.provisioners.yaml new file mode 100644 index 00000000..457382a9 --- /dev/null +++ b/gen/external-content/score/resources/community-provisioners/gcp-pubsub-emulator/score-compose/10-gcp-pubsub-emulator.provisioners.yaml @@ -0,0 +1,40 @@ +# GCP Pub/Sub Emulator provisioner +# For local development and testing without connecting to real GCP +- uri: template://community-provisioners/gcp-pubsub-emulator + type: gcp-pubsub-emulator + description: Generates a Google Cloud Pub/Sub Emulator service for local development. + supported_params: + - project_id + init: | + port: 8085 + randomServiceName: pubsub-emulator-{{ randAlphaNum 6 | lower }} + defaultProjectId: test-project-{{ randAlphaNum 6 | lower }} + state: | + serviceName: {{ dig "serviceName" .Init.randomServiceName .State | quote }} + projectId: {{ dig "projectId" (.Params.project_id | default .Init.defaultProjectId) .State | quote }} + outputs: | + host: {{ .State.serviceName }} + port: {{ .Init.port }} + project_id: {{ .State.projectId }} + emulator_host: {{ .State.serviceName }}:{{ .Init.port }} + expected_outputs: + - host + - port + - project_id + - emulator_host + services: | + {{ .State.serviceName }}: + labels: + dev.score.compose.res.uid: {{ .Uid }} + image: gcr.io/google.com/cloudsdktool/google-cloud-cli:emulators + command: + - gcloud + - beta + - emulators + - pubsub + - start + - --host-port=0.0.0.0:{{ .Init.port }} + - --project={{ .State.projectId }} + restart: always + info_logs: | + - "{{ .Uid }}: Pub/Sub Emulator is running at {{ .State.serviceName }}:{{ .Init.port }}" diff --git a/gen/external-content/score/resources/community-provisioners/gcp-pubsub-emulator/score.yaml b/gen/external-content/score/resources/community-provisioners/gcp-pubsub-emulator/score.yaml new file mode 100644 index 00000000..e9abaa0c --- /dev/null +++ b/gen/external-content/score/resources/community-provisioners/gcp-pubsub-emulator/score.yaml @@ -0,0 +1,18 @@ +apiVersion: score.dev/v1b1 +metadata: + name: my-workload +containers: + my-container: + image: busybox + command: ["/bin/sh"] + args: ["-c", "while true; do echo $PUBSUB_EMULATOR_HOST; sleep 5; done"] + variables: + PUBSUB_HOST: "${resources.pubsub.host}" + PUBSUB_PORT: "${resources.pubsub.port}" + PUBSUB_PROJECT_ID: "${resources.pubsub.project_id}" + PUBSUB_EMULATOR_HOST: "${resources.pubsub.emulator_host}" +resources: + pubsub: + type: gcp-pubsub-emulator + params: + project_id: my-test-project