diff --git a/.github/workflows/micro-examples.yml b/.github/workflows/micro-examples.yml new file mode 100644 index 00000000..95186c8f --- /dev/null +++ b/.github/workflows/micro-examples.yml @@ -0,0 +1,34 @@ +name: Build all github.com/micro/examples +on: + push: + branches: + - 'release-**' + +jobs: + + build: + name: Build repos + runs-on: ubuntu-latest + steps: + + - name: Set up Go 1.13 + uses: actions/setup-go@v1 + with: + go-version: 1.13 + id: go + + - name: Check out this code + uses: actions/checkout@v2 + with: + path: 'go-micro' + + - name: Check out code examples + uses: actions/checkout@v2 + with: + repository: 'micro/examples' + path: 'examples' + + - name: Build all + run: $GITHUB_WORKSPACE/go-micro/.github/workflows/scripts/build-all-examples.sh $GITHUB_SHA + working-directory: examples + \ No newline at end of file diff --git a/.github/workflows/scripts/build-all-examples.sh b/.github/workflows/scripts/build-all-examples.sh new file mode 100755 index 00000000..67896217 --- /dev/null +++ b/.github/workflows/scripts/build-all-examples.sh @@ -0,0 +1,43 @@ +#!/bin/bash +# set -x + +function build_binary { + echo building $1 + pushd $1 + go build + local ret=$? + if [ $ret -gt 0 ]; then + failed=1 + failed_arr+=($1) + fi + popd +} + +function is_main { + grep "package main" -l -dskip $1/*.go > /dev/null 2>&1 +} + + +function check_dir { + is_main $1 + local ret=$? + if [ $ret == 0 ]; then + build_binary $1 $2 + fi + for filename in $1/*; do + if [ -d $filename ]; then + check_dir $filename $2 + fi + done +} +failed_arr=() +failed=0 +this_hash=$1 +go mod init github.com/micro/examples +go mod edit -require=github.com/micro/go-micro/v2@$1 +check_dir . $1 +if [ $failed -gt 0 ]; then + echo Some builds failed + printf '%s\n' "${failed_arr[@]}" +fi +exit $failed \ No newline at end of file