93 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Jsonnet
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Jsonnet
		
	
	
	
	
	
| local executableName = 'l4p';
 | |
| local build_image = 'img.kie.rs/jjkiers/rust-crossbuild:rust1.79.0-zig0.11.0-zig';
 | |
| 
 | |
| local archs = [
 | |
|   { target: 'aarch64-unknown-linux-musl', short: 'arm64-musl' },
 | |
|   { target: 'x86_64-pc-windows-gnu', short: 'windows' },
 | |
|   { target: 'x86_64-unknown-linux-musl', short: 'amd64-musl' },
 | |
| ];
 | |
| 
 | |
| local getStepName(arch) = 'Build for ' + arch.short;
 | |
| 
 | |
| local builtExecutableName(arch) = executableName + if std.length(std.findSubstr(arch.short, 'windows')) > 0 then '.exe' else '';
 | |
| local targetExecutableName(arch) = executableName + '-' + arch.target + if std.length(std.findSubstr(arch.short, 'windows')) > 0 then '.exe' else '';
 | |
| 
 | |
| local getVolumeName(arch) = 'target-' + arch.target;
 | |
| local getLocalVolumes(arch) = [
 | |
|   {
 | |
|     name: getVolumeName(arch),
 | |
|     temp: {},
 | |
|   }
 | |
|   for arch in archs
 | |
| ];
 | |
| 
 | |
| local add_build_steps() = [
 | |
|   {
 | |
|     name: getStepName(arch),
 | |
|     image: build_image,
 | |
|     commands: [
 | |
|       'echo Hello World from Jsonnet on ' + arch.target + '!',
 | |
|       'cargo zigbuild --release --target ' + arch.target,
 | |
|       'cp target/' + arch.target + '/release/' + builtExecutableName(arch) + ' artifacts/' + targetExecutableName(arch),
 | |
|       'rm -rf target/' + arch.target + '/release/*',
 | |
|     ],
 | |
|     depends_on: ['Prepare'],
 | |
|     volumes: [{
 | |
|       name: getVolumeName(arch),
 | |
|       path: '/drone/src/target',
 | |
|     }],
 | |
|   }
 | |
|   for arch in archs
 | |
| ];
 | |
| 
 | |
| {
 | |
|   kind: 'pipeline',
 | |
|   type: 'docker',
 | |
|   name: 'default',
 | |
|   platform: {
 | |
|     arch: 'amd64',
 | |
|   },
 | |
|   steps:
 | |
|     [{
 | |
|       name: 'Prepare',
 | |
|       image: build_image,
 | |
|       commands: [
 | |
|         'mkdir artifacts',
 | |
|         'echo Using image: ' + build_image,
 | |
|         'cargo --version',
 | |
|         'rustc --version',
 | |
|       ],
 | |
|     }] +
 | |
|     add_build_steps() +
 | |
|     [
 | |
|       {
 | |
|         name: 'Show built artifacts',
 | |
|         image: build_image,
 | |
|         commands: [
 | |
|           'ls -lah artifacts',
 | |
|         ],
 | |
|         depends_on: [getStepName(a) for a in archs],
 | |
|       },
 | |
|       {
 | |
|         name: 'Create release on gitea',
 | |
|         image: 'plugins/gitea-release',
 | |
|         settings: {
 | |
|           api_key: {
 | |
|             from_secret: 'gitea_token',
 | |
|           },
 | |
|           base_url: 'https://code.kiers.eu',
 | |
|           files: 'artifacts/*',
 | |
|           checksum: 'sha256',
 | |
|         },
 | |
|         when: {
 | |
|           event: ['tag', 'promote'],
 | |
|         },
 | |
|         depends_on: ['Show built artifacts'],
 | |
|       },
 | |
|     ],
 | |
| 
 | |
|   volumes: getLocalVolumes(archs),
 | |
| 
 | |
|   image_pull_secrets: ['docker_private_repo'],
 | |
| }
 |