diff --git a/.devfile.Dockerfile b/.devfile.Dockerfile new file mode 100644 index 0000000000..ef725ca602 --- /dev/null +++ b/.devfile.Dockerfile @@ -0,0 +1,21 @@ +# Copyright (c) 2023 Red Hat, Inc. +# This program and the accompanying materials are made +# available under the terms of the Eclipse Public License 2.0 +# which is available at https://www.eclipse.org/legal/epl-2.0/ +# +# SPDX-License-Identifier: EPL-2.0 +# +# Contributors: +# Red Hat, Inc. - initial API and implementation + +# This container featres tools required for Devspaces Images +FROM quay.io/devfile/universal-developer-image:ubi8-latest + +#install Go 1.18 (needed to work with devspaces-operator) +RUN cd /tmp && wget https://go.dev/dl/go1.18.6.linux-amd64.tar.gz && \ + mkdir $HOME/go1.18 && \ + tar -xvzf go1.18.6.linux-amd64.tar.gz -C $HOME/go1.18 --strip-components 1 && \ + if ! grep -q "export PATH=\$HOME/go1.18/bin:\$PATH" $HOME/.bashrc; then echo "export PATH=\$HOME/go1.18/bin:\$PATH" >> $HOME/.bashrc; fi + +# install goimports (needed to work with devspaces-operator) +RUN $HOME/go1.18/bin/go install golang.org/x/tools/cmd/goimports@latest diff --git a/.github/workflows/devfile-ci.yaml b/.github/workflows/devfile-ci.yaml new file mode 100644 index 0000000000..7546802177 --- /dev/null +++ b/.github/workflows/devfile-ci.yaml @@ -0,0 +1,49 @@ +# +# Copyright (c) 2023 Red Hat, Inc. +# This program and the accompanying materials are made +# available under the terms of the Eclipse Public License 2.0 +# which is available at https://www.eclipse.org/legal/epl-2.0/ +# +# SPDX-License-Identifier: EPL-2.0 +# +# Contributors: +# Red Hat, Inc. - initial API and implementation +# + +name: Devfile image CI + +on: + push: + branches: + - 'main' + paths: + - '.devfile.Dockerfile' + +jobs: + docker: + runs-on: ubuntu-latest + steps: + - + name: Checkout + uses: actions/checkout@v3 + - + name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - + name: Login to quay.io + uses: docker/login-action@v2 + with: + registry: quay.io + username: ${{ secrets.QUAY_USERNAME }} + password: ${{ secrets.QUAY_PASSWORD }} + - + name: Build and push container + uses: docker/build-push-action@v4 + with: + context: . + file: .devfile.Dockerfile + push: true + tags: quay.io/devspaces/devspaces-images-dev:latest diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000000..814f18a15a --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,6 @@ +{ + "recommendations": [ + "rogalmic.bash-debug", + "redhat.vscode-yaml" + ] +} diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000000..db5b3c3b19 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,11 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "type": "bashdb", + "request": "launch", + "name": "Bash-Debug (simplest configuration)", + "program": "${file}" + } + ] +} diff --git a/devfile.yaml b/devfile.yaml new file mode 100644 index 0000000000..3b0c585a06 --- /dev/null +++ b/devfile.yaml @@ -0,0 +1,43 @@ +# +# Copyright (c) 2023 Red Hat, Inc. +# This program and the accompanying materials are made +# available under the terms of the Eclipse Public License 2.0 +# which is available at https://www.eclipse.org/legal/epl-2.0/ +# +# SPDX-License-Identifier: EPL-2.0 +# +# Contributors: +# Red Hat, Inc. - initial API and implementation +# +schemaVersion: 2.2.0 +metadata: + name: devspaces-images +components: + - name: tools + container: + image: quay.io/devfile/universal-developer-image:ubi8-latest + memoryRequest: 1Gi + memoryLimit: 8Gi + cpuLimit: '4' + cpuRequest: '0.5' +commands: + #devspaces-operator + - id: operator-go-build + exec: + label: Build Eclipse Che Operator binary + component: tooling-container + commandLine: make build + workingDir: ${PROJECT_SOURCE}/devspaces-operator + - id: operator-go-run + exec: + label: Run Eclipse Che Operator + component: tooling-container + commandLine: make run + workingDir: ${PROJECT_SOURCE}/devspaces-operator + - id: operator-go-test + exec: + label: Run unit tests + component: tooling-container + commandLine: make test + workingDir: ${PROJECT_SOURCE}/devspaces-operator + #devspaces-operator-bundle diff --git a/devspaces-operator/devfile.yaml b/devspaces-operator/devfile.yaml index 5759adf3a1..93aa016732 100644 --- a/devspaces-operator/devfile.yaml +++ b/devspaces-operator/devfile.yaml @@ -13,7 +13,7 @@ schemaVersion: 2.1.0 attributes: controller.devfile.io/storage-type: ephemeral metadata: - name: che-operator + name: devspaces-images components: - name: tooling-container container: @@ -34,6 +34,22 @@ components: - name: KUBECONFIG value: /home/user/.kube/config commands: + - id: install-chectl + exec: + label: POST START EVENT - Install chectl + component: tooling-container + commandLine: | + tag=$(curl https://api.github.com/repos/che-incubator/chectl/tags | jq -r '.[0].name') && \ + cd /tmp && wget https://github.com/che-incubator/chectl/releases/download/${tag}/chectl-linux-x64.tar.gz && \ + mkdir $HOME/chectl && \ + tar -xvzf chectl-linux-x64.tar.gz -C $HOME/chectl --strip-components 1 && \ + if ! grep -q "export PATH=\$HOME/chectl/bin:\$PATH" $HOME/.bashrc; then echo "export PATH=\$HOME/chectl/bin:\$PATH" >> $HOME/.bashrc; fi + - id: install-goimports + exec: + label: POST START EVENT - Install goimports + component: tooling-container + commandLine: | + go install golang.org/x/tools/cmd/goimports@latest - id: go-build exec: label: Build Eclipse Che Operator binary @@ -58,4 +74,8 @@ commands: exec: label: Update all development resources component: tooling-container - commandLine: make update-dev-resources + commandLine: make update-dev-resources +events: + postStart: + - install-goimports + - install-chectl