Skip to content

Commit ffd59cd

Browse files
committed
use mise
1 parent 5db7d4b commit ffd59cd

10 files changed

Lines changed: 154 additions & 366 deletions

File tree

.github/workflows/code-server.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,4 +31,5 @@ jobs:
3131
with:
3232
tag: ${{ matrix.version }}${{ matrix.variant == 'dev' && '-dev' || '' }}
3333
target: ${{ matrix.variant }}
34+
scan: 'false'
3435
secrets: inherit

.github/workflows/iac.yml

Lines changed: 0 additions & 34 deletions
This file was deleted.

.github/workflows/release.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,8 @@ jobs:
114114
target: ${{ inputs.target }}
115115
platforms: linux/amd64
116116
cache-from: type=local,src=${{ runner.temp }}/.buildx-cache
117+
secrets: |
118+
"github_token=${{ secrets.GITHUB_TOKEN }}"
117119
load: true
118120
pull: true
119121
push: false
@@ -147,6 +149,8 @@ jobs:
147149
platforms: ${{ inputs.platforms }}
148150
cache-from: type=local,src=${{ runner.temp }}/.buildx-cache
149151
cache-to: type=local,dest=${{ runner.temp }}/.buildx-cache-new,mode=max
152+
secrets: |
153+
"github_token=${{ secrets.GITHUB_TOKEN }}"
150154
pull: true
151155
push: true
152156
sbom: true

images/code-server/Dockerfile

Lines changed: 22 additions & 225 deletions
Original file line numberDiff line numberDiff line change
@@ -3,178 +3,8 @@
33
ARG WOLFI_VERSION="latest"
44
ARG CODE_SERVER_VERSION="latest"
55

6-
FROM --platform=$BUILDPLATFORM cgr.dev/chainguard/wolfi-base:${WOLFI_VERSION} AS base
7-
8-
ARG TARGETOS
9-
ARG TARGETARCH
10-
ARG TARGETVARIANT
11-
12-
RUN apk add --no-cache \
13-
curl \
14-
gzip \
15-
unzip
16-
17-
FROM base AS jq
18-
19-
# --- Install jq CLI
20-
ARG JQ_VERSION="1.7.1"
21-
ENV JQ_VERSION=$JQ_VERSION
22-
RUN curl -fsL --output /usr/bin/jq \
23-
https://github.com/jqlang/jq/releases/download/jq-${JQ_VERSION}/jq-${TARGETOS}-${TARGETARCH} && \
24-
chmod 755 /usr/bin/jq
25-
26-
USER nonroot
27-
28-
FROM base AS yq
29-
30-
# --- Install yq CLI
31-
ARG YQ_VERSION="v4.44.1"
32-
ENV YQ_VERSION=$YQ_VERSION
33-
RUN curl -fsL --output /usr/bin/yq \
34-
https://github.com/mikefarah/yq/releases/download/${YQ_VERSION}/yq_${TARGETOS}_${TARGETARCH} && \
35-
chmod 755 /usr/bin/yq
36-
37-
USER nonroot
38-
39-
FROM base AS powerline-go
40-
41-
# --- Install yq CLI
42-
ARG POWERLINEGO_VERSION="v1.24"
43-
ENV POWERLINEGO_VERSION=$POWERLINEGO_VERSION
44-
RUN curl -fsL --output /usr/bin/powerline-go \
45-
https://github.com/justjanne/powerline-go/releases/download/${POWERLINEGO_VERSION}/powerline-go-${TARGETOS}-${TARGETARCH} && \
46-
chmod 755 /usr/bin/powerline-go
47-
48-
USER nonroot
49-
50-
FROM base AS kubectl
51-
52-
# --- Install kubectl CLI
53-
ARG KUBECTL_VERSION="v1.29.5"
54-
ENV KUBECTL_VERSION=$KUBECTL_VERSION
55-
RUN curl -fsSL https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/${TARGETOS}/${TARGETARCH}/kubectl \
56-
-o /usr/bin/kubectl && \
57-
chmod 755 /usr/bin/kubectl
58-
59-
USER nonroot
60-
61-
FROM base AS k9s
62-
63-
# --- Install k9s CLI
64-
ARG K9S_VERSION="v0.50.16"
65-
ENV K9S_VERSION=$K9S_VERSION
66-
RUN curl -fsSL https://github.com/derailed/k9s/releases/download/${K9S_VERSION}/k9s_Linux_${TARGETARCH}.tar.gz | \
67-
tar xvzf - -C /usr/bin k9s && \
68-
chmod 755 /usr/bin/k9s
69-
70-
USER nonroot
71-
72-
FROM base AS helm
73-
74-
# --- Install helm CLI
75-
ARG HELM_VERSION="v3.19.2"
76-
ENV HELM_VERSION=$HELM_VERSION
77-
RUN curl -fsSL https://get.helm.sh/helm-${HELM_VERSION}-${TARGETOS}-${TARGETARCH}.tar.gz | \
78-
tar xvzf - --strip-components=1 -C /usr/bin ${TARGETOS}-${TARGETARCH}/helm && \
79-
chmod 755 /usr/bin/helm
80-
81-
USER nonroot
82-
83-
FROM base AS helmfile
84-
85-
# --- Install helmfile CLI
86-
ARG HELMFILE_VERSION="1.2.2"
87-
ENV HELMFILE_VERSION=$HELMFILE_VERSION
88-
RUN curl -fsSL https://github.com/helmfile/helmfile/releases/download/v${HELMFILE_VERSION}/helmfile_${HELMFILE_VERSION}_${TARGETOS}_${TARGETARCH}.tar.gz | \
89-
tar xvzf - -C /usr/bin helmfile && \
90-
chmod 755 /usr/bin/helmfile
91-
92-
USER nonroot
93-
94-
FROM base AS grype
95-
96-
# --- Install grype CLI
97-
ARG GRYPE_VERSION="0.104.1"
98-
ENV GRYPE_VERSION=$GRYPE_VERSION
99-
RUN curl -fsSL https://github.com/anchore/grype/releases/download/v${GRYPE_VERSION}/grype_${GRYPE_VERSION}_${TARGETOS}_${TARGETARCH}.tar.gz | \
100-
tar xvzf - -C /usr/bin grype && \
101-
chmod 755 /usr/bin/grype
102-
103-
USER nonroot
104-
105-
FROM base AS cosign
106-
107-
# --- Install cosign CLI
108-
ARG COSIGN_VERSION="3.0.2"
109-
ENV COSIGN_VERSION=$COSIGN_VERSION
110-
RUN curl -fsSL https://github.com/sigstore/cosign/releases/download/v${COSIGN_VERSION}/cosign-${TARGETOS}-${TARGETARCH} \
111-
-o /usr/bin/cosign && \
112-
chmod 755 /usr/bin/cosign
113-
114-
USER nonroot
115-
116-
FROM base AS terraform
117-
118-
# --- Install terraform CLI
119-
ARG TERRAFORM_VERSION="1.14.1"
120-
ENV TERRAFORM_VERSION=$TERRAFORM_VERSION
121-
RUN TEMP_DIR=$(mktemp -d) && \
122-
curl -fsSL https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_${TARGETOS}_${TARGETARCH}.zip \
123-
-o ${TEMP_DIR}/terraform.zip && \
124-
unzip -d $TEMP_DIR ${TEMP_DIR}/terraform.zip && \
125-
mv ${TEMP_DIR}/terraform /usr/bin/terraform && \
126-
chmod 755 /usr/bin/terraform && \
127-
rm -rf ${TEMP_DIR}
128-
129-
USER nonroot
130-
131-
FROM base AS tofu
132-
133-
# --- Install tofu CLI
134-
ARG TOFU_VERSION="1.10.8"
135-
ENV TOFU_VERSION=$TOFU_VERSION
136-
RUN curl -fsSL https://github.com/opentofu/opentofu/releases/download/v${TOFU_VERSION}/tofu_${TOFU_VERSION}_${TARGETOS}_${TARGETARCH}.tar.gz | \
137-
tar xvzf - -C /usr/bin tofu && \
138-
chmod 755 /usr/bin/tofu
139-
140-
USER nonroot
141-
142-
FROM base AS terragrunt
143-
144-
# --- Install terragrunt CLI
145-
ARG TERRAGRUNT_VERSION="0.94.0"
146-
ENV TERRAGRUNT_VERSION=$TERRAGRUNT_VERSION
147-
RUN curl -fsSL https://github.com/gruntwork-io/terragrunt/releases/download/v${TERRAGRUNT_VERSION}/terragrunt_${TARGETOS}_${TARGETARCH} \
148-
-o /usr/bin/terragrunt && \
149-
chmod 755 /usr/bin/terragrunt
150-
151-
USER nonroot
152-
153-
FROM base AS vault
154-
155-
# --- Install vault CLI
156-
ARG VAULT_VERSION="1.21.1"
157-
ENV VAULT_VERSION=$VAULT_VERSION
158-
RUN TEMP_DIR=$(mktemp -d) && \
159-
curl -fsSL https://releases.hashicorp.com/vault/${VAULT_VERSION}/vault_${VAULT_VERSION}_${TARGETOS}_${TARGETARCH}.zip \
160-
-o ${TEMP_DIR}/vault.zip && \
161-
unzip -d $TEMP_DIR ${TEMP_DIR}/vault.zip && \
162-
mv ${TEMP_DIR}/vault /usr/bin/vault && \
163-
chmod 755 /usr/bin/vault && \
164-
rm -rf ${TEMP_DIR}
165-
166-
USER nonroot
167-
168-
FROM base AS dagger
169-
170-
# --- Install dagger CLI
171-
ARG DAGGER_VERSION="0.19.8"
172-
ENV DAGGER_VERSION=$DAGGER_VERSION
173-
RUN curl -fsSL https://github.com/dagger/dagger/releases/download/v${DAGGER_VERSION}/dagger_v${DAGGER_VERSION}_${TARGETOS}_${TARGETARCH}.tar.gz | \
174-
tar xvzf - -C /usr/bin dagger && \
175-
chmod 755 /usr/bin/dagger
176-
177-
USER nonroot
6+
ARG MISE_VERSION="2025.12.0"
7+
FROM jdxcode/mise:${MISE_VERSION} AS mise
1788

1799
FROM lscr.io/linuxserver/code-server:${CODE_SERVER_VERSION} AS prod
18010

@@ -188,7 +18,6 @@ LABEL org.opencontainers.image.source="https://github.com/opopops/docker/tree/ma
18818
LABEL org.opencontainers.image.description="Code-Server image"
18919

19020
ENV DEBIAN_FRONTEND="noninteractive"
191-
RUN rm -f /etc/apt/apt.conf.d/docker-clean; echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache
19221
RUN --mount=type=cache,id=apt-cache-${TARGETARCH}${TARGETVARIANT},target=/var/cache/apt,sharing=locked \
19322
--mount=type=cache,id=apt-${TARGETARCH}${TARGETVARIANT},target=/var/lib/apt,sharing=locked \
19423
apt-get update && \
@@ -204,63 +33,27 @@ RUN --mount=type=cache,id=apt-cache-${TARGETARCH}${TARGETVARIANT},target=/var/ca
20433
nano \
20534
openssh-client \
20635
pigz \
207-
pipx \
208-
python3-pip \
209-
python3-venv \
21036
rsync \
21137
unzip \
21238
vim
21339

214-
ENV EDITOR=vi
215-
ENV PATH="${PATH}:/config/.local/bin"
216-
217-
# --- Install docker
218-
ARG DOCKER_VERSION="29.1.2"
219-
ENV DOCKER_VERSION=$DOCKER_VERSION
220-
RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg && \
221-
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
222-
$(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
223-
224-
# Pin docker version
225-
# https://docs.docker.com/engine/release-notes/23.0/
226-
RUN cat <<EOF > /etc/apt/preferences.d/docker
227-
Package: /docker-ce/
228-
Pin: version 5:${DOCKER_VERSION}*
229-
Pin-Priority: 1000
230-
EOF
231-
232-
RUN --mount=type=cache,id=apt-cache-${TARGETARCH}${TARGETVARIANT},target=/var/cache/apt,sharing=locked \
233-
--mount=type=cache,id=apt-${TARGETARCH}${TARGETVARIANT},target=/var/lib/apt,sharing=locked \
234-
apt-get update && \
235-
apt-get install --yes --no-install-recommends \
236-
docker-buildx-plugin \
237-
docker-compose-plugin \
238-
docker-ce-cli
40+
# --- Install mise
41+
ENV MISE_CACHE_DIR=/mise/cache \
42+
MISE_CONFIG_DIR=/mise \
43+
MISE_DATA_DIR=/mise
23944

240-
RUN groupadd -g 996 docker && \
241-
usermod -a -G docker abc
45+
RUN mkdir -p \
46+
$MISE_CONFIG_DIR \
47+
$MISE_CACHE_DIR \
48+
$MISE_DATA_DIR
24249

243-
# --- Install python packages
244-
RUN --mount=type=cache,target=/config/.cache/pip \
245-
pipx install ansible-lint && \
246-
pipx install pylint && \
247-
pipx install pytest && \
248-
pipx install ruff && \
249-
pipx install uv
50+
COPY --link --from=mise /usr/local/bin/mise /usr/local/bin/mise
51+
COPY ./mise.toml ${MISE_CONFIG_DIR}/mise.toml
52+
RUN --mount=type=cache,id=mise-cache,target=${MISE_CACHE_DIR} \
53+
--mount=type=secret,id=github_token,env=GITHUB_TOKEN \
54+
mise upgrade
25055

251-
# --- Install binaries
252-
COPY --link --from=cosign /usr/bin/cosign /usr/local/bin/cosign
253-
COPY --link --from=dagger /usr/bin/dagger /usr/local/bin/dagger
254-
COPY --link --from=grype /usr/bin/grype /usr/local/bin/grype
255-
COPY --link --from=helm /usr/bin/helm /usr/local/bin/helm
256-
COPY --link --from=helmfile /usr/bin/helmfile /usr/local/bin/helmfile
257-
COPY --link --from=jq /usr/bin/jq /usr/local/bin/jq
258-
COPY --link --from=k9s /usr/bin/k9s /usr/local/bin/k9s
259-
COPY --link --from=kubectl /usr/bin/kubectl /usr/local/bin/kubectl
260-
COPY --link --from=powerline-go /usr/bin/powerline-go /usr/local/bin/powerline-go
261-
COPY --link --from=tofu /usr/bin/tofu /usr/bin/local/tofu
262-
COPY --link --from=vault /usr/bin/vault /usr/local/bin/vault
263-
COPY --link --from=yq /usr/bin/yq /usr/bin/local/yq
56+
ENV EDITOR=vi
26457

26558
# --- Update bashrc
26659
RUN cat <<EOF >> /config/.bashrc
@@ -280,11 +73,15 @@ alias kwolfi="kubectl run shell --rm -i --tty --image-pull-policy='Always' --ima
28073
alias terraform='tofu'
28174
alias tf='tofu'
28275

76+
# MISE
77+
eval "$(mise activate bash)"
78+
79+
# POWERLINE-GO
28380
function _update_ps1() {
284-
PS1="\$(/usr/bin/powerline-go -mode flat -hostname-only-if-ssh -cwd-max-depth 3 -modules cwd,git,terraform-workspace,kube -error \$? -jobs \$(jobs -p | wc -l))"
81+
PS1="\$(powerline-go -mode flat -hostname-only-if-ssh -cwd-max-depth 3 -modules cwd,git,terraform-workspace,kube -error \$? -jobs \$(jobs -p | wc -l))"
28582
}
28683

287-
if [ "\$TERM" != "linux" ] && [ -f "/usr/bin/powerline-go" ]; then
84+
if [ "\$TERM" != "linux" ]; then
28885
PROMPT_COMMAND="_update_ps1; \$PROMPT_COMMAND"
28986
fi
29087
EOF

images/code-server/mise.toml

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
min_version = "2025.12.0"
2+
3+
[settings]
4+
jobs = 4
5+
6+
[tools]
7+
# Core tools
8+
python = { version = "3.13" }
9+
10+
# Packages managers
11+
uv = { version = "latest" }
12+
pipx = { version = "latest" }
13+
14+
# Additional tools
15+
apko = { version = "latest" }
16+
aws-cli = { version = "latest" }
17+
cosign = { version = "latest" }
18+
crane = { version = "latest" }
19+
dagger = { version = "latest" }
20+
docker-cli = { version = "latest" }
21+
docker-compose = { version = "latest" }
22+
envsubst = { version = "latest" }
23+
github-cli = { version = "latest" }
24+
gitleaks = { version = "latest" }
25+
grype = { version = "latest" }
26+
helm = { version = "latest" }
27+
helm-diff = { version = "latest" }
28+
helmfile = { version = "latest" }
29+
jq = { version = "latest" }
30+
k3d = { version = "latest" }
31+
k9s = { version = "latest" }
32+
kube-capacity = { version = "latest"}
33+
kubeconform = { version = "latest" }
34+
kubectl = { version = "latest" }
35+
kustomize = { version = "latest" }
36+
melange = { version = "latest" }
37+
opentofu = { version = "latest" }
38+
packer = { version = "latest" }
39+
powerline-go = { version = "latest" }
40+
pre-commit = { version = "latest" }
41+
ruff = { version = "latest" }
42+
terraform = { version = "latest" }
43+
usage = { version = "latest" }
44+
yq = { version = "latest" }
45+
46+
# Pipx tools
47+
"pipx:ansible" = { version = "latest", uvx = "false", pipx_args = "--include-deps" }
48+
49+
# GiHub Tools: https://mise.jdx.dev/dev-tools/backends/github.html#github-backend
50+
"github:docker/buildx" = { version = "latest" , bin = "docker-buildx"}

0 commit comments

Comments
 (0)