name: Nightly on: push: branches: [ main ] paths: - 'src/**' - 'scripts/**' - '.github/workflows/**' jobs: build: name: Build runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Setup Node.js v16.x uses: actions/setup-node@v2 with: node-version: 16.x - name: Pack base asar run: | npm i -g asar sed -i -e "s/oaVersion = '\(.*\)'/oaVersion = '\1-$(git rev-parse HEAD | cut -c 1-7)'/" src/index.js node scripts/strip.js npx asar pack src app.asar - name: Upload artifact uses: actions/upload-artifact@v2 with: name: built-asar path: app.asar retention-days: 1 test-linux: name: Test Linux needs: build runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Retrieve artifact uses: actions/download-artifact@v2 with: name: built-asar path: artifact - name: Extract artifact run: | cp artifact/app.asar . - name: Download Client with OpenAsar run: | wget "https://discord.com/api/download/canary?platform=linux&format=tar.gz" -O discord.tar.gz tar xf discord.tar.gz cp app.asar DiscordCanary/resources/app.asar - name: Check if Discord will startup run: | coproc { xvfb-run -e /dev/stdout ./DiscordCanary/DiscordCanary --enable-logging; } grep -m1 "Finished discord_rpc" <&${COPROC[0]} sleep 1 [[ $COPROC_PID ]] && kill $COPROC_PID timeout-minutes: 3 test-win: name: Test Windows needs: build runs-on: windows-latest steps: - uses: actions/checkout@v2 - name: Setup Node.js v16.x uses: actions/setup-node@v2 with: node-version: 16.x - name: Retrieve artifact uses: actions/download-artifact@v2 with: name: built-asar path: artifact - name: Extract artifact run: | cp artifact/app.asar . - name: Setup Client shell: bash run: | node scripts/downloadWin.js tar xf client.tar # Install OpenAsar build and setup environment sed -r -i "s/const config=require\('.\/config'\);/console.log\('ABRA'\);app.quit\(\); /" app.asar sed -r -i "s/if\(next!=cur&&!options\?\.allowObsoleteHost\)/if\(false\) /" app.asar cp -f app.asar files/resources/app.asar mkdir discord cp -rf files/ discord/app-1.0.0 cd discord/app-1.0.0 mkdir modules # - name: Upload artifact # uses: actions/upload-artifact@v2 # with: # name: testing # path: app.asar # retention-days: 1 - name: Check if Discord will startup run: | cd discord/app-1.0.0 ./DiscordCanary.exe | grep -m1 "ABRA" timeout-minutes: 3 shell: bash release: name: Release needs: - test-linux - test-win runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Retrieve artifact uses: actions/download-artifact@v2 with: name: built-asar path: artifact - name: Extract artifact run: | cp artifact/app.asar . - name: GitHub Release run: | echo ${{ env.VERSION }} git tag -d ${{ env.VERSION }} || true git push origin --delete ${{ env.VERSION }} || true git tag ${{ env.VERSION }} git push origin ${{ env.VERSION }} gh release delete ${{ env.VERSION }} -y || true gh release create ${{ env.VERSION }} -t "$(echo "${{ env.VERSION }}" | sed 's/.*/\u&/' | sed "s/nt/n't/")" -n "$(git rev-parse HEAD | cut -c 1-7) | $(git log -1 --pretty=%B)" "$([ "${{ env.VERSION }}" != "nightly" ] && echo "-p")" ${{ env.FILES }} env: GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}' VERSION: $(strings app.asar | grep -oP "oaVersion='.*?-" | grep -oP "(?<=').*?(?=-)") FILES: app.asar # debug-linux: # name: Debug Linux # needs: build # runs-on: ubuntu-latest # steps: # - uses: actions/checkout@v2 # - name: Retrieve artifact # uses: actions/download-artifact@v2 # with: # name: built-asar # path: artifact # - name: Extract artifact # run: | # cp artifact/app.asar . # - name: Download Client with OpenAsar # run: | # wget "https://discord.com/api/download/canary?platform=linux&format=tar.gz" -O discord.tar.gz # tar xf discord.tar.gz # cp app.asar DiscordCanary/resources/app.asar # - name: Run Client # run: | # xvfb-run -e /dev/stdout ./DiscordCanary/DiscordCanary --enable-logging 2>&1 # timeout-minutes: 5 # debug-win: # name: Debug Windows # needs: build # runs-on: windows-latest # steps: # - uses: actions/checkout@v2 # - name: Setup Node.js v16.x # uses: actions/setup-node@v2 # with: # node-version: 16.x # - name: Retrieve artifact # uses: actions/download-artifact@v2 # with: # name: built-asar # path: artifact # - name: Extract artifact # run: | # cp artifact/app.asar . # - name: Setup Client # shell: bash # run: | # node scripts/downloadWin.js # tar xf client.tar # # Install OpenAsar build and setup environment # cp -f app.asar files/resources/app.asar # mkdir discord # cp -rf files/ discord/app-1.0.0 # cd discord/app-1.0.0 # mkdir modules # - name: Run Client # run: | # cd discord/app-1.0.0 # ./DiscordCanary.exe --enable-logging # timeout-minutes: 5 # shell: bash