Skip to content

build

build #63

Workflow file for this run

name: 'build'
on:
workflow_dispatch:
jobs:
publish-tauri:
permissions:
contents: write
strategy:
fail-fast: false
matrix:
platform: [macos-13, macOS-latest, ubuntu-20.04, windows-latest]
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v4
- name: setup node
uses: actions/setup-node@v4
with:
node-version: 20
- name: install Rust stable
uses: dtolnay/rust-toolchain@stable
- name: install dependencies (ubuntu only)
if: matrix.platform == 'ubuntu-20.04'
run: |
sudo apt-get update
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf
- name: Install dependencies
run: npm install
- name: Build
if: matrix.platform == 'ubuntu-20.04'
run: |
npm run build
cp -r dist Dwarfium
echo "python3 -m http.server" > Dwarfium/start_server.bat
zip -r Dwarfium.zip Dwarfium
- name: Get version number from package.json
id: get_version
run: |
if [ ${{ matrix.platform }} = 'ubuntu-20.04' ] || [ ${{ matrix.platform }} = 'macos-latest' ] || [ ${{ matrix.platform}} == 'macos-13' ]; then
echo "VERSION=$(node -e 'console.log(require(\"./package.json\").version)')" >> $GITHUB_OUTPUT
else
$version = Get-Content -Path './package.json' -Raw | ConvertFrom-Json | Select-Object -ExpandProperty version
echo "VERSION=$version" >> $GITHUB_OUTPUT
fi
- name: Create artifact Dwarfium
if: matrix.platform == 'ubuntu-20.04'
uses: actions/upload-artifact@v4
with:
name: Dwarfium-${{ steps.get_version.outputs.VERSION }}
path: Dwarfium.zip
- name: install frontend dependencies
run: npm install
- uses: tauri-apps/tauri-action@v0
id: tauri_release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAURI_PRIVATE_KEY: ${{ secrets.TAURI_PRIVATE_KEY }}
TAURI_KEY_PASSWORD: ${{ secrets.TAURI_KEY_PASSWORD }}
CI: false
with:
tagName: app-v${{ steps.get_version.outputs.VERSION }}
releaseName: 'v${{ steps.get_version.outputs.VERSION }}-DesktopAPP'
releaseBody: 'See the assets to download this version and install.'
releaseDraft: false
prerelease: false
includeUpdaterJson: true
updaterJsonKeepUniversal: false
- name: Release with ncipollo/release-action
if: matrix.platform == 'ubuntu-20.04'
id: release
uses: ncipollo/release-action@v1
with:
artifacts: Dwarfium.zip
token: ${{ secrets.GITHUB_TOKEN }}
generateReleaseNotes: true
skipIfReleaseExists: true
tag: v${{ steps.get_version.outputs.VERSION }}
update-gist:
runs-on: ubuntu-latest
needs: [publish-tauri]
steps:
- name: Get latest release
id: get_latest_release
uses: actions/github-script@v7
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const { owner, repo } = context.repo;
const response = await github.repos.listReleases({ owner, repo });
const latestTag = response.data
.filter(release => release.tag_name.startsWith('app-v'))
.map(release => release.tag_name)
.sort((a, b) => a.localeCompare(b, undefined, { numeric: true, sensitivity: 'base' }))
.pop();
return latestTag;
- name: Download latest.json
run: |
latest_release_tag=${{ steps.get_latest_release.outputs.result }}
latest_json_url="https://github.com/${GITHUB_REPOSITORY}/releases/download/${latest_release_tag}/latest.json"
curl -L "$latest_json_url" -o latest.json
- name: Update Gist
uses: exuanbo/actions-deploy-gist@v1
with:
token: ${{ secrets.TOKEN }}
gist_id: ${{ secrets.GIST_ID }}
file_path: latest.json
file_type: text
gist_description: "Updater JSON for the latest release"
gist_file_name: "latest.json"