Update build to use zigbuild instead of cross
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
Signed-off-by: Jacob Kiers <code@kiers.eu>
This commit is contained in:
parent
054324cdd7
commit
7d75389a09
|
@ -1,5 +1,5 @@
|
||||||
local executableName = 'newsletter-to-web';
|
local executableName = 'newsletter-to-web';
|
||||||
local cross_image = 'img.kie.rs/jjkiers/rust-dind-cross:1.66-full';
|
local build_image = 'rust:1.70';
|
||||||
|
|
||||||
local archs = [
|
local archs = [
|
||||||
{ target: 'aarch64-unknown-linux-musl', short: 'arm64-musl' },
|
{ target: 'aarch64-unknown-linux-musl', short: 'arm64-musl' },
|
||||||
|
@ -12,26 +12,32 @@ local getStepName(arch) = 'Build for ' + arch.short;
|
||||||
local builtExecutableName(arch) = executableName + if std.length(std.findSubstr(arch.short, 'windows')) > 0 then '.exe' else '';
|
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 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() = [
|
local add_build_steps() = [
|
||||||
{
|
{
|
||||||
name: getStepName(arch),
|
name: getStepName(arch),
|
||||||
image: cross_image,
|
image: build_image,
|
||||||
volumes: [
|
|
||||||
{
|
|
||||||
name: 'dockersock',
|
|
||||||
path: '/var/run',
|
|
||||||
},
|
|
||||||
],
|
|
||||||
commands: [
|
commands: [
|
||||||
'echo Hello World from Jsonnet on ' + arch.target + '!',
|
'echo Hello World from Jsonnet on ' + arch.target + '!',
|
||||||
'cross build --release --target ' + arch.target,
|
'rustup target add ' + arch.target,
|
||||||
|
'scripts/prepare-build.sh',
|
||||||
|
'cargo zigbuild --release --target ' + arch.target,
|
||||||
'cp target/' + arch.target + '/release/' + builtExecutableName(arch) + ' artifacts/' + targetExecutableName(arch),
|
'cp target/' + arch.target + '/release/' + builtExecutableName(arch) + ' artifacts/' + targetExecutableName(arch),
|
||||||
'rm -rf target/' + arch.target + '/release/*',
|
'rm -rf target/' + arch.target + '/release/*',
|
||||||
],
|
],
|
||||||
environment: {
|
|
||||||
CROSS_REMOTE: true,
|
|
||||||
},
|
|
||||||
depends_on: ['Wait for Docker'],
|
depends_on: ['Wait for Docker'],
|
||||||
|
volumes: [{
|
||||||
|
name: getVolumeName(arch),
|
||||||
|
path: '/drone/src/target',
|
||||||
|
}],
|
||||||
}
|
}
|
||||||
for arch in archs
|
for arch in archs
|
||||||
];
|
];
|
||||||
|
@ -46,10 +52,11 @@ local add_build_steps() = [
|
||||||
steps:
|
steps:
|
||||||
[{
|
[{
|
||||||
name: 'Wait for Docker',
|
name: 'Wait for Docker',
|
||||||
image: cross_image,
|
image: build_image,
|
||||||
commands: [
|
commands: [
|
||||||
'mkdir artifacts',
|
'mkdir artifacts',
|
||||||
'echo Using image: ' + cross_image,
|
'/usr/bin/env bash -c "pushd $(mktemp -d) && wget -nv https://download.docker.com/linux/debian/dists/bullseye/pool/stable/amd64/docker-ce-cli_24.0.2-1~debian.11~bullseye_amd64.deb -O docker-ce.dpkg && dpkg -i docker-ce.dpkg && popd"',
|
||||||
|
'echo Using image: ' + build_image,
|
||||||
'while ! docker image ls; do sleep 1; done',
|
'while ! docker image ls; do sleep 1; done',
|
||||||
'cargo --version',
|
'cargo --version',
|
||||||
'rustc --version',
|
'rustc --version',
|
||||||
|
@ -68,7 +75,7 @@ local add_build_steps() = [
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
name: 'Show built artifacts',
|
name: 'Show built artifacts',
|
||||||
image: cross_image,
|
image: build_image,
|
||||||
commands: [
|
commands: [
|
||||||
'ls -lah artifacts',
|
'ls -lah artifacts',
|
||||||
],
|
],
|
||||||
|
@ -109,11 +116,12 @@ local add_build_steps() = [
|
||||||
}],
|
}],
|
||||||
|
|
||||||
volumes: [
|
volumes: [
|
||||||
{
|
{
|
||||||
name: 'dockersock',
|
name: 'dockersock',
|
||||||
temp: {},
|
temp: {},
|
||||||
},
|
},
|
||||||
],
|
]
|
||||||
|
+ getLocalVolumes(archs),
|
||||||
|
|
||||||
image_pull_secrets: ['docker_private_repo'],
|
image_pull_secrets: ['docker_private_repo'],
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,43 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -x
|
||||||
|
apt-get update && apt-get install -y jq curl
|
||||||
|
|
||||||
|
pushd $(mktemp -d)
|
||||||
|
|
||||||
|
# Install minisign
|
||||||
|
wget -nv https://github.com/jedisct1/minisign/releases/download/0.11/minisign-0.11-linux.tar.gz -O - | tar --strip-components 2 -C /usr/local/bin/ -vxzf - minisign-linux/x86_64/minisign
|
||||||
|
|
||||||
|
# Installing zig, checking its validity
|
||||||
|
mkdir -p /usr/local/bin
|
||||||
|
wget -nv https://ziglang.org/download/index.json -O zig-versions.json
|
||||||
|
|
||||||
|
echo "$(jq -r '.master."x86_64-linux".shasum' zig-versions.json) zig.tar.xz" > zig.tar.xz.shasum
|
||||||
|
wget -nv -c $(jq -r '.master."x86_64-linux".tarball' zig-versions.json) -O zig.tar.xz
|
||||||
|
wget -nv -c "$(jq -r '.master."x86_64-linux".tarball' zig-versions.json).minisig" -O zig.tar.xz.minisig
|
||||||
|
sha256sum -c zig.tar.xz.shasum
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Error in SHA256 hash!"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "SHA256 hash OK"
|
||||||
|
fi
|
||||||
|
|
||||||
|
minisign -P 'RWSGOq2NVecA2UPNdBUZykf1CCb147pkmdtYxgb3Ti+JO/wCYvhbAb/U' -Vm zig.tar.xz
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Error in signature!"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "Signature OK"
|
||||||
|
fi
|
||||||
|
|
||||||
|
tar -C /usr/local/bin --strip-components 1 -xf zig.tar.xz
|
||||||
|
|
||||||
|
rm -rf zig*
|
||||||
|
|
||||||
|
# Installing binstall and zigbuild
|
||||||
|
curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash
|
||||||
|
cargo binstall -y cargo-zigbuild
|
||||||
|
|
||||||
|
popd
|
Loading…
Reference in New Issue