diff --git a/.gitea/workflows/build-deploy-images.yaml b/.gitea/workflows/build-deploy-images.yaml index d6851ba..03b67d0 100644 --- a/.gitea/workflows/build-deploy-images.yaml +++ b/.gitea/workflows/build-deploy-images.yaml @@ -46,6 +46,17 @@ jobs: dockerfile: ${{gitea.workspace}}/argo-workflows context: ${{gitea.workspace}}/argo-workflows + - name: Build and push Image devcontainers/kubectl + uses: ./.gitea/limbo_actions/buildkit-build-push + with: + tags: oci.limbosolutions.com/public/devcontainers/kubectl:latest + registry_addr: ${{ vars.OCI_LIMBO_REGISTRY_ADDRESS }} + registry_username: ${{ secrets.OCI_LIMBO_REGISTRY_PUBLIC_USERNAME }} + registry_password: ${{ secrets.OCI_LIMBO_REGISTRY_PUBLIC_PASSWORD }} + buildkit_addr: ${{ vars.BUILDKIT_ADDRESS }} + dockerfile: ${{gitea.workspace}}/kubectl + context: ${{gitea.workspace}}/kubectl + - name: Build and push Image devcontainers/container-builder uses: ./.gitea/limbo_actions/buildkit-build-push diff --git a/kubectl/Dockerfile b/kubectl/Dockerfile new file mode 100644 index 0000000..482b255 --- /dev/null +++ b/kubectl/Dockerfile @@ -0,0 +1,63 @@ +FROM ubuntu:latest + +ENV DEBIAN_FRONTEND=noninteractive + +# Base packages +RUN apt-get update && apt-get install -y \ + nano \ + curl \ + wget \ + git \ + jq \ + ca-certificates \ + software-properties-common \ + iputils-ping \ + zsh \ + && rm -rf /var/lib/apt/lists/* + +# set user with zsh as default shell using default user ubuntu uid +RUN usermod -l code ubuntu && \ + groupmod -n code ubuntu && \ + usermod -d /home/code -m -s /usr/bin/zsh code + + +# Install Oh-My-Zsh for user +RUN su code -c "curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh | sh -s -- --unattended" + +# ---zsh plugins --- +RUN su code -c "git clone https://github.com/zdharma-continuum/fast-syntax-highlighting.git \ + /home/code/.oh-my-zsh/custom/plugins/fast-syntax-highlighting" + +RUN su code -c "git clone https://github.com/zsh-users/zsh-autosuggestions \ + /home/code/.oh-my-zsh/custom/plugins/zsh-autosuggestions" + +# -- install chroma for zsh +RUN mkdir /tmp/chroma \ + && curl -s https://api.github.com/repos/alecthomas/chroma/releases/latest \ + | grep "browser_download_url.*linux-amd64.*tar.gz" \ + | cut -d '"' -f 4 \ + | wget -O /tmp/chroma/chroma.tar.gz -i - \ + && tar -xzf /tmp/chroma/chroma.tar.gz -C /tmp/chroma \ + && install -m 0755 /tmp/chroma/chroma /usr/local/bin/chroma \ + && rm -r /tmp/chroma + +# --- set zsh shell as default --- +RUN chsh -s /usr/bin/zsh code + +# --- copy assets --- +COPY ./assets/.zshrc /home/code + +# --- Install yq --- +RUN wget https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 \ + -O /usr/bin/yq && chmod +x /usr/bin/yq + +# --- Install kubectl --- +RUN curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" \ + && install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl \ + && rm kubectl + +RUN mkdir /workspaces && chown code:code /workspaces -R +USER code +WORKDIR /workspaces + + diff --git a/kubectl/assets/.zshrc b/kubectl/assets/.zshrc new file mode 100644 index 0000000..84fb704 --- /dev/null +++ b/kubectl/assets/.zshrc @@ -0,0 +1,8 @@ +export ZSH="$HOME/.oh-my-zsh" +DISABLE_AUTO_UPDATE=true +DISABLE_UPDATE_PROMPT=true +ZSH_COLORIZE_TOOL=chroma +export FAST_HIGHLIGHT_CHROMA=1 +ZSH_THEME="gnzh" +plugins=(git timer web-search ssh colorize fast-syntax-highlighting) +source $ZSH/oh-my-zsh.sh