diff --git a/.github/workflows/stable.yml b/.github/workflows/stable.yml new file mode 100644 index 0000000..abd99ff --- /dev/null +++ b/.github/workflows/stable.yml @@ -0,0 +1,196 @@ +name: Release build +on: + push: + branches: + - stable + +env: + FORCE_COLOR: true + +jobs: + build-linux: + runs-on: ubuntu-latest + + steps: + - uses: actions/setup-node@v3 + with: + node-version: '18' + + - name: Checkout code + uses: actions/checkout@v2 + + - name: Install Node dependencies + run: npm install + + - name: Install Electron-Builder + run: npm install -g electron-builder + + - name: Build + run: npm run build && electron-builder --linux && electron-builder --arm64 --linux && electron-builder --armv7l --linux + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: List all files in the dist directory + run: ls -l dist + - name: Delete unpacked builds + run: rm -rf dist/linux-unpacked && rm -rf dist/linux-arm64-unpacked && rm -rf dist/linux-armv7l-unpacked + - name: Upload artifact + uses: actions/upload-artifact@v2 + with: + name: ArmCordLinux + path: dist/ + + + build-mac: + runs-on: macos-latest + + steps: + - uses: actions/setup-node@v3 + with: + node-version: '18' + + - name: Checkout code + uses: actions/checkout@v2 + + - name: Install Node dependencies + run: npm install + + - name: Install Electron-Builder + run: npm install -g electron-builder + + - name: Build + run: npm run build && electron-builder --macos + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: List all files in the dist directory + run: ls -l dist + - name: Delete unpacked builds + run: rm -rf dist/macos-unpacked + + - name: Upload artifact + uses: actions/upload-artifact@v2 + with: + name: ArmCordMac + path: dist/ + + build-windows: + runs-on: windows-latest + + steps: + - uses: actions/setup-node@v3 + with: + node-version: '18' + + - name: Checkout code + uses: actions/checkout@v2 + + - name: Install Node dependencies + run: npm install + + - name: Install Electron-Builder + run: npm install -g electron-builder + + - name: Build + run: npm run build && electron-builder --windows + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Delete unpacked builds + run: Remove-Item -LiteralPath ".\dist\win-unpacked" -Force -Recurse + - name: Upload artifact + uses: actions/upload-artifact@v2 + with: + name: ArmCordWindows + path: dist/ + + + release: + runs-on: ubuntu-latest + needs: [build-linux, build-mac, build-windows] + + steps: + - uses: actions/download-artifact@v2 + with: + name: ArmCordMac + path: macos + + - uses: actions/download-artifact@v2 + with: + name: ArmCordWindows + path: windows + + - uses: actions/download-artifact@v2 + with: + name: ArmCordLinux + path: linux + - name: ls + run: ls + - name: Delete unwanted directories + run: rm -rf {linux,macos,windows}/*/ + rm -rf {linux,macos,windows}/.icon* + rm -rf {linux,macos,windows}/builder-debug.yml + - name: ls dirs + run: ls linux && ls macos && ls windows + - name: Get some values needed for the release + id: vars + shell: bash + run: | + echo "::set-output name=releaseTag::$(git describe --tags --abbrev=0)" + + - uses: dev-drprasad/delete-tag-and-release@v0.2.0 + with: + delete_release: true + tag_name: v3.0.6 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Create Release + uses: actions/github-script@v2 + with: + github-token: ${{secrets.GITHUB_TOKEN}} + script: | + console.log('environment', process.versions); + + const fs = require('fs').promises; + + const { repo: { owner, repo }, sha } = context; + console.log({ owner, repo, sha }); + + const release = await github.repos.createRelease({ + owner, repo, + tag_name: process.env.releaseTag, + draft: true, + target_commitish: sha + }); + + console.log('created release', { release }); + + for (let file of await fs.readdir('linux')) { + // do whatever filtering you want here, I'm just uploading all the files + console.log('uploading', file); + await github.repos.uploadReleaseAsset({ + owner, repo, + release_id: release.data.id, + name: file, + data: await fs.readFile(`./linux/${file}`) + }); + } + for (let file of await fs.readdir('windows')) { + // do whatever filtering you want here, I'm just uploading all the files + console.log('uploading', file); + await github.repos.uploadReleaseAsset({ + owner, repo, + release_id: release.data.id, + name: file, + data: await fs.readFile(`./windows/${file}`) + }); + } + for (let file of await fs.readdir('macos')) { + // do whatever filtering you want here, I'm just uploading all the files + console.log('uploading', file); + await github.repos.uploadReleaseAsset({ + owner, repo, + release_id: release.data.id, + name: file, + data: await fs.readFile(`./macos/${file}`) + }); + } + env: + releaseTag: ${{ steps.vars.outputs.releaseTag }} \ No newline at end of file