name: Build & Release on: push: tags: - "v*" jobs: build-linux-win: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: submodules: true - uses: actions/setup-node@v4 with: node-version: "20" - name: Install dependencies run: npm ci - name: Build backend + frontend + electron run: npm run build:all - name: Build Linux AppImage run: npx electron-builder --linux --publish never - name: Build Windows Installer (via Wine container) run: | docker run --rm \ -v "$(pwd)":/project \ -w /project \ -e CSC_IDENTITY_AUTO_DISCOVERY=false \ electronuserland/builder:20-wine \ bash -c "npx electron-builder --win --publish never" - name: Create Gitea Release and upload assets run: | TAG="${GITHUB_REF#refs/tags/}" RELEASE=$(curl -s -X POST \ -H "Authorization: token ${GITEA_TOKEN}" \ -H "Content-Type: application/json" \ "${GITHUB_SERVER_URL}/api/v1/repos/${GITHUB_REPOSITORY}/releases" \ -d "{\"tag_name\": \"${TAG}\", \"name\": \"Layonara Forge ${TAG}\", \"draft\": false, \"prerelease\": false}") RELEASE_ID=$(echo "$RELEASE" | python3 -c "import json,sys; print(json.load(sys.stdin)['id'])") for file in release/*.exe release/*.AppImage release/latest*.yml; do [ -f "$file" ] || continue BASENAME=$(basename "$file") echo "Uploading $BASENAME..." curl -s -X POST \ -H "Authorization: token ${GITEA_TOKEN}" \ -F "attachment=@${file};filename=${BASENAME}" \ "${GITHUB_SERVER_URL}/api/v1/repos/${GITHUB_REPOSITORY}/releases/${RELEASE_ID}/assets" done env: GITEA_TOKEN: ${{ secrets.RELEASE_TOKEN }}