local archs = [ { target: 'aarch64-unknown-linux-gnu', short: 'arm64-gnu' }, { target: 'aarch64-unknown-linux-musl', short: 'arm64-musl' }, // { target: 'x86_64-pc-windows-gnu', short: 'windows-amd64' }, { target: 'x86_64-unknown-linux-gnu', short: 'amd64-gnu' }, { target: 'x86_64-unknown-linux-musl', short: 'amd64-musl' }, ]; local getStepName(arch) = 'check ' + arch.short; local buildForArch(arch) = { name: getStepName(arch), image: 'img.kie.rs/jjkiers/rust-dind-cross:1.62-slim', volumes: [ { name: 'dockersock', path: '/var/run', }, { name: 'rustup', path: '/usr/local/rustup', }, ], commands: [ 'echo Hello World from Jsonnet on ' + arch.target + '!', 'cross build --release --target ' + arch.target, 'rm -rf target/' + arch.target + '/release/{build,deps,examples,incremental}', 'cp target/' + arch.target + '/release/drone-test artifacts/drone-test-' + arch.short, ], environment: { CROSS_REMOTE: true, }, depends_on: ['wait-for-docker'], }; local check_steps() = [ buildForArch(a) for a in archs ]; { kind: 'pipeline', type: 'docker', name: 'default', platform: { arch: 'amd64', }, steps: [{ name: 'wait-for-docker', image: 'img.kie.rs/jjkiers/rust-dind-cross:1.62-slim', commands: [ 'while ! docker image ls; do sleep 1; done', 'docker info', 'docker pull hello-world:latest', 'mkdir artifacts', ], volumes: [{ name: 'dockersock', path: '/var/run', }], }] + check_steps() + [ { name: 'build', image: 'img.kie.rs/jjkiers/rust-dind-cross:1.62-slim', commands: [ 'ls -lah target/', 'ls -lah artifacts', ], depends_on: [getStepName(a) for a in archs], }, ], services: [{ name: 'docker', image: 'docker:dind', privileged: true, volumes: [ { name: 'dockersock', path: '/var/run', }, { name: 'docker-storage', path: '/var/lib/docker', }, ], }], volumes: [ { name: 'dockersock', temp: {}, }, { name: 'docker-storage', host: { path: '/srv/drone/docker-dind-rust', }, }, { name: 'rustup', host: { path: '/srv/drone/rustup', }, }, ], image_pull_secrets: ['docker_private_repo'], }