Skip to content

Commit c36a507

Browse files
author
Hugues Morisset
committed
Add script to help create release archives
1 parent 978428a commit c36a507

File tree

4 files changed

+110
-0
lines changed

4 files changed

+110
-0
lines changed

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,11 @@ $ SCALEWAY_DEBUG=1 MACHINE_DEBUG=1 docker-machine ...
343343

344344
Feel free to contribute :smiley::beers:
345345

346+
## Release
347+
348+
You can easily build for all supported platforms using `build-dmds-packages.sh` script
349+
located in `./scripts`
350+
346351
## Links
347352

348353
- **Scaleway console**: https://cloud.scaleway.com/

scripts/build-dmds-packages.sh

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#!/usr/bin/env bash
2+
3+
set -eo pipefail
4+
5+
version=$1
6+
if [[ -z "$version" ]]; then
7+
echo "usage: $0 <version>"
8+
exit 1
9+
fi
10+
11+
package="github.com/scaleway/docker-machine-driver-scaleway"
12+
13+
archives=("docker-machine-driver-scaleway-linux-arm/linux_arm/tar.gz" "docker-machine-driver-scaleway-linux-amd64/linux_amd64/tar.gz" "docker-machine-driver-scaleway-linux-386/linux_386/tar.gz" "docker-machine-driver-scaleway-freebsd-arm/freebsd_arm/zip" "docker-machine-driver-scaleway-freebsd-amd64/freebsd_amd64/zip" "docker-machine-driver-scaleway-freebsd-386/freebsd_386/zip" "docker-machine-driver-scaleway-darwin-386/darwin_386/zip" "docker-machine-driver-scaleway-darwin-amd64/darwin_amd64/zip" "docker-machine-driver-scaleway-linux-amd64/amd64/deb" "docker-machine-driver-scaleway-linux-arm/armhf/deb" "docker-machine-driver-scaleway-linux-386/i386/deb")
14+
15+
mkdir -p "./release"
16+
cd "./release"
17+
18+
for archive in "${archives[@]}"
19+
do
20+
archive_split=(${archive//\// })
21+
bin=${archive_split[0]}
22+
bin_split=(${bin//-/ })
23+
../go-executable-build.sh "$package" "${bin_split[-2]}/${bin_split[-1]}" \
24+
&& ../packages-build.sh "$package" "$version" "$archive" \
25+
&& rm -f "$bin"
26+
done

scripts/go-executable-build.sh

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#!/usr/bin/env bash
2+
3+
set -eo pipefail
4+
5+
package=$1
6+
if [[ -z "$package" ]]; then
7+
echo "usage: $0 <package-name> <[linux, windows, darwin, freebsd]/[amd64, 386, arm]>..."
8+
exit 1
9+
fi
10+
shift
11+
package_split=(${package//\// })
12+
package_name=${package_split[-1]}
13+
14+
platforms=("$@")
15+
16+
for platform in "${platforms[@]}"
17+
do
18+
platform_split=(${platform//\// })
19+
GOOS=${platform_split[0]}
20+
GOARCH=${platform_split[1]}
21+
output_name="$package_name-$GOOS-$GOARCH"
22+
if [ $GOOS = "windows" ]; then
23+
output_name+='.exe'
24+
fi
25+
26+
printf "Building $package $GOOS $GOARCH to $output_name\n"
27+
env GOOS=$GOOS GOARCH=$GOARCH go build -o $output_name $package
28+
if [ $? -ne 0 ]; then
29+
echo 'An error has occurred! Aborting the script execution...'
30+
exit 1
31+
fi
32+
done
33+

scripts/packages-build.sh

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#!/usr/bin/env bash
2+
3+
set -eo pipefail
4+
5+
package=$1
6+
version=$2
7+
if [[ -z "$package" ]] || [[ -z "$version" ]]; then
8+
echo "usage: $0 <package-name> <version> <<bin_name>/<arch_name>/<archive_type>>..."
9+
exit 1
10+
fi
11+
shift
12+
shift
13+
package_split=(${package//\// })
14+
package_name=${package_split[-1]}
15+
16+
package_path="$GOPATH/src/$package"
17+
readme="$package_path/README.md"
18+
license="$package_path/LICENSE"
19+
basename="${package_name}_${version}_"
20+
insidebinname="${package_name}"
21+
archives=("$@")
22+
23+
for archive in "${archives[@]}"
24+
do
25+
archive_split=(${archive//\// })
26+
bin=${archive_split[0]}
27+
arch=${archive_split[1]}
28+
type=${archive_split[2]}
29+
30+
archive_name="${basename}${arch}.${type}"
31+
echo "Creating $archive_name"
32+
33+
if [ "$type" = "deb" ]; then
34+
echo "Archive deb not implemented"
35+
elif [ "$type" = "zip" ]; then
36+
cp "${bin}" "/tmp/$insidebinname"
37+
rm -f "$archive_name"
38+
zip "$archive_name" -j "$license" -j "$readme" -j "/tmp/$insidebinname"
39+
echo zip "$archive_name" -j "$license" -j "$readme" -j "/tmp/$insidebinname"
40+
elif [ "$type" = "tar.gz" ]; then
41+
cp "${bin}" "/tmp/$insidebinname"
42+
tar -czvf "$archive_name" --directory=$(dirname "$license") $(basename "$license") --directory=$(dirname "$readme") $(basename "$readme") --directory=$(dirname "/tmp/$insidebinname") "$insidebinname"
43+
else
44+
echo "Archive $type not implemented"
45+
fi
46+
done

0 commit comments

Comments
 (0)