|
1 | 1 | #!/bin/sh
|
2 | 2 |
|
3 |
| -set -xe |
| 3 | +set -xeu |
| 4 | + |
| 5 | +SCRIPT_PATH=$(realpath "$0") |
| 6 | +SCRIPT_DIR=$(dirname "$SCRIPT_PATH") |
4 | 7 |
|
5 | 8 | DISTRO=$1
|
6 | 9 | DISTROVER=$2
|
7 |
| - |
8 |
| -NAME="vdirsyncer-${DISTRO}-${DISTROVER}:latest" |
| 10 | +CONTAINER_NAME="vdirsyncer-${DISTRO}-${DISTROVER}" |
9 | 11 | CONTEXT="$(mktemp -d)"
|
10 | 12 |
|
| 13 | +DEST_DIR="$SCRIPT_DIR/../$DISTRO-$DISTROVER" |
| 14 | + |
| 15 | +cleanup() { |
| 16 | + rm -rf "$CONTEXT" |
| 17 | +} |
| 18 | +trap cleanup EXIT |
| 19 | + |
| 20 | +# Prepare files. |
| 21 | +cp scripts/_build_deb_in_container.bash "$CONTEXT" |
11 | 22 | python setup.py sdist -d "$CONTEXT"
|
12 | 23 |
|
13 |
| -# Build the package in a container with the right distro version. |
14 |
| -docker build \ |
15 |
| - --build-arg distro=$DISTRO \ |
16 |
| - --build-arg distrover=$DISTROVER \ |
17 |
| - -t $NAME \ |
18 |
| - -f scripts/dpkg.Dockerfile \ |
19 |
| - "$CONTEXT" |
| 24 | +podman run -it \ |
| 25 | + --name "$CONTAINER_NAME" \ |
| 26 | + --volume "$CONTEXT:/source" \ |
| 27 | + "$DISTRO:$DISTROVER" \ |
| 28 | + bash /source/_build_deb_in_container.bash |
| 29 | + |
| 30 | +# Keep around the package filename. |
| 31 | +PACKAGE=$(ls "$CONTEXT"/*.deb) |
| 32 | +PACKAGE=$(basename "$PACKAGE") |
| 33 | + |
| 34 | +# Save the build deb files. |
| 35 | +mkdir -p "$DEST_DIR" |
| 36 | +cp "$CONTEXT"/*.deb "$DEST_DIR" |
| 37 | + |
| 38 | +echo Build complete! 🤖 |
| 39 | + |
| 40 | +# Packagecloud uses some internal IDs for each distro. |
| 41 | +# Extract the one for the distro we're publishing. |
| 42 | +DISTRO_ID=$( |
| 43 | + curl -s \ |
| 44 | + https://"$PACKAGECLOUD_TOKEN":@packagecloud.io/api/v1/distributions.json | \ |
| 45 | + jq '.deb | .[] | select(.index_name=="'"$DISTRO"'") | .versions | .[] | select(.index_name=="'"$DISTROVER"'") | .id' |
| 46 | +) |
20 | 47 |
|
21 |
| -# Push the package to packagecloud. |
22 |
| -# TODO: Use ~/.packagecloud for CI. |
23 |
| -docker run -e PACKAGECLOUD_TOKEN=$PACKAGECLOUD_TOKEN $NAME \ |
24 |
| - bash -xec "package_cloud push pimutils/vdirsyncer/$DISTRO/$DISTROVER *.deb" |
| 48 | +# Actually push the package. |
| 49 | +curl \ |
| 50 | + -F "package[distro_version_id]=$DISTRO_ID" \ |
| 51 | + -F "package[package_file]=@$DEST_DIR/$PACKAGE" \ |
| 52 | + https://"$PACKAGECLOUD_TOKEN":@packagecloud.io/api/v1/repos/pimutils/vdirsyncer/packages.json |
25 | 53 |
|
26 |
| -rm -rf "$CONTEXT" |
| 54 | +echo Done! ✨ |
0 commit comments