Compare commits
10 Commits
0e2f89bde4
...
v0.6
Author | SHA1 | Date | |
---|---|---|---|
eba420cc81 | |||
a9adb834e5 | |||
f422da8d9e | |||
079979292d | |||
14a96035b6 | |||
1fc4153048 | |||
dceda5fb53 | |||
b67af4b482 | |||
61902a8b5b | |||
5181a3c194 |
@ -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
9
.bin/gitops
Executable 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
1
.gitattributes
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
home.tar.gz filter=lfs diff=lfs merge=lfs -text
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -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
24
.lazy.lua
Normal 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
91
.vscode/tasks.json
vendored
@ -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"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
@ -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"
|
||||||
|
|
||||||
@ -18,18 +15,7 @@ log() {
|
|||||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [$level] $*" | tee -a "$LOG_FILE"
|
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [$level] $*" | tee -a "$LOG_FILE"
|
||||||
}
|
}
|
||||||
|
|
||||||
logO() {
|
log info "Received SSH_ORIGINAL_COMMAND: $SSH_ORIGINAL_COMMAND"
|
||||||
local level="${1^^}" # convert to uppercase
|
|
||||||
shift
|
|
||||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] [$level] $*" >>"$LOG_FILE"
|
|
||||||
}
|
|
||||||
|
|
||||||
logO info "Received SSH_ORIGINAL_COMMAND: $SSH_ORIGINAL_COMMAND"
|
|
||||||
|
|
||||||
if [[ "${SSH_ORIGINAL_COMMAND:-}" == "scp -t $ALLOWED_PATH" ]]; then
|
|
||||||
exec scp -t "ALLOWED_PATH"
|
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Ensure the variable is set
|
# Ensure the variable is set
|
||||||
if [[ -z "${SSH_ORIGINAL_COMMAND:-}" ]]; then
|
if [[ -z "${SSH_ORIGINAL_COMMAND:-}" ]]; then
|
||||||
@ -37,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"
|
||||||
|
|
||||||
@ -84,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"
|
||||||
@ -93,13 +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 error "Invalid scp upload path: $args"
|
podman rm "$args"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
log error "Unknown command: $command"
|
log error "Unknown command: $command"
|
||||||
|
BIN
home.tar.gz
(Stored with Git LFS)
Normal file
BIN
home.tar.gz
(Stored with Git LFS)
Normal file
Binary file not shown.
Reference in New Issue
Block a user