diff --git a/.github/workflows/Build.yml b/.github/workflows/Build.yml new file mode 100644 index 0000000..1cdfe72 --- /dev/null +++ b/.github/workflows/Build.yml @@ -0,0 +1,46 @@ +name: Build + +on: + push: + +jobs: + + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: 1.17 + + - name: Build + run: | + #see https://en.wikipedia.org/wiki/Raspberry_Pi#Specifications for RPi arm versions + #see https://github.com/golang/go/wiki/GoArm + platforms=("windows/amd64" "windows/386" "darwin/amd64" "linux/386" "linux/amd64" "linux/arm/6" "linux/arm/7" "linux/arm64/8" "freebsd/386" "freebsd/amd64") + mkdir -p releases + for platform in "${platforms[@]}" + do + platform_split=(${platform//\// }) + GOOS=${platform_split[0]} + GOARCH=${platform_split[1]} + GOARM=${platform_split[2]} + output_name='digitalocean-dynamic-dns-ip-'$GOOS'-'$GOARCH + if [[ ! -z "$GOARM" ]]; then + output_name+="v${GOARM}" + # arm v8 is only supported for ARCH=arm64 and requires an empty GOARM version + if [[ "8" -eq "$GOARM" ]]; then + GOARM="" + fi + fi + if [ $GOOS = "windows" ]; then + output_name+='.exe' + fi + env GOOS="$GOOS" GOARCH="$GOARCH" GOARM="$GOARM" go build -o "releases/$output_name" + if [ $? -ne 0 ]; then + echo 'An error has occurred! Aborting the script execution...' + exit 1 + fi + done diff --git a/.github/workflows/go.yml b/.github/workflows/PublishRelease.yml similarity index 95% rename from .github/workflows/go.yml rename to .github/workflows/PublishRelease.yml index 0877c3b..fa91027 100644 --- a/.github/workflows/go.yml +++ b/.github/workflows/PublishRelease.yml @@ -1,4 +1,4 @@ -name: Go +name: Publish Release on: push: @@ -46,8 +46,9 @@ jobs: fi done - uses: ncipollo/release-action@v1 - name: "Create Release" + name: "Publish Release " with: + allowUpdates: true artifacts: "releases/*" token: ${{ secrets.GITHUB_TOKEN }}