Automatically publish the latest MultiPaper containers to Docker Hub.
1#!/bin/bash
2
3github_server_tags=$(git ls-remote --tags)
4
5versions=($(curl -sS -X "GET" https://api.multipaper.io/v2/projects/multipaper | jq -r ".versions[]"))
6for version in "${versions[@]}"; do
7 echo "Version: $version"
8
9 builds=($(curl -sS -X "GET" https://api.multipaper.io/v2/projects/multipaper/versions/$version | jq -r ".builds[]"))
10 for build in "${builds[@]}"; do
11 echo "Version: $build"
12
13 is_exist=$(echo "$github_server_tags" | grep "$version-$build")
14
15 if [ -n "$is_exist" ]; then
16 continue;
17 fi
18
19 echo "The next version: $version-$build"
20
21 downloads=$(curl -sS -X "GET" https://api.multipaper.io/v2/projects/multipaper/versions/$version/builds/$build)
22
23 master_jar=$(echo "$downloads" | jq -r ".downloads[].name" | grep -i "master")
24 server_jar=$(echo "$downloads" | jq -r ".downloads[].name" | grep -i -v "master")
25
26 if [[ $master_jar =~ ([[:digit:]]+.[[:digit:]]+.[[:digit:]]+) ]]; then
27 master_version=${BASH_REMATCH[1]}
28 fi
29 server_version=$version-$build
30
31 echo "Master Jar: $master_jar"
32 echo "Server Jar: $server_jar"
33 echo "master_version: $master_version"
34 echo "server_version: $server_version"
35
36 if [[ -z "$master_version" ]]; then
37 echo "Next: No master version found"
38 continue
39 fi
40
41 mkdir -p server
42 mkdir -p master
43 sed -e "s/{version}/$version/g" -e "s/{build}/$build/g" -e "s/{jar_file}/$server_jar/g" templates/Dockerfile.server > server/Dockerfile
44 sed -e "s/{version}/$version/g" -e "s/{build}/$build/g" -e "s/{jar_file}/$master_jar/g" templates/Dockerfile.master > master/Dockerfile
45 echo "$server_version" > server/tags
46 echo "$master_version" > master/tags
47
48 if [[ -n "$GITHUB_ENV" ]]; then
49 echo "VERSION=$version" >> $GITHUB_ENV
50 echo "BUILD=$build" >> $GITHUB_ENV
51 echo "MASTER_VERSION=$master_version" >> $GITHUB_ENV
52 echo "SERVER_VERSION=$server_version" >> $GITHUB_ENV
53 fi
54
55 exit
56 done
57done
58