diff --git a/.drone.jsonnet b/.drone.jsonnet new file mode 100644 index 0000000..4c7f6b6 --- /dev/null +++ b/.drone.jsonnet @@ -0,0 +1,130 @@ +local executableName = 'newsletter-to-web'; + +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' }, + { target: 'x86_64-unknown-linux-gnu', short: 'amd64-gnu' }, + { target: 'x86_64-unknown-linux-musl', short: 'amd64-musl' }, +]; + +local getStepName(arch) = 'Build for ' + arch.short; + +local builtExecutableName(arch) = executableName + if std.startsWith(arch.short, 'windows') then '.exe' else ''; +local targetExecutableName(arch) = executableName + if std.startsWith(arch.short, 'windows') then '.exe' else '-' + arch.short; + +local add_build_steps() = [ + { + 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, + 'cp target/' + arch.target + '/release/' + builtExecutableName(arch) + ' artifacts/' + targetExecutableName(arch), + 'rm -rf target/' + arch.target + '/release/*', + ], + environment: { + CROSS_REMOTE: true, + }, + depends_on: ['Wait for Docker'], + } + for arch 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', + }], + }] + + add_build_steps() + + [ + { + name: 'Show built artifacts', + image: 'img.kie.rs/jjkiers/rust-dind-cross:1.62-slim', + 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'], + }, + ], + + 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'], +} diff --git a/.drone.yml b/.drone.yml deleted file mode 100644 index 18a099a..0000000 --- a/.drone.yml +++ /dev/null @@ -1,13 +0,0 @@ -kind: pipeline -name: test-on-amd64 - -platform: - arch: amd64 - -steps: -- name: test - image: rust:1.62 - commands: - - cargo build --verbose --all - - cargo test --verbose --all -