| 
									
										
										
										
											2023-08-23 20:33:18 +02:00
										 |  |  | local executableName = 'fourth';
 | 
					
						
							| 
									
										
										
										
											2023-08-24 18:45:04 +02:00
										 |  |  | local build_image = 'img.kie.rs/jjkiers/rust-cross:rust1.71.1-zig';
 | 
					
						
							| 
									
										
										
										
											2023-08-23 19:29:29 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 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'],
 | 
					
						
							|  |  |  | }
 |