#!/bin/bash source gitea_token set -e GITEA_SERVER=${GITEA_SERVER:="https://git.makerforce.io"} GITEA_TOKEN=${GITEA_TOKEN:=""} path_to_httpie=$(which http) if [ ! -x "$path_to_httpie" ] ; then echo "HTTPie not installed. Please install it at (https://httpie.org/doc#installation)" fi path_to_jq=$(which jq) if [ ! -x "$path_to_jq" ] ; then echo "JQ not installed. Please install it at (https://stedolan.github.io/jq/download/)" fi if [ -z $GITEA_TOKEN ]; then echo "Enter Gitea token ($GITEA_SERVER/account/token)" echo -n "> " read GITEA_TOKEN echo fi GIT_COMMIT="$(git rev-parse HEAD)" GIT_LAST_TAG="$(git tag -l | tail -n 1)" # Increment version ver=( ${GIT_LAST_TAG//./ } ) ((ver[2]++)) GIT_TAG="${ver[0]}.${ver[1]}.${ver[2]}" echo "Tagging $GIT_TAG..." git tag "$GIT_TAG" "$GIT_COMMIT" git push git push --tags echo "Building coredns..." matrix=( "GOOS=linux GOARCH=amd64" "GOOS=linux GOARCH=arm64" "GOOS=linux GOARCH=arm" "GOOS=darwin GOARCH=amd64" "GOOS=windows GOARCH=amd64 EXT=.exe" ) export CGO_ENABLED=0 for m in "${matrix[@]}"; do export GOOS= GOARCH= EXT= export $m go build -o coredns_${GOOS}_${GOARCH}${EXT} done echo "Uploading release..." RELEASE="$GIT_TAG" BODY="$(cat go.mod | grep coredns/coredns | tr -d '\t')" RESPONSE="$(http --check-status -b POST \ "$GITEA_SERVER/api/v1/repos/ambrose/alias/releases" \ Authorization:"Bearer $GITEA_TOKEN" \ body="$BODY" \ draft:=false \ name="$RELEASE" \ prerelease:=false \ tag_name="$GIT_TAG" \ target_commitish="$GIT_COMMIT")" echo "Uploading attachments..." RELEASE_ID="$(echo "$RESPONSE" | jq .id)" for m in "${matrix[@]}"; do export GOOS= GOARCH= EXT= export $m filename=coredns_${GOOS}_${GOARCH}${EXT} http --check-status --form -b POST \ "$GITEA_SERVER/api/v1/repos/ambrose/alias/releases/$RELEASE_ID/assets" \ Authorization:"Bearer $GITEA_TOKEN" \ name="$filename" \ attachment@"$filename" done