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
|
||||
.config/fish
|
||||
.npm
|
||||
home.tar.gz
|
||||
.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",
|
||||
"tasks": [
|
||||
{
|
||||
"label": "Build workspace image",
|
||||
"label": "GitOps(Build): base image",
|
||||
"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",
|
||||
"problemMatcher": [],
|
||||
"detail": "build podman image using buildah"
|
||||
},
|
||||
{
|
||||
"label": "Clean dangling images",
|
||||
"label": "GitOps: Clean dangling images",
|
||||
"type": "shell",
|
||||
"command": "${workspaceFolder}/.bin/clean_dangling_images.sh",
|
||||
"command": ".bin/gitops clean",
|
||||
"problemMatcher": [],
|
||||
"detail": "Clean podman images"
|
||||
},
|
||||
{
|
||||
"label": "Tag image",
|
||||
"label": "Gitops(Update): build-base.sh",
|
||||
"type": "shell",
|
||||
"command": "podman tag localhost/analytics-backend-workspace:latest localhost:5100/analytics-backend-workspace:latest",
|
||||
"command": ".bin/gitops update base",
|
||||
"group": "build",
|
||||
"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",
|
||||
"command": "podman push --tls-verify=false localhost:5100/analytics-backend-workspace:latest",
|
||||
"command": ".bin/gitops update workspace",
|
||||
"group": "build",
|
||||
"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",
|
||||
"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": [],
|
||||
"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",
|
||||
"command": "sudo cp access.yml /home/infilytics/ && sudo chown -R infilytics:infilytics /home/infilytics/access.yml",
|
||||
"command": ".bin/gitops update access",
|
||||
"group": "build",
|
||||
"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",
|
||||
"type": "shell",
|
||||
"command": "${workspaceFolder}/.bin/create-home-tarball.sh",
|
||||
"group": "build",
|
||||
"problemMatcher": [],
|
||||
"detail": "create home.tar.gz from .config .local .ssh start.sh"
|
||||
},
|
||||
{
|
||||
"label": "Start a tmux test session",
|
||||
"label": "Test: start tmux session",
|
||||
"type": "shell",
|
||||
"group": "test",
|
||||
"command": "${workspaceFolder}/.bin/test-tmux.sh",
|
||||
"group": "test",
|
||||
"problemMatcher": [],
|
||||
"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",
|
||||
"command": "git clean -Xfd",
|
||||
"problemMatcher": [],
|
||||
"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"
|
||||
REPO="babbarc/workspaces"
|
||||
BRANCH="master"
|
||||
URL="$PROTOCOL://$HOST/$REPO/raw/branch/$BRANCH"
|
||||
|
||||
ALLOWED_PATH="/home/infilytics/home.tar.gz"
|
||||
|
||||
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"
|
||||
}
|
||||
|
||||
logO() {
|
||||
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
|
||||
log info "Received SSH_ORIGINAL_COMMAND: $SSH_ORIGINAL_COMMAND"
|
||||
|
||||
# Ensure the variable is set
|
||||
if [[ -z "${SSH_ORIGINAL_COMMAND:-}" ]]; then
|
||||
@ -37,18 +23,38 @@ if [[ -z "${SSH_ORIGINAL_COMMAND:-}" ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
geturl() {
|
||||
echo "$PROTOCOL://$HOST/$REPO/$1/branch/$BRANCH/$2"
|
||||
}
|
||||
|
||||
function run() {
|
||||
"$HOME"/.local/bin/"$1"
|
||||
}
|
||||
|
||||
function update() {
|
||||
type=${4:-raw}
|
||||
fname=$(basename "$1")
|
||||
output_path="$HOME/$2/$fname"
|
||||
url=$(geturl "$type" "$1")
|
||||
|
||||
[ -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"
|
||||
}
|
||||
|
||||
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
|
||||
read -r command args <<<"$SSH_ORIGINAL_COMMAND"
|
||||
|
||||
@ -84,8 +90,8 @@ update)
|
||||
gitops_router)
|
||||
update gitops_router.sh .local/bin 500
|
||||
;;
|
||||
clean_dangling_images)
|
||||
update .bin/clean_dangling_images.sh .local/bin 500
|
||||
home_tar)
|
||||
update home.tar.gz . 500 media
|
||||
;;
|
||||
*)
|
||||
log error "Invalid arguments for update command: $args"
|
||||
@ -93,13 +99,13 @@ update)
|
||||
esac
|
||||
;;
|
||||
clean)
|
||||
"$HOME"/.local/bin/clean_dangling_images.sh
|
||||
clean_images
|
||||
;;
|
||||
status)
|
||||
podman images
|
||||
;;
|
||||
scp)
|
||||
log error "Invalid scp upload path: $args"
|
||||
remove)
|
||||
podman rm "$args"
|
||||
;;
|
||||
*)
|
||||
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