首页 > 解决方案 > 如何在 Google Cloud Build 步骤中使用之前从 bash 脚本文件中删除所有 CR (\r) 字符?

问题描述

我的cloudbuild.yaml文件中有一个步骤可以处理 Ubuntu 映像中的 bash 脚本文件。如果文件在 Linux 中编辑它工作得很好,但如果在 Windows 中编辑它会失败,因为 Windows 文本编辑器通常使用 CRLF 处理 EOL,而不是 LF。

- name: 'ubuntu'
  args: ['bash', './my-script.sh']

脚本中的命令之一创建my-folder. 我希望为每个构建创建该文件夹,但是当最后一次在 Windows 中编辑脚本时,它会失败并显示以下消息(请注意\rEOL):

mkdir: 无法创建目录 './my-folder/\r': 没有这样的文件或目录

我该如何改进cloudbuild.yaml才能摆脱这种情况?

标签: bashubuntugoogle-cloud-platformgoogle-cloud-build

解决方案


假设这是 Ansible,您可以使用该shell模块将文件转换为 unix 格式。请参见下面的示例:

- name: Execute dos2unix on several files
  shell: dos2unix “{{ scripts_dir }}/*.sh"
  args:
    chdir: "/home/yourdir/"

这应该将脚本转换为 unix 格式。然后,您可以像使用 Ansible 一样执行脚本。

编辑 如果您没有可用的 dos2unix 实用程序,您可以在执行之前使用 Ansible 安装它:

- name: Install dos2unix
  apt:
    name: dos2unix
    state: present

推荐阅读