Skip to content

Run command in container-based environment, commands store on softleader/dockerfile/helm

License

Notifications You must be signed in to change notification settings

softleader/helm-run

Repository files navigation

Build Status License Build Status

Helm Run Plugin

Run bash command in container-based environment.

To run commands that store on softleader/dockerfile/helm

$ helm run package

To run command on local, use -l:

$ helm run -l path/to/script

To execute via GNU make utility, not bash, use -m:

$ helm run -lm path/to/Makefile

helm-run requires helm version 2 and docker installed

Install

需要先安裝 helm (請安裝2.x.x版, 3.x.x不適用)

https://helm.sh/docs/intro/install/

安裝helm後 先進行環境初始化

$ helm init -c

安裝 helm-run

注意此段指令必須使用shell執行, windows系統請使用系統管理員開啟git-bash執行

$ helm plugin install https://github.com/softleader/helm-run

Install FAQ

This section tracks some of the more frequently encountered issues.

Q: A required privilege is not held by the client

權限不夠, 請以系統管理員身份 (windows) 或 sudo (linux) 安裝

Q: The system cannot find the file specified

安裝 helm 後尚未 initial, 請執行 helm init -c 後再次安裝

Q: exec: "sh": executable file not found in %PATH%

Windows 使用者必須開著 docker 進行 plugin 的安裝, 若還是遇到問題, 建議開著 docker 以 bash (如 Git Bash) 執行

Q: Error: exec: "C:\Users\Default": file does not exist

helm home 預設在使用者目錄下, 但如果使用者名稱有空白字元時會造成 helm 執行錯, 因此建議調整 helm home: 設定環境變數 HELM_HOME 指到 C:\.helm 後, 重新 initial helm

Usage

$ helm run [flags] COMMAND [ARGS]

Flags

Flags:
      --dos2unix           convert FILE from DOS to Unix format (default true)
  -h, --help               help for helm
  -l, --local              command store on local storage, not on github
  -m, --make               executed via GNU make utility, not bash
      --owner string       github owner of command (default "softleader")
      --path-base string   github path base of command (default "helm")
      --repo string        github repository of command (default "dockerfile")
      --rm                 automatically remove the container when it exits (default true)
      --token string       github access token of command for private repositories
  -U, --update-image       update image before running command

Command

儲存在 softleader/dockerfile/helm 的 shell 檔案名稱, 大小寫是有區分的

若要執行的 shell 檔案在更下層的目錄中, 則以 / 區隔每個目錄, 如在 softleader/dockerfile/helm 的目錄為:

.
└── helm
    ├── Dockerfile
    ├── README.md
    ├── package
    └── subdir
        └── mypackage

則執行 mypackage 的指令將為:

$ helm run subdir/mypackage

Args

會被繼續傳入執行 shell 的 args 中

Usage FAQ

Q: Error: No such image: softleader/helm

helm run 是 container-based 的 runtime 環境, 預設使用 image 為: softleader/helm, 第一次執行時請加上 update image 參數:

$ helm run -U package

update 之後的 helm run 即不用再下 -U

Q: /bin/bash: make: command not found

也許是你 local 的 image 新版本過舊但使用到了新的功能, 建議在 helm run 時加上 update image 參數更新 image:

$ helm run -U package

update 之後的 helm run 即不用再下 -U

Q: 以上都做了, 但在 windows 還是跑得很奇怪

將 docker 設定中, Network > DNS Server 改成 Fixed 再試試看