diff options
Diffstat (limited to '.github/workflows')
-rw-r--r-- | .github/workflows/build.yml | 55 | ||||
-rwxr-xr-x | .github/workflows/send_webhook_update.sh | 88 |
2 files changed, 125 insertions, 18 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2df530bf..3b6d0cbd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,13 +2,15 @@ name: Build on: push: - branches: [ master ] + branches: + - '*' paths-ignore: - 'README.md' - 'LICENSE' - '.gitignore' pull_request: - branches: [ master ] + branches: + - '*' paths-ignore: - 'README.md' - 'LICENSE' @@ -16,27 +18,44 @@ on: workflow_dispatch: jobs: build: - + env: + GIT_URL: ${{ github.server_url }}/${{ github.repository }}/tree/${{ github.sha }} + REF_NAME: ${{ github.ref_name }} + WEBHOOK_URL: ${{ secrets.WEBHOOK_URL }} + ACTOR: ${{ github.actor }} runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - name: Set up JDK 1.8 - uses: actions/setup-java@v1 - with: - java-version: 1.8 - - uses: actions/cache@v2 + - name: Send discord notification + id: sendmsg + if: ${{ env.WEBHOOK_URL }} + run: | + ./.github/workflows/send_webhook_update.sh + env: + STATUS: WORKING + - name: Set up JDK 8 + uses: actions/setup-java@v2 with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} - restore-keys: | - ${{ runner.os }}-gradle- - - name: Grant execute permission for gradlew - run: chmod +x gradlew + java-version: 8 + distribution: zulu + cache: gradle - name: Build with Gradle - run: ./gradlew build --no-daemon + run: chmod +x ./gradlew && ./gradlew setupCIWorkspace build --no-daemon - uses: actions/upload-artifact@v2 with: - path: build/libs/*.jar + path: build/libs/*-dep.jar + - name: Update discord notification + if: ${{ env.WEBHOOK_URL && success() }} + run: | + ./.github/workflows/send_webhook_update.sh + env: + STATUS: SUCCESS + MESSAGE_ID: ${{ steps.sendmsg.outputs.MESSAGE_ID }} + - name: Update discord notification + if: ${{ env.WEBHOOK_URL && failure() }} + run: | + ./.github/workflows/send_webhook_update.sh + env: + STATUS: FAILURE + MESSAGE_ID: ${{ steps.sendmsg.outputs.MESSAGE_ID }} diff --git a/.github/workflows/send_webhook_update.sh b/.github/workflows/send_webhook_update.sh new file mode 100755 index 00000000..56852159 --- /dev/null +++ b/.github/workflows/send_webhook_update.sh @@ -0,0 +1,88 @@ +#!/bin/bash +set -x + +COLOR_SUCCESS=8040199 +COLOR_WORKING=7472302 +COLOR_ERROR=14960972 +case "$STATUS" in + WORKING) + color="$COLOR_WORKING" + status_message="Build started." + ;; + FAILURE) + color="$COLOR_ERROR" + status_message="Build failed." + ;; + SUCCESS) + color="$COLOR_SUCCESS" + status_message="Build succeeded." + to_upload=$(echo build/libs/*-dep.jar) + upload_name=NotEnoughUpdates-beta-dep.jar + ;; +esac + +author_name="$ACTOR" +commit_hash=$(git log -1 --pretty=format:'%h') +commit_subject=$(git log -1 --pretty=format:'%s') +commit_body=$(git log -1 --pretty=format:'%b') +commit_date=$(git log -1 --pretty=format:'%ct') + +author_avatar="https://github.com/$author_name.png" + +#language=json +read -r -d '' structure <<-"EOF" +{ + "content": $status, + "username": $username, + "avatar_url": $avatar_url, + "embeds": [ + { + "color": $color, + "url": $url, + "title": $subject, + "description": $body, + "footer": { + "text": $ref + } + } + ], + "allowed_mentions": { + "parse": [] + } +} +EOF +json=$(jq -n \ + --arg body "$commit_body" \ + --arg status "$status_message" \ + --arg subject "$commit_subject" \ + --arg username "$author_name" \ + --arg avatar_url "$author_avatar" \ + --argjson color "$color" \ + --arg url "$GIT_URL" \ + --arg ref "$REF_NAME" \ + "$structure") + +function make_request() { + if [ "$to_upload" != "" ]; then + upload_arg="-F" + fi + curl -X $1 -H "Content-Type: multipart/form-data" -F "payload_json=$json" "$upload_arg" "$upload_name=@$to_upload" "$WEBHOOK_URL$2?wait=true" +} + +echo "Should replace message with id: $MESSAGE_ID" +if [ "$MESSAGE_ID" != "" ]; then + discord_output=$(make_request PATCH "/messages/$MESSAGE_ID") + RESULT=$? +else + discord_output=$(make_request POST) + RESULT=$? +fi + +if [ $RESULT != 0 ]; then + echo "$discord_output" + exit 1 +fi +echo "Message sent to discord." +echo "$discord_output" | jq . +id_string=$(echo "$discord_output" | jq .id) +echo "::set-output name=MESSAGE_ID::${id_string//\"/}" |