
Bashful完全指南如何用YAML文件优雅编排命令与脚本【免费下载链接】bashfulUse a yaml file to stitch together commands and bash snippits and run them with a bit of style. Why? Because your bash script should be quiet and shy-like (...and not such a loud mouth).项目地址: https://gitcode.com/gh_mirrors/bas/bashfulBashful是一款功能强大的工具它允许你使用YAML文件来编排命令和bash代码片段并以优雅的方式运行它们。为什么需要它因为你的bash脚本应该安静而内敛而不是一个大嘴巴。Bashful让命令执行过程更加整洁、可控同时提供了丰富的功能来提升你的工作效率。 Bashful核心优势Bashful不仅仅是一个简单的命令运行器它带来了一系列强大特性让命令编排和执行变得前所未有的简单✅ 支持串行或并行运行bash代码片段任务✅ 美观的垂直进度条显示当前任务状态带有实时stdout/stderr内联显示✅ 支持下载URL引用的bash脚本和可执行文件✅ 将脚本集和列出的资源捆绑到单个可移植的可执行文件中✅ 将所有任务的stdout/stderr记录到日志文件✅ 为已运行过的任务提供ETA预计完成时间✅ 配置YAML块控制行为/外观✅ 命令失败时提供详细错误报告✅ 控制哪些失败命令应暂停执行Bashful运行示例展示了其优雅的命令执行界面和进度显示 快速安装指南Bashful提供了多种安装方式满足不同操作系统的需求Ubuntu/Debian系统wget https://github.com/wagoodman/bashful/releases/download/v0.0.10/bashful_0.0.10_linux_amd64.deb sudo apt install ./bashful_0.0.10_linux_amd64.debRHEL/Centos系统wget https://github.com/wagoodman/bashful/releases/download/v0.0.10/bashful_0.0.10_linux_amd64.rpm rpm -i bashful_0.0.10_linux_amd64.rpmMac系统brew tap wagoodman/bashful brew install bashfulGo工具安装go get github.com/wagoodman/bashful源码安装如果你更喜欢从源码构建可以克隆仓库并手动编译git clone https://gitcode.com/gh_mirrors/bas/bashful cd bashful make 入门指南从简单到高级Bashful的使用非常直观通过YAML文件定义任务流程。项目的example/目录中提供了大量示例涵盖了各种使用场景。1. 最简单的示例创建一个名为hello.yaml的文件tasks: - cmd: echo Hello, World!运行它bashful run hello.yaml2. 构建和部署流程示例创建一个名为ci.yaml的文件tasks: - name: Building app cmd: go build -ldflags -linkmode external -extldflags -static -s tags: build - name: Packaging app cmd: docker build -t my-awesome-app:v1 . tags: build - name: Publishing image cmd: docker push my-awesome-app:v1 tags: deploy - name: Deploying app cmd: kubectl run my-awesome-app --imagedocker.io/wagoodman/my-awesome-app:v1 --pt80 tags: deploy运行所有任务bashful run ci.yaml或者只运行构建步骤bashful run ci.yaml --tags build3. 并行任务执行创建一个名为install.yaml的文件tasks: - name: Installing bridgy parallel-tasks: - cmd: sudo apt-get install -y tmux sshfs - cmd: pip install --user bridgy4. 下载并执行远程脚本tasks: # 给定的URL默认会被执行 - name: Installing Cuda and Bazel url: https://raw.githubusercontent.com/jasimpson/tensorflow-on-aws/master/toa_part_1of2.sh # 或者你可以控制URL资源(exec)的使用方式 - name: Installing Tensorflow url: https://raw.githubusercontent.com/jasimpson/tensorflow-on-aws/master/toa_part_2of2.sh cmd: source ~/.bashrc exec5. 打包成单个可执行文件将安装程序打包成单个可执行文件以便分发给他人运行必须是相同的架构和操作系统类型bashful bundle install.yaml # 现在你有了一个名为install.bundle的新可执行文件可以直接执行 ./install.bundle YAML文件高级功能Bashful提供了许多高级功能让你能够创建更复杂、更灵活的任务流程。环境变量持久化你可以跨任务持久化环境变量tasks: - cmd: export VAR1isnowset - cmd: eval export VAR2isnowreallyset - cmd: echo ${VAR1} ${VAR2}注意你不能从并行步骤中持久化环境变量。YAML文件包含可以在bashful的run.yaml中包含其他YAML文件这样你可以集中管理通用的YAML片段以实现重用# run.yaml $include: example/common-config.yml x-reference-data: all-apps: app-names - $include example/common-apps.yml tasks: - name: Cloning Repos parallel-tasks: - name: Cloning replace cmd: example/scripts/random-worker.sh 2 replace ignore-failure: true for-each: *app-names - name: Building Repos parallel-tasks: - name: Building replace cmd: example/scripts/random-worker.sh 1 replace ignore-failure: true for-each: *app-names传递参数给任务可以将任意参数传递给任务bashful run some.yaml first-argument 20这些参数可以作为bash的$#参数使用在这个例子中是$1和$2tasks: - name: Show some stuff! cmd: echo $1 - name: Show some other stuff! cmd: echo $2⚙️ 配置选项详解Bashful提供了丰富的配置选项让你可以自定义任务的外观、感觉和行为。这些选项在configYAML块中设置适用于YAML文件中的所有任务。# 此块用于配置所有任务的外观、感觉和行为 config: # 用于分隔任务列表的字符 bullet-char: - # 任务部分完成后隐藏所有子任务 collapse-on-completion: false # 更改特定状态下任务的垂直进度条颜色 # 这应该是256色调色板中的一个数字 success-status-color: 10 running-status-color: 22 pending-status-color: 22 error-status-color: 160 # 默认情况下屏幕在事件发生时更新当读取正在运行的进程的stdout时 # 可以更改为仅允许屏幕按间隔更新以适应较慢的设备 event-driven: false # 在任务的cmd部分中用于引用下载的url的字符/字符串 exec-replace-pattern: exec # 可以同时运行的任务数 max-parallel-commands: 4 # 将所有任务输出和事件记录到给定的日志文件 log-path: path/to/file.log # 完成后显示/隐藏所有任务失败的详细摘要 show-failure-report: true # 显示/隐藏最后一个摘要行显示%完成、已运行任务数、预计到达时间等 show-summary-footer: true # 在摘要页脚行中显示/隐藏失败的任务数 show-summary-errors: false # 在摘要页脚行上显示/隐藏迄今为止已完成的任务数 show-summary-steps: true # 在摘要页脚行上显示/隐藏预计到达时间和运行时间数据 show-summary-times: false # 全局启用/禁用显示每个任务的stdout/stderr show-task-output: true # 在屏幕上显示每个任务的预计到达时间在每行显示运行的命令 show-task-times: true # 只在屏幕上显示一行输出而不是每个任务一行摘要行 single-line: true # 全局启用/禁用当任何一个任务失败时停止进一步执行 stop-on-failure: true # 在for-each块中列出的项目替换的字符/字符串 replica-replace-pattern: replace # 在屏幕上更新每个任务的时间轮询间隔以毫秒为单位 update-interval: 250 任务配置选项tasks块是要运行的进程的有序列表。每个任务有几个可以配置的选项tasks: - name: my awesome command # 任务标题 cmd: echo woot # 要运行的命令必需 collapse-on-completion: false # 完成后隐藏所有定义的parallel-tasks event-driven: true # 使用事件驱动或轮询机制显示任务stdout ignore-failure: false # 不将任何非零返回码注册为失败此任务将显示为永不失败 show-output: true # 向屏幕显示任务stdout stop-on-failure: true # 指示如果此cmd失败应用程序是否应继续 parallel-tasks: ... # 应并发执行的任务列表 for-each: ... # 用于复制此任务的参数列表 url: http://github.com/somescript.sh # 下载此url并执行它 md5: ae8abe98aeb389ae8b39e3434bbc # 提供的url的预期md5校验和 tags: something # 可用于在运行yaml中执行任务子选择的一个或多个tags tags: # 例如 bashful run some.yaml --tags something - something # bashful run some.yaml --tags something,else - else # bashful run some.yaml --only-tags something 运行时选项Bashful提供了灵活的运行时选项让你可以根据需要调整执行行为USAGE: bashful run [options] path-to-yaml-file bashful bundle path-to-yaml-file COMMANDS: bundle 将yaml和引用的url资源捆绑到单个可执行文件中 run 执行给定的yaml BUNDLE OPTIONS: None RUN OPTIONS: --tags value 匹配任务标签的逗号分隔列表。 如果任务的标签匹配*或者它没有被标记*那么它将被执行另见--only-tags。 --only-tags value 匹配任务标签的逗号分隔列表。只有当任务有匹配的标签时才会执行。 GLOBAL OPTIONS: --help, -h 显示帮助 --version, -v 打印版本 实际应用场景Bashful可以应用于各种场景包括但不限于CI/CD流程自动化使用Bashful定义构建、测试和部署流程确保每次执行的一致性。系统部署与配置编写YAML文件来自动化服务器设置、软件安装和配置。开发环境搭建为团队成员快速搭建统一的开发环境减少在我机器上能运行的问题。批量任务处理并行执行多个相似任务提高处理效率。复杂脚本管理将复杂的bash脚本拆分为模块化的YAML任务提高可维护性。 学习资源要深入了解Bashful的更多功能和最佳实践建议查看项目中的示例目录example/包含17个不同的示例YAML文件展示了各种功能和用例example/scripts/包含用于演示的bash脚本示例️ 结语Bashful为命令行任务编排提供了一种优雅、灵活的方式让你的bash脚本变得更加整洁、可读和可维护。无论你是开发人员、系统管理员还是DevOps工程师Bashful都能帮助你更高效地管理和执行命令行任务。开始使用Bashful体验用YAML文件优雅编排命令与脚本的乐趣吧【免费下载链接】bashfulUse a yaml file to stitch together commands and bash snippits and run them with a bit of style. Why? Because your bash script should be quiet and shy-like (...and not such a loud mouth).项目地址: https://gitcode.com/gh_mirrors/bas/bashful创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考