我想使用 Jenkins 声明性管道和代理语法来构建一个人工制品,然后我想将其部署到侧车容器中,如以下伪代码所示:
pipeline {
agent none
stages {
stage('Build Artefact') {
agent { docker 'build-agent' }
steps {
< I want to create the artefact to deploy to a side car container here >
}
}
stage('Deploy Artefact') {
agent { docker 'side-car' }
steps {
< I want to deploy the artefact created in the previous stage here >
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在努力解决如何将文件从“构建人工制品”阶段使用的容器传递到“部署人工制品”中使用的容器,据我所知stash不会跨容器工作,除非有人有否则体验。
根据 Jenkins 文档,您可以使用 args 参数为声明性管道语法指定卷:
pipeline {
agent {
docker {
image …Run Code Online (Sandbox Code Playgroud) 我正在使用 Docker 容器在 Jenkins 中构建一个构建管道,我想构建一个映像,但前提是该映像不存在于运行 Jenkins 的同一服务器上。我正在寻找最简单、最优雅的方法来做到这一点,但我正在努力想出任何办法。
我想获取与 Windows 卷的驱动器号相关联的序列号,如从 PowerShell Get-Disk cmdlet 返回的序列号。我正在努力寻找任何可以为我指明正确方向的东西。我可以看到人们已经设法通过从 vbscript 和 c# 调用的 WMI 查询在现场执行此操作,例如
private string GetDiskIndex(string driveLetter)
{
driveLetter = driveLetter.TrimEnd('\\');
ManagementScope scope = new ManagementScope(@"\root\cimv2");
var drives = new ManagementObjectSearcher(scope, new ObjectQuery("select * from Win32_DiskDrive")).Get();
foreach(var drive in drives)
{
var partitions = new ManagementObjectSearcher(scope, new ObjectQuery("ASSOCIATORS OF {Win32_DiskDrive.DeviceID='" + drive["DeviceID"] + "'} WHERE AssocClass = Win32_DiskDriveToDiskPartition")).Get();
foreach(var partition in partitions)
{
var logicalDisks = new ManagementObjectSearcher(scope, new ObjectQuery("ASSOCIATORS OF {Win32_DiskPartition.DeviceID='" + partition["DeviceID"] + "'} WHERE AssocClass = Win32_LogicalDiskToPartition")).Get(); …Run Code Online (Sandbox Code Playgroud)