首页 > 解决方案 > 使用带有 Makefile 的 jenkins 将 tar 文件推送到 s3

问题描述

我正在尝试使用 jenkins 部署构建文件夹,我在源代码中添加了 Makefile,它将以 tar 格式将我的所有构建文件推送到 s3。

下面是我的 Makefile,我是这个 Makefile 的新手。

因此,基于 jenkins 构建参数,我正在检查要添加的文件名和要选择的脚本。

在这里,我使用 if else 编写过,但不知道如何在本地运行它并检查它是否正确。

我也可以使用switch而不是if else,所以更多的环境会有所帮助。

从本地运行这个文件的命令是什么,我试过make -f Makefile了,但什么也没发生command for checking testing

run test: 
    # command for checking testing

create tar file:
    # pick the proper env based on jenkins params
    mkdir target

    if [${ENV} = "testing"]; then \
        npm install && npm run build:testing 
        tar czf target/app-${BUILD_NUMBER}_testing.tar.gz build/    
    else \
        npm install && npm run build:development
        tar czf target/app-${BUILD_NUMBER}_development.tar.gz build/    
    fi 
    
push to s3: 
     aws s3 sync target/ s3://app-builds 

基本上,我试图在 s3 中的 app-builds 存储桶中获取 tar 文件,当命令运行时,这些文件将包含在 build 文件夹中,例如基于从 jenkins 参数传递的 env。

s3 应用程序构建存储桶中的预期输出

app-0.0.1_testing.tar.gz
app-0.0.2_testing.tar.gz
app-0.0.3_development.tar.gz

标签: jenkinsmakefile

解决方案


首先 - 建议:消除目标名称中的空格。Make 不适用于带有嵌入空间的文件/目标。例如:“push to s3”应该是“push_to_s3”(或类似的)

默认情况下,调用 make 将执行 makefile 中的第一个目标(运行测试)。要调用 s3 目标,请使用“make push_to_s3”。


推荐阅读