name: Build GodMode9i on: push: branches: ["*"] paths-ignore: - 'README.md' pull_request: branches: ["*"] paths-ignore: - 'README.md' release: types: [created] jobs: build: runs-on: ubuntu-latest container: devkitpro/devkitarm name: "Build with Docker using devkitARM" outputs: commit_tag: ${{ steps.build.outputs.commit_tag }} commit_message: ${{ steps.build.outputs.commit_message }} steps: - name: "Checkout repo" uses: actions/checkout@v1 - name: "Install tools" run: | sudo apt-get update sudo apt-get install p7zip-full python -y - name: "Build & Package GodMode9i" id: build run: | make chmod +x make_cia ./make_cia --srl="GodMode9i.nds" --id_0=$(git rev-parse --short=7 HEAD) --tikID=$(git rev-parse --short=16 HEAD) mkdir GodMode9i/ cp GodMode9i.nds GodMode9i/ cp GodMode9i.cia GodMode9i/ 7z a GodMode9i.7z GodMode9i/ mkdir -p ~/artifacts cp GodMode9i.7z ~/artifacts echo "::set-output name=commit_tag::$(git log --format=%h -1)" echo "::set-output name=commit_message::$(git log --pretty=format:'%an - %s' -1)" - name: "Publish build to GH Actions" uses: actions/upload-artifact@v2 with: path: ~/artifacts/* name: "build" # Only run this for non-PR jobs. publish_build_twlbot: runs-on: ubuntu-latest name: "Publish build to TWLBot/Builds" if: ${{ success() && !startsWith(github.ref, 'refs/pull') }} needs: build env: COMMIT_TAG: ${{ needs.build.outputs.commit_tag }} COMMIT_MESSAGE: ${{ needs.build.outputs.commit_message }} outputs: current_date: ${{ steps.commit.outputs.current_date }} steps: - name: "Checkout repo" uses: actions/checkout@v1 - name: Download artifacts uses: actions/download-artifact@v2 with: name: "build" path: "build" - name: Upload to ${{ github.repository }} release if: ${{ startsWith(github.ref, 'refs/tags') }} run: | ID=$(jq --raw-output '.release.id' $GITHUB_EVENT_PATH) for file in ${{ github.workspace }}/build/*; do AUTH_HEADER="Authorization: token ${{ secrets.GITHUB_TOKEN }}" CONTENT_LENGTH="Content-Length: $(stat -c%s $file)" CONTENT_TYPE="Content-Type: application/7z-x-compressed" UPLOAD_URL="https://uploads.github.com/repos/${{ github.repository }}/releases/$ID/assets?name=$(basename $file)" curl -XPOST -H "$AUTH_HEADER" -H "$CONTENT_LENGTH" -H "$CONTENT_TYPE" --upload-file "$file" "$UPLOAD_URL" done - name: "Commit and push to TWLBot/Builds" id: "commit" run: | CURRENT_DATE=$(date +"%Y%m%d-%H%M%S") echo "::set-output name=current_date::$CURRENT_DATE" git config --global user.email "flamekat54@aol.com" git config --global user.name "TWLBot" git clone --depth 1 https://${{ secrets.TWLBOT_TOKEN }}@github.com/TWLBot/Builds.git cd Builds/extras cp ${{ github.workspace }}/build/* . git stage . git commit -m "GodMode9i | $COMMIT_TAG" git tag v$CURRENT_DATE git push origin v$CURRENT_DATE master - name: Release to TWLBot/Builds run: | AUTH_HEADER="Authorization: token ${{ secrets.TWLBOT_TOKEN }}" CONTENT_TYPE="Content-Type: application/json" API_URL="https://api.github.com/repos/TWLBot/Builds/releases" RELEASE_INFO="{\"tag_name\": \"v${{ steps.commit.outputs.current_date }}\", \"name\": \"GodMode9i | $COMMIT_TAG\", \"body\": \"$COMMIT_MESSAGE\", \"prerelease\": true}" RESPONSE=$(curl -XPOST -H "$AUTH_HEADER" -H "$CONTENT_TYPE" "$API_URL" -d "$RELEASE_INFO") ID=$(echo $RESPONSE | jq --raw-output '.id') for file in ${{ github.workspace }}/build/*; do AUTH_HEADER="Authorization: token ${{ secrets.TWLBOT_TOKEN }}" CONTENT_LENGTH="Content-Length: $(stat -c%s $file)" CONTENT_TYPE="Content-Type: application/7z-x-compressed" UPLOAD_URL="https://uploads.github.com/repos/TWLBot/Builds/releases/$ID/assets?name=$(basename $file)" curl -XPOST -H "$AUTH_HEADER" -H "$CONTENT_LENGTH" -H "$CONTENT_TYPE" --upload-file "$file" "$UPLOAD_URL" done send_webhook_success: runs-on: ubuntu-latest needs: [publish_build_twlbot, build] name: "Send Discord success webhook" if: ${{ success() && !startsWith(github.ref, 'refs/pull') }} env: CURRENT_DATE: ${{ needs.publish_build_twlbot.outputs.current_date }} steps: - name: "Checkout repo" uses: actions/checkout@v1 - name: "Send success webhook" run: | curl -o send.sh https://raw.githubusercontent.com/DS-Homebrew/discord-webhooks/master/send-ghactions.sh chmod +x send.sh ./send.sh success ${{ secrets.WEBHOOK_URL }} send_webhook_failure: runs-on: ubuntu-latest needs: [publish_build_twlbot, build] name: "Send Discord failure webhook" if: ${{ failure() && !startsWith(github.ref, 'refs/pull') }} env: CURRENT_DATE: ${{ needs.publish_build_twlbot.outputs.current_date }} steps: - name: "Checkout repo" uses: actions/checkout@v1 - name: "Send failure webhook" run: | curl -o send.sh https://raw.githubusercontent.com/DS-Homebrew/discord-webhooks/master/send-ghactions.sh chmod +x send.sh ./send.sh failure ${{ secrets.WEBHOOK_URL }}