blob: 1cb553e2310004837e05074839c1155d7672fe91 [file] [log] [blame]
version: "3"
vars:
UID:
sh: 'echo {{ if eq OS "windows" }}1000{{ else }}$(id -u){{ end }}'
GID:
sh: 'echo {{ if eq OS "windows" }}1000{{ else }}$(id -g){{ end }}'
DRY: ""
EXTRA: ""
env:
KUBECONFIG:
sh: |-
if test -e "$OPS_TMP/kubeconfig"
then echo "$OPS_TMP/kubeconfig"
else echo ~/.kube/config
fi
tasks:
deploy:
silent: true
desc: deploy the devcontainer in kubernetes
cmds:
- test -e ~/.ssh/id_rsa.pub || die "please generate an ssh key with ssh-keygen in ~/.ssh/id_rsa.pub"
- >
kubectl -n nuvolaris create secret generic ssh-secret
--from-literal=authorized_keys="$(cat ~/.ssh/id_rsa.pub)" 2>/dev/null || die "devcontainer already exists"
- >
kubectl -n nuvolaris create secret generic devel-secret
--from-literal=password="$(cat ~/.ops/devel.password)"
- |
export IMAGE="{{.IMAGES_DEVCONTAINER}}"
envsubst < deployment.yaml >_deployment.yaml
kubectl apply -f _deployment.yaml
- ops setup kubernetes wait-pod SELECTOR="-l app=ssh-devcontainer" COND=false FILE=_devcontainer
- |
touch ~/.ssh/config
if ! rg "Host miniops" ~/.ssh/config >/dev/null
then echo -e "\nHost miniops\n Hostname localhost\n Port 2222\n User devel\n StrictHostKeyChecking no\n UserKnownHostsFile=/dev/null\n" >> ~/.ssh/config
fi
- >
retry -t 100 -m 600 ssh miniops exit 2>&1
| awk '{s=""; for(i=1;i<=NR;i++) s=s"#"; printf "\rwaiting for ssh: [%s]", s; fflush()}'
- echo -e "\nyou can now connect to the devcontainer with 'ssh miniops'"
undeploy:
silent: true
desc: undeploy the devcontainer in kubernetes
cmds:
- kubectl -n nuvolaris delete deploy/ssh-devcontainer secret/ssh-secret secret/devel-secret
- echo Please remove the Host miniops entry from your ~/.ssh/config file if present
docker2kind:
silent: true
desc: load the devcontainer image from docker to kind to avoid pulling from outside
cmds:
- kind load docker-image {{.IMAGES_DEVCONTAINER}} --name nuvolaris
docker-run:
desc: run the ssh-devcontainer in docker with W=<workspace absolute path>
silent: true
requires: { vars: [W]}
vars:
EXTRA: #"--entrypoint=/bin/bash -ti"
cmds:
- test -e "$OPS_PWD/workspace/package.json" || die "mising workdpace folder with starter"
- test -e ~/.ssh/id_rsa.pub || die "please generate an ssh key with 'ssk-keygen -t rsa'"
- echo "{{.W}}" | rg '^/' || die "W=<absolute path> required"
- docker rm -f ssh-devcontainer 2>/dev/null
- >
{{.DRY}} docker run
--hostname ssh-devcontainer
--name ssh-devcontainer --rm
-e SSHKEY="$(cat ~/.ssh/id_rsa.pub)"
-e USERID={{.UID}}
--mount "type=bind,src={{.W}},dst=/home/workspace"
-p 2223:2222
{{.EXTRA}}
{{.IMAGES_DEVCONTAINER}}