name: Nightly on: push: branches: [ main ] paths: - 'src/**' - 'scripts/**' - 'poly/**' - '.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 bash scripts/injectPolyfills.sh sed -i -e "s/nightly/nightly-$(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 "Installing discord_rpc" <&${COPROC[0]} sleep 1 [[ $COPROC_PID ]] && kill $COPROC_PID timeout-minutes: 2 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: | ./DiscordCanary/DiscordCanary --enable-logging 2>&1 timeout-minutes: 2 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: 2 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: | git tag -d nightly || true git push origin --delete nightly || true git tag nightly git push origin nightly gh release delete ${{ env.VERSION }} -y || true gh release create ${{ env.VERSION }} -t "Nightly" -n "$(git rev-parse HEAD | cut -c 1-7) | $(git log -1 --pretty=%B)" ${{ env.FILES }} env: GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}' VERSION: 'nightly' FILES: app.asar