From 80699abfa0196c3d5c6887a7d9893ae7474c5a61 Mon Sep 17 00:00:00 2001 From: Andrei Matveyeu Date: Fri, 24 Jan 2025 16:15:14 +0100 Subject: [PATCH 1/7] Migrate container images to ghcr.io --- .github/workflows/generate-manifest.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/generate-manifest.yml b/.github/workflows/generate-manifest.yml index f115ac4a..5f20d64c 100644 --- a/.github/workflows/generate-manifest.yml +++ b/.github/workflows/generate-manifest.yml @@ -12,8 +12,12 @@ jobs: steps: - name: Checkout code uses: actions/checkout@v4 - - name: Log into registry - run: echo "${{ secrets.REGISTRYPASSWORD }}" | docker login registry.nordix.org -u ${{ secrets.REGISTRYUSERNAME }} --password-stdin + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} - name: Clean workspace run: | rm -r dist | true From 8855a95411c80e254e4f5874110757069d37e02b Mon Sep 17 00:00:00 2001 From: Andrei Matveyeu Date: Fri, 24 Jan 2025 16:19:06 +0100 Subject: [PATCH 2/7] change container image references --- .github/workflows/generate-manifest.yml | 2 +- Makefile | 2 +- README.md | 2 +- api/v1alpha1/cluster_types.go | 16 +++++++-------- ...s.eiffel-community.github.io_clusters.yaml | 18 ++++++++--------- config/manager/kustomization.yaml | 2 +- config/samples/etos_v1alpha1_cluster.yaml | 10 +++++----- internal/etos/suitestarter/suitestarter.go | 2 +- manifests/controller/install.yaml | 20 +++++++++---------- skaffold.yaml | 2 +- 10 files changed, 38 insertions(+), 38 deletions(-) diff --git a/.github/workflows/generate-manifest.yml b/.github/workflows/generate-manifest.yml index 5f20d64c..eca15dff 100644 --- a/.github/workflows/generate-manifest.yml +++ b/.github/workflows/generate-manifest.yml @@ -23,7 +23,7 @@ jobs: rm -r dist | true - name: Generate manifest file run: | - IMAGE_ID=registry.nordix.org/eiffel/etos-controller + IMAGE_ID=ghcr.io/eiffel-community/etos-controller # Strip git ref prefix from version VERSION=$(echo "${{ github.ref }}" | sed -e 's,.*/\(.*\),\1,') # Strip "v" prefix from tag name diff --git a/Makefile b/Makefile index 1b58704e..8ca8fec4 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ # Image URL to use all building/pushing image targets -IMG ?= registry.nordix.org/eiffel/etos-controller:latest +IMG ?= ghcr.io/eiffel-community/etos-controller:latest # ENVTEST_K8S_VERSION refers to the version of kubebuilder assets to be downloaded by envtest binary. ENVTEST_K8S_VERSION = 1.30.0 diff --git a/README.md b/README.md index e1f45f06..dbc91232 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,7 @@ Installation Steps :: - helm repo add Eiffel registry.nordix.org/eiffel + helm repo add Eiffel ghcr.io/eiffel-community 2. Then simply install ETOS using Helm diff --git a/api/v1alpha1/cluster_types.go b/api/v1alpha1/cluster_types.go index 9feb1991..e4e9c4be 100644 --- a/api/v1alpha1/cluster_types.go +++ b/api/v1alpha1/cluster_types.go @@ -40,13 +40,13 @@ type EventRepository struct { // We do not build the GraphQL API automatically nor publish it remotely. // This will need to be provided to work. - // +kubebuilder:default={"image": "registry.nordix.org/eiffel/eiffel-graphql-api:latest"} + // +kubebuilder:default={"image": "ghcr.io/eiffel-community/eiffel-graphql-api:latest"} // +optional API Image `json:"api"` // We do not build the GraphQL API automatically nor publish it remotely. // This will need to be provided to work. - // +kubebuilder:default={"image": "registry.nordix.org/eiffel/eiffel-graphql-storage:latest"} + // +kubebuilder:default={"image": "ghcr.io/eiffel-community/eiffel-graphql-storage:latest"} // +optional Storage Image `json:"storage"` // +kubebuilder:default="etos" @@ -223,25 +223,25 @@ type ETOSConfig struct { // ETOS describes the deployment of an ETOS cluster. type ETOS struct { - // +kubebuilder:default={"image": "registry.nordix.org/eiffel/etos-api:latest"} + // +kubebuilder:default={"image": "ghcr.io/eiffel-community/etos-api:latest"} // +optional API ETOSAPI `json:"api"` - // +kubebuilder:default={"image": "registry.nordix.org/eiffel/etos-sse:latest"} + // +kubebuilder:default={"image": "ghcr.io/eiffel-community/etos-sse:latest"} // +optional SSE ETOSSSE `json:"sse"` - // +kubebuilder:default={"image": "registry.nordix.org/eiffel/etos-log-area:latest"} + // +kubebuilder:default={"image": "ghcr.io/eiffel-community/etos-log-area:latest"} // +optional LogArea ETOSLogArea `json:"logArea"` - // +kubebuilder:default={"image": "registry.nordix.org/eiffel/etos-suite-runner:latest", "logListener": {"image": "registry.nordix.org/eiffel/etos-log-listener:latest"}} + // +kubebuilder:default={"image": "ghcr.io/eiffel-community/etos-suite-runner:latest", "logListener": {"image": "ghcr.io/eiffel-community/etos-log-listener:latest"}} // +optional SuiteRunner ETOSSuiteRunner `json:"suiteRunner"` // +kubebuilder:default={"version": "latest"} // +optional TestRunner ETOSTestRunner `json:"testRunner"` - // +kubebuilder:default={"image": "registry.nordix.org/eiffel/etos-suite-starter:latest"} + // +kubebuilder:default={"image": "ghcr.io/eiffel-community/etos-suite-starter:latest"} // +optional SuiteStarter ETOSSuiteStarter `json:"suiteStarter"` - // +kubebuilder:default={"image": "registry.nordix.org/eiffel/etos-environment-provider:latest"} + // +kubebuilder:default={"image": "ghcr.io/eiffel-community/etos-environment-provider:latest"} // +optional EnvironmentProvider ETOSEnvironmentProvider `json:"environmentProvider"` Ingress Ingress `json:"ingress,omitempty"` diff --git a/config/crd/bases/etos.eiffel-community.github.io_clusters.yaml b/config/crd/bases/etos.eiffel-community.github.io_clusters.yaml index 90a0c488..41138056 100644 --- a/config/crd/bases/etos.eiffel-community.github.io_clusters.yaml +++ b/config/crd/bases/etos.eiffel-community.github.io_clusters.yaml @@ -73,7 +73,7 @@ spec: properties: api: default: - image: registry.nordix.org/eiffel/etos-api:latest + image: ghcr.io/eiffel-community/etos-api:latest description: ETOSAPI describes the deployment of the ETOS API. properties: executionSpaceProviderSecret: @@ -206,7 +206,7 @@ spec: type: object environmentProvider: default: - image: registry.nordix.org/eiffel/etos-environment-provider:latest + image: ghcr.io/eiffel-community/etos-environment-provider:latest description: ETOSEnvironmentProvider describes the deployment of an ETOS environment provider. properties: @@ -238,7 +238,7 @@ spec: type: object logArea: default: - image: registry.nordix.org/eiffel/etos-log-area:latest + image: ghcr.io/eiffel-community/etos-log-area:latest description: ETOSLogArea describes th deployment of an ETOS log area API. properties: @@ -254,7 +254,7 @@ spec: type: object sse: default: - image: registry.nordix.org/eiffel/etos-sse:latest + image: ghcr.io/eiffel-community/etos-sse:latest description: ETOSSSE describes th deployment of an ETOS Server Sent Events API. properties: @@ -270,9 +270,9 @@ spec: type: object suiteRunner: default: - image: registry.nordix.org/eiffel/etos-suite-runner:latest + image: ghcr.io/eiffel-community/etos-suite-runner:latest logListener: - image: registry.nordix.org/eiffel/etos-log-listener:latest + image: ghcr.io/eiffel-community/etos-log-listener:latest description: ETOSSuiteRunner describes the deployment of an ETOS suite runner. properties: @@ -309,7 +309,7 @@ spec: type: object suiteStarter: default: - image: registry.nordix.org/eiffel/etos-suite-starter:latest + image: ghcr.io/eiffel-community/etos-suite-starter:latest description: ETOSSuiteStarter describes the deployment of an ETOS suite starter. properties: @@ -377,7 +377,7 @@ spec: properties: api: default: - image: registry.nordix.org/eiffel/eiffel-graphql-api:latest + image: ghcr.io/eiffel-community/eiffel-graphql-api:latest description: |- We do not build the GraphQL API automatically nor publish it remotely. This will need to be provided to work. @@ -497,7 +497,7 @@ spec: type: object storage: default: - image: registry.nordix.org/eiffel/eiffel-graphql-storage:latest + image: ghcr.io/eiffel-community/eiffel-graphql-storage:latest description: |- We do not build the GraphQL API automatically nor publish it remotely. This will need to be provided to work. diff --git a/config/manager/kustomization.yaml b/config/manager/kustomization.yaml index eadc6e4d..a9ccbdfb 100644 --- a/config/manager/kustomization.yaml +++ b/config/manager/kustomization.yaml @@ -4,5 +4,5 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization images: - name: controller - newName: registry.nordix.org/eiffel/etos-controller + newName: ghcr.io/eiffel-community/etos-controller newTag: 5becd344 diff --git a/config/samples/etos_v1alpha1_cluster.yaml b/config/samples/etos_v1alpha1_cluster.yaml index 7740833e..b6b7cd44 100644 --- a/config/samples/etos_v1alpha1_cluster.yaml +++ b/config/samples/etos_v1alpha1_cluster.yaml @@ -8,11 +8,11 @@ metadata: spec: etos: api: - image: "registry.nordix.org/eiffel/etos-api:672f982e" + image: "ghcr.io/eiffel-community/etos-api:672f982e" sse: - image: "registry.nordix.org/eiffel/etos-sse:672f982e" + image: "ghcr.io/eiffel-community/etos-sse:672f982e" logArea: - image: "registry.nordix.org/eiffel/etos-logarea:672f982e" + image: "ghcr.io/eiffel-community/etos-logarea:672f982e" ingress: enabled: true database: @@ -26,8 +26,8 @@ spec: queueName: "etos.*.log" eventRepository: deploy: true - apiImage: registry.nordix.org/eiffel/eiffel-graphql-api:latest - storageImage: registry.nordix.org/eiffel/eiffel-graphql-storage:latest + apiImage: ghcr.io/eiffel-community/eiffel-graphql-api:latest + storageImage: ghcr.io/eiffel-community/eiffel-graphql-storage:latest mongo: deploy: true ingress: diff --git a/internal/etos/suitestarter/suitestarter.go b/internal/etos/suitestarter/suitestarter.go index 82e2a7a9..05dc3da8 100644 --- a/internal/etos/suitestarter/suitestarter.go +++ b/internal/etos/suitestarter/suitestarter.go @@ -605,7 +605,7 @@ func (r *ETOSSuiteStarterDeployment) suiteRunnerTemplate(templateName types.Name - mountPath: /kubexit name: kubexit - name: create-queue - image: registry.nordix.org/eiffel/etos-log-listener:4969c9b2 + image: ghcr.io/eiffel-community/etos-log-listener:4969c9b2 command: ["python", "-u", "-m", "create_queue"] envFrom: - secretRef: diff --git a/manifests/controller/install.yaml b/manifests/controller/install.yaml index 04530c1c..29bf249d 100644 --- a/manifests/controller/install.yaml +++ b/manifests/controller/install.yaml @@ -82,7 +82,7 @@ spec: properties: api: default: - image: registry.nordix.org/eiffel/etos-api:latest + image: ghcr.io/eiffel-community/etos-api:latest description: ETOSAPI describes the deployment of the ETOS API. properties: executionSpaceProviderSecret: @@ -215,7 +215,7 @@ spec: type: object environmentProvider: default: - image: registry.nordix.org/eiffel/etos-environment-provider:latest + image: ghcr.io/eiffel-community/etos-environment-provider:latest description: ETOSEnvironmentProvider describes the deployment of an ETOS environment provider. properties: @@ -247,7 +247,7 @@ spec: type: object logArea: default: - image: registry.nordix.org/eiffel/etos-log-area:latest + image: ghcr.io/eiffel-community/etos-log-area:latest description: ETOSLogArea describes th deployment of an ETOS log area API. properties: @@ -263,7 +263,7 @@ spec: type: object sse: default: - image: registry.nordix.org/eiffel/etos-sse:latest + image: ghcr.io/eiffel-community/etos-sse:latest description: ETOSSSE describes th deployment of an ETOS Server Sent Events API. properties: @@ -279,9 +279,9 @@ spec: type: object suiteRunner: default: - image: registry.nordix.org/eiffel/etos-suite-runner:latest + image: ghcr.io/eiffel-community/etos-suite-runner:latest logListener: - image: registry.nordix.org/eiffel/etos-log-listener:latest + image: ghcr.io/eiffel-community/etos-log-listener:latest description: ETOSSuiteRunner describes the deployment of an ETOS suite runner. properties: @@ -318,7 +318,7 @@ spec: type: object suiteStarter: default: - image: registry.nordix.org/eiffel/etos-suite-starter:latest + image: ghcr.io/eiffel-community/etos-suite-starter:latest description: ETOSSuiteStarter describes the deployment of an ETOS suite starter. properties: @@ -386,7 +386,7 @@ spec: properties: api: default: - image: registry.nordix.org/eiffel/eiffel-graphql-api:latest + image: ghcr.io/eiffel-community/eiffel-graphql-api:latest description: |- We do not build the GraphQL API automatically nor publish it remotely. This will need to be provided to work. @@ -506,7 +506,7 @@ spec: type: object storage: default: - image: registry.nordix.org/eiffel/eiffel-graphql-storage:latest + image: ghcr.io/eiffel-community/eiffel-graphql-storage:latest description: |- We do not build the GraphQL API automatically nor publish it remotely. This will need to be provided to work. @@ -3250,7 +3250,7 @@ spec: - --health-probe-bind-address=:8081 command: - /manager - image: registry.nordix.org/eiffel/etos-controller:5becd344 + image: ghcr.io/eiffel-community/etos-controller:5becd344 livenessProbe: httpGet: path: /healthz diff --git a/skaffold.yaml b/skaffold.yaml index 28960919..56c9d689 100644 --- a/skaffold.yaml +++ b/skaffold.yaml @@ -4,7 +4,7 @@ metadata: name: etos build: artifacts: - - image: registry.nordix.org/eiffel/etos-controller + - image: ghcr.io/eiffel-community/etos-controller docker: dockerfile: Dockerfile hooks: From a557a8134365aeeebd89d1815bba6efa036359f0 Mon Sep 17 00:00:00 2001 From: Andrei Matveyeu Date: Tue, 28 Jan 2025 13:55:16 +0100 Subject: [PATCH 3/7] permissions in generate-manifest.yml --- .github/workflows/generate-manifest.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/generate-manifest.yml b/.github/workflows/generate-manifest.yml index eca15dff..1d8afc67 100644 --- a/.github/workflows/generate-manifest.yml +++ b/.github/workflows/generate-manifest.yml @@ -6,6 +6,10 @@ on: - main workflow_dispatch: +permissions: + contents: write + packages: write + jobs: build-and-commit: runs-on: ubuntu-latest From 8364186fa96570260255ffda37b652eaac251b04 Mon Sep 17 00:00:00 2001 From: Andrei Matveyeu Date: Tue, 28 Jan 2025 15:48:29 +0100 Subject: [PATCH 4/7] restored references to eiffel/eiffel-graphql-api:latest --- config/samples/etos_v1alpha1_cluster.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/samples/etos_v1alpha1_cluster.yaml b/config/samples/etos_v1alpha1_cluster.yaml index b6b7cd44..8233b70e 100644 --- a/config/samples/etos_v1alpha1_cluster.yaml +++ b/config/samples/etos_v1alpha1_cluster.yaml @@ -26,8 +26,8 @@ spec: queueName: "etos.*.log" eventRepository: deploy: true - apiImage: ghcr.io/eiffel-community/eiffel-graphql-api:latest - storageImage: ghcr.io/eiffel-community/eiffel-graphql-storage:latest + apiImage: registry.nordix.org/eiffel/eiffel-graphql-api:latest + storageImage: registry.nordix.org/eiffel/eiffel-graphql-storage:latest mongo: deploy: true ingress: From a1beedec7a0fb919ed634b18faf514da89444b65 Mon Sep 17 00:00:00 2001 From: Andrei Matveyeu Date: Tue, 28 Jan 2025 16:24:07 +0100 Subject: [PATCH 5/7] Restore eiffel-graphql-api and eiffel-graphql-storage --- manifests/controller/install.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/manifests/controller/install.yaml b/manifests/controller/install.yaml index 29bf249d..a36344d5 100644 --- a/manifests/controller/install.yaml +++ b/manifests/controller/install.yaml @@ -386,7 +386,7 @@ spec: properties: api: default: - image: ghcr.io/eiffel-community/eiffel-graphql-api:latest + image: registry.nordix.org/eiffel/eiffel-graphql-api:latest description: |- We do not build the GraphQL API automatically nor publish it remotely. This will need to be provided to work. @@ -506,7 +506,7 @@ spec: type: object storage: default: - image: ghcr.io/eiffel-community/eiffel-graphql-storage:latest + image: registry.nordix.org/eiffel/eiffel-graphql-storage:latest description: |- We do not build the GraphQL API automatically nor publish it remotely. This will need to be provided to work. From 48ce045efe75e217450dc58432fade4a1911b0a4 Mon Sep 17 00:00:00 2001 From: Andrei Matveyeu Date: Wed, 29 Jan 2025 13:19:46 +0100 Subject: [PATCH 6/7] More eiffel-graphql-* references restored --- api/v1alpha1/cluster_types.go | 4 ++-- .../crd/bases/etos.eiffel-community.github.io_clusters.yaml | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/api/v1alpha1/cluster_types.go b/api/v1alpha1/cluster_types.go index e4e9c4be..56dab89a 100644 --- a/api/v1alpha1/cluster_types.go +++ b/api/v1alpha1/cluster_types.go @@ -40,13 +40,13 @@ type EventRepository struct { // We do not build the GraphQL API automatically nor publish it remotely. // This will need to be provided to work. - // +kubebuilder:default={"image": "ghcr.io/eiffel-community/eiffel-graphql-api:latest"} + // +kubebuilder:default={"image": "registry.nordix.org/eiffel/eiffel-graphql-api:latest"} // +optional API Image `json:"api"` // We do not build the GraphQL API automatically nor publish it remotely. // This will need to be provided to work. - // +kubebuilder:default={"image": "ghcr.io/eiffel-community/eiffel-graphql-storage:latest"} + // +kubebuilder:default={"image": "registry.nordix.org/eiffel/eiffel-graphql-storage:latest"} // +optional Storage Image `json:"storage"` // +kubebuilder:default="etos" diff --git a/config/crd/bases/etos.eiffel-community.github.io_clusters.yaml b/config/crd/bases/etos.eiffel-community.github.io_clusters.yaml index 41138056..fd419161 100644 --- a/config/crd/bases/etos.eiffel-community.github.io_clusters.yaml +++ b/config/crd/bases/etos.eiffel-community.github.io_clusters.yaml @@ -73,7 +73,7 @@ spec: properties: api: default: - image: ghcr.io/eiffel-community/etos-api:latest + image: registry.nordix.org/eiffel/etos-api:latest description: ETOSAPI describes the deployment of the ETOS API. properties: executionSpaceProviderSecret: @@ -377,7 +377,7 @@ spec: properties: api: default: - image: ghcr.io/eiffel-community/eiffel-graphql-api:latest + image: registry.nordix.org/eiffel/eiffel-graphql-api:latest description: |- We do not build the GraphQL API automatically nor publish it remotely. This will need to be provided to work. @@ -497,7 +497,7 @@ spec: type: object storage: default: - image: ghcr.io/eiffel-community/eiffel-graphql-storage:latest + image: registry.nordix.org/eiffel/eiffel-graphql-storage:latest description: |- We do not build the GraphQL API automatically nor publish it remotely. This will need to be provided to work. From 30e7fb320d4dfe350d89fb8d832859a989a9510c Mon Sep 17 00:00:00 2001 From: Andrei Matveyeu Date: Thu, 30 Jan 2025 12:34:01 +0100 Subject: [PATCH 7/7] Restored nordix URL in Helm command in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dbc91232..e1f45f06 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,7 @@ Installation Steps :: - helm repo add Eiffel ghcr.io/eiffel-community + helm repo add Eiffel registry.nordix.org/eiffel 2. Then simply install ETOS using Helm