Compare commits

...

14 Commits

9 changed files with 135 additions and 44 deletions

View File

@ -1,12 +0,0 @@
#!/bin/bash
# Get list of image IDs with <none> tag (dangling images)
dangling_images=$(podman images -f "dangling=true" -q)
if [ -z "$dangling_images" ]; then
echo "✅ No dangling images to remove."
else
echo "⚠️ Removing dangling images..."
echo "$dangling_images" | xargs podman rmi -f
echo "🧹 Done!"
fi

9
.bin/gitops Executable file
View File

@ -0,0 +1,9 @@
#!/bin/bash
ssh -F /dev/null \
-o HostName=10.88.0.1 \
-o Port=22 \
-o User=infilytics \
-o IdentityFile=~/.ssh/id_ed25519 \
-o ProxyCommand=none \
gitops -- "$@"

1
.gitattributes vendored Normal file
View File

@ -0,0 +1 @@
home.tar.gz filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored
View File

@ -4,5 +4,4 @@ logs
.state .state
.config/fish .config/fish
.npm .npm
home.tar.gz
.config/nvim/lazy-lock.json .config/nvim/lazy-lock.json

24
.lazy.lua Normal file
View File

@ -0,0 +1,24 @@
return {
"folke/snacks.nvim",
opts = {
-- show hidden files in snacks.explorer
picker = {
sources = {
explorer = {
-- show hidden files like .env
hidden = true,
-- show files ignored by git like node_modules
ignored = false,
exclude = { ".git" },
},
files = {
-- show hidden files like .env
hidden = true,
-- show files ignored by git like node_modules
ignored = false,
exclude = { ".npm", ".git" },
},
},
},
},
}

91
.vscode/tasks.json vendored
View File

@ -2,70 +2,121 @@
"version": "2.0.0", "version": "2.0.0",
"tasks": [ "tasks": [
{ {
"label": "Build workspace image", "label": "GitOps(Build): base image",
"type": "shell", "type": "shell",
"command": "${workspaceFolder}/build-workspace.sh", "command": ".bin/gitops build base",
"group": "build",
"problemMatcher": [],
"detail": "build base image using buildah"
},
{
"label": "GitOps(Build): workspace image",
"type": "shell",
"command": ".bin/gitops build workspace",
"group": "build", "group": "build",
"problemMatcher": [], "problemMatcher": [],
"detail": "build podman image using buildah" "detail": "build podman image using buildah"
}, },
{ {
"label": "Clean dangling images", "label": "GitOps: Clean dangling images",
"type": "shell", "type": "shell",
"command": "${workspaceFolder}/.bin/clean_dangling_images.sh", "command": ".bin/gitops clean",
"problemMatcher": [], "problemMatcher": [],
"detail": "Clean podman images" "detail": "Clean podman images"
}, },
{ {
"label": "Tag image", "label": "Gitops(Update): build-base.sh",
"type": "shell", "type": "shell",
"command": "podman tag localhost/analytics-backend-workspace:latest localhost:5100/analytics-backend-workspace:latest", "command": ".bin/gitops update base",
"group": "build",
"problemMatcher": [], "problemMatcher": [],
"detail": "Tag podman image to localhost 5100" "detail": "Copy build-base.sh to /home/infilytics/.local/bin/"
}, },
{ {
"label": "Push image", "label": "GitOps(Update): build-workspace.sh",
"type": "shell", "type": "shell",
"command": "podman push --tls-verify=false localhost:5100/analytics-backend-workspace:latest", "command": ".bin/gitops update workspace",
"group": "build",
"problemMatcher": [], "problemMatcher": [],
"detail": "Push podman image to localhost 5100" "detail": "Copy build-workspace.sh to /home/infilytics/.local/bin/"
}, },
{ {
"label": "Copy ssh_router.sh", "label": "GitOps(Update): ssh_router.sh",
"type": "shell", "type": "shell",
"command": "sudo cp ssh_router.sh /home/infilytics/ && sudo chown -R infilytics:infilytics /home/infilytics/ssh_router.sh", "command": ".bin/gitops update ssh_router",
"group": "build",
"problemMatcher": [], "problemMatcher": [],
"detail": "Copy ssh_router.sh to /home/infilytics" "detail": "Copy ssh_router.sh to /home/infilytics/.local/bin/"
}, },
{ {
"label": "Copy access.yml", "label": "GitOps(Update): access.yml",
"type": "shell", "type": "shell",
"command": "sudo cp access.yml /home/infilytics/ && sudo chown -R infilytics:infilytics /home/infilytics/access.yml", "command": ".bin/gitops update access",
"group": "build",
"problemMatcher": [], "problemMatcher": [],
"detail": "Copy access.yml to /home/infilytics" "detail": "Copy access.yml to /home/infilytics/"
},
{
"label": "GitOps(Update): gitops_router.sh",
"type": "shell",
"command": ".bin/gitops update gitops_router",
"group": "build",
"problemMatcher": [],
"detail": "Copy gitops_router.sh to /home/infilytics/.local/bin"
},
{
"label": "GitOps(Update): home.tar.gz",
"type": "shell",
"command": ".bin/gitops update home_tar",
"group": "build",
"problemMatcher": [],
"detail": "Copy home.tar.gz to /home/infilytics/"
}, },
{ {
"label": "Create home tarball", "label": "Create home tarball",
"type": "shell", "type": "shell",
"command": "${workspaceFolder}/.bin/create-home-tarball.sh", "command": "${workspaceFolder}/.bin/create-home-tarball.sh",
"group": "build",
"problemMatcher": [], "problemMatcher": [],
"detail": "create home.tar.gz from .config .local .ssh start.sh" "detail": "create home.tar.gz from .config .local .ssh start.sh"
}, },
{ {
"label": "Start a tmux test session", "label": "Test: start tmux session",
"type": "shell", "type": "shell",
"group": "test",
"command": "${workspaceFolder}/.bin/test-tmux.sh", "command": "${workspaceFolder}/.bin/test-tmux.sh",
"group": "test",
"problemMatcher": [], "problemMatcher": [],
"detail": "run tmux with project room as home" "detail": "run tmux with project room as home"
}, },
{ {
"label": "Delete .gitignore files", "label": "GitOps: Show image status",
"type": "shell",
"command": ".bin/gitops status",
"problemMatcher": [],
"detail": "run podman images on remote"
},
{
"label": "GitOps: Remove workspace container",
"type": "shell",
"command": ".bin/gitops remove ${input:container} -f",
"problemMatcher": [],
"detail": "run podman rm $args on remote"
},
{
"label": "Cleanup worktree",
"type": "shell", "type": "shell",
"command": "git clean -Xfd", "command": "git clean -Xfd",
"problemMatcher": [], "problemMatcher": [],
"detail": "delete all untracked files listed in .gitignore" "detail": "delete all untracked files listed in .gitignore"
} }
], ],
"inputs": [] "inputs": [
{
"id": "container",
"type": "pickString",
"description": "Pick a container",
"options": ["pallav", "palak", "param", "darshan"],
"default": "pallav"
}
]
} }

View File

@ -10,7 +10,7 @@ ctr=$(buildah from archlinux)
buildah run "$ctr" -- bash -c " buildah run "$ctr" -- bash -c "
pacman -Sy --noconfirm && \ pacman -Sy --noconfirm && \
pacman -S --noconfirm --needed base-devel neovim git fish tmux \ pacman -S --noconfirm --needed base-devel neovim git git-lfs fish tmux \
nodejs python podman fzf fd ripgrep jdk-openjdk fisher yazi less buildah \ nodejs python podman fzf fd ripgrep jdk-openjdk fisher yazi less buildah \
lazygit luarocks python-pynvim npm bash-completion tree-sitter-cli kitty-terminfo \ lazygit luarocks python-pynvim npm bash-completion tree-sitter-cli kitty-terminfo \
lua51 openssh && \ lua51 openssh && \

View File

@ -6,9 +6,6 @@ HOST="alps:3222"
PROTOCOL="http" PROTOCOL="http"
REPO="babbarc/workspaces" REPO="babbarc/workspaces"
BRANCH="master" BRANCH="master"
URL="$PROTOCOL://$HOST/$REPO/raw/branch/$BRANCH"
ALLOWED_PATH="/home/infilytics/home.tar.gz"
LOG_FILE="/tmp/.gitops-router-${PERSON}.log" LOG_FILE="/tmp/.gitops-router-${PERSON}.log"
@ -26,18 +23,38 @@ if [[ -z "${SSH_ORIGINAL_COMMAND:-}" ]]; then
exit 1 exit 1
fi fi
geturl() {
echo "$PROTOCOL://$HOST/$REPO/$1/branch/$BRANCH/$2"
}
function run() { function run() {
"$HOME"/.local/bin/"$1" "$HOME"/.local/bin/"$1"
} }
function update() { function update() {
type=${4:-raw}
fname=$(basename "$1") fname=$(basename "$1")
output_path="$HOME/$2/$fname" output_path="$HOME/$2/$fname"
url=$(geturl "$type" "$1")
[ -f "$output_path" ] && chmod 700 "$output_path" [ -f "$output_path" ] && chmod 700 "$output_path"
curl -fsSL "$URL/$1" -o "$output_path" && log info "Downloaded $URL/$1 to $output_path" curl -fsSL "$url" -o "$output_path" && log info "Downloaded $url to $output_path"
chmod "$3" "$output_path" chmod "$3" "$output_path"
} }
clean_images() {
# Get list of image IDs with <none> tag (dangling images)
dangling_images=$(podman images -f "dangling=true" -q)
if [ -z "$dangling_images" ]; then
echo "✅ No dangling images to remove."
else
echo "⚠️ Removing dangling images..."
echo "$dangling_images" | xargs podman rmi
echo "🧹 Done!"
fi
}
# Strip arguments and parse command # Strip arguments and parse command
read -r command args <<<"$SSH_ORIGINAL_COMMAND" read -r command args <<<"$SSH_ORIGINAL_COMMAND"
@ -73,8 +90,8 @@ update)
gitops_router) gitops_router)
update gitops_router.sh .local/bin 500 update gitops_router.sh .local/bin 500
;; ;;
clean_dangling_images) home_tar)
update .bin/clean_dangling_images.sh .local/bin 500 update home.tar.gz . 500 media
;; ;;
*) *)
log error "Invalid arguments for update command: $args" log error "Invalid arguments for update command: $args"
@ -82,14 +99,13 @@ update)
esac esac
;; ;;
clean) clean)
"$HOME"/.local/bin/clean_dangling_images.sh clean_images
;; ;;
status) status)
podman images podman images
;; ;;
scp) remove)
log info "Accepting scp upload to $ALLOWED_PATH" podman rm "$args"
[[ "${args}" == "-t $ALLOWED_PATH" ]] && eval "$SSH_ORIGINAL_COMMAND" || log error "Invalid scp upload path: $args"
;; ;;
*) *)
log error "Unknown command: $command" log error "Unknown command: $command"

BIN
home.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.