heidsoft / devops

devops 经验总结实践与产品化
81 stars 44 forks source link

CI集中化构建 #145

Open heidsoft opened 8 months ago

heidsoft commented 8 months ago

https://resources.github.com/learn/pathways/automation/essentials/configure-your-deployment-environment/ https://github.com/earthly/earthly https://www.docker.com/blog/faster-multi-platform-builds-dockerfile-cross-compilation-guide/ https://www.kubernetes.org.cn/9059.html https://docs.docker.com/build/building/multi-stage/ https://github.com/moby/buildkit/issues/633 https://community.jenkins.io/t/how-to-enable-docker-buildkit/11354/3 https://medium.com/@WayneWu411/building-docker-image-with-buildkit-in-jenkins-running-in-kubernetes-cluster-ed4535d122ec https://github.com/moby/buildkit?tab=readme-ov-file https://cloud.tencent.com/developer/article/1803396 https://blog.imoe.tech/2023/01/05/docker-build-multiplatform-image/

heidsoft commented 8 months ago

Jenkins ManageFile 插件是一种用于在Jenkins作业中管理文件的工具。以下是一些应用场景:

  1. 配置管理:可以使用ManageFile插件来管理和跟踪Jenkins作业的配置文件的更改。例如,如果你有一个需要多次运行的作业,并且每次运行都需要更新配置文件,那么可以使用ManageFile插件来管理这些文件。

  2. 版本控制:ManageFile插件可以用于版本控制。它可以跟踪文件的历史版本,并允许你回滚到任何一个版本。

  3. 分发文件:如果你有一个需要在多个节点上运行的Jenkins作业,并且需要将某些文件分发到这些节点,那么可以使用ManageFile插件来完成这个任务。

  4. 备份和恢复:可以使用ManageFile插件来备份和恢复文件。例如,你可以在作业运行之前备份配置文件,以防止作业运行失败时丢失配置。

  5. 模板管理:如果你有一些模板文件需要在多个作业中使用,可以使用ManageFile插件来管理这些模板文件。

  6. 自动化测试:在自动化测试中,经常需要管理和控制测试数据和测试配置文件,ManageFile插件可以很好地处理这些任务。

heidsoft commented 8 months ago

具体的文件内容取决于你的具体需求和使用的工具。下面是一些基本的示例:

  1. 配置管理:比如你正在管理一个Java应用程序的配置文件。你可以在文件中包含类似以下内容:

    db.username=myuser
    db.password=mypassword
    db.url=jdbc:mysql://localhost:3306/mydb

    然后,你可以在Jenkins作业中使用这个配置文件。

  2. 版本控制:对于版本控制,你不需要在文件中写任何特定的内容。ManageFile插件会自动跟踪文件的更改。

  3. 分发文件:比如你需要分发一个包含环境变量的脚本文件。你可以在文件中包含类似以下内容:

    export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
    export PATH=$JAVA_HOME/bin:$PATH

    然后,你可以在Jenkins作业中运行这个脚本。

  4. 备份和恢复:对于备份和恢复,你不需要在文件中写任何特定的内容。你只需要在ManageFile插件中配置好备份和恢复的选项。

  5. 模板管理:比如你正在管理一个HTML模板。你可以在文件中包含类似以下内容:

    <!DOCTYPE html>
    <html>
    <body>
    
    <h1>${title}</h1>
    <p>${content}</p>
    
    </body>
    </html>

    然后,你可以在Jenkins作业中使用这个模板,并用实际的值替换${title}${content}

  6. 自动化测试:比如你正在管理一个包含测试数据的CSV文件。你可以在文件中包含类似以下内容:

    username,password
    user1,pass1
    user2,pass2

    然后,你可以在Jenkins作业中读取这个CSV文件,并用其中的数据来运行测试。

heidsoft commented 8 months ago

使用Jenkins的File Operations Plugin,可以在Jenkinsfile中使用ManageFile操作。

首先,需要在Jenkins系统设置中添加要管理的文件。

步骤如下:

  1. 进入Jenkins的系统管理页面。
  2. 在系统管理页面,找到"Managed files"选项,点击进入。
  3. 在Managed files页面,点击"Add a new Config"按钮。
  4. 在Add a new Config页面,输入文件的ID和名字,然后添加你的文件内容。

然后,你就可以在Jenkinsfile中使用这个文件了。

下面是一个示例:

pipeline {
    agent any

    stages {
        stage('Example') {
            steps {
                // 使用Managed File
                configFileProvider([configFile(fileId: 'my-managed-file', variable: 'MY_FILE')]) {
                    // 这里的MY_FILE变量就是你的文件路径
                    sh 'cat $MY_FILE'
                }
            }
        }
    }
}

这个示例中,configFileProvider是File Operations Plugin提供的一个函数,它可以将管理的文件提供给你的构建步骤使用。configFile函数则用于指定文件的ID和一个环境变量,这个环境变量就是你的文件路径。

在steps中,使用sh 'cat $MY_FILE'就可以打印出文件的内容了。