Skip to content

Commit 2fac9f6

Browse files
committed
1 parent a70551c commit 2fac9f6

File tree

2 files changed

+148
-12
lines changed

2 files changed

+148
-12
lines changed

.github/workflows/publish.yml

Lines changed: 147 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,178 @@
11
name: 'publish'
22
on:
3+
workflow_dispatch:
34
push:
45
branches:
56
- release
67

8+
concurrency:
9+
group: ${{ github.ref }}
10+
cancel-in-progress: true
11+
env:
12+
ARCH: x86_64
13+
DEPENDENCIES_ARCH: "'libappindicator-gtk3' 'webkit2gtk' 'gtk3' 'xdotool'"
14+
DEPENDENCIES_RPM: 'javascriptcoregtk4.0, webkit2gtk4.0, libxdo, libappindicator-gtk3, xdotool'
715
jobs:
8-
publish-tauri:
16+
setup:
17+
runs-on: ubuntu-latest
18+
outputs:
19+
name: ${{ steps.get-package.outputs.name }}
20+
name_bin: ${{ steps.get-package.outputs.name }}-bin
21+
short_description: ${{ steps.get-package.outputs.short_description }}
22+
version: ${{ steps.get-package.outputs.version }}
23+
description: ${{ steps.get-package.outputs.description }}
24+
license: ${{ steps.get-package.outputs.license }}
25+
deb_pkg_name: ${{ steps.get-package.outputs.name }}_${{ steps.get-package.outputs.version }}_amd64.deb
26+
deb_pkg_path: ./src-tauri/target/release/bundle/deb/
27+
deb_pkg_renamed: ${{ steps.get-package.outputs.name }}-${{ steps.get-package.outputs.version }}-${{ env.ARCH }}.deb
28+
arch_pkg_name: ${{ steps.get-package.outputs.name }}-bin-${{ steps.get-package.outputs.version }}-1-${{ env.ARCH }}.pkg.tar.zst
29+
rpm_pkg_name: RPMS/${{ steps.get-package.outputs.name }}-${{ steps.get-package.outputs.version }}-1.${{ env.ARCH }}.rpm
30+
tag_name: ${{ steps.get-package.outputs.name }}-v${{ steps.get-package.outputs.version }}
31+
steps:
32+
- uses: actions/checkout@v4
33+
- name: setup node
34+
uses: actions/setup-node@v4
35+
with:
36+
node-version: 20
37+
- name: get package info
38+
id: get-package
39+
run: |
40+
echo "name=$(node -p "require('./src-tauri/tauri.conf.json').package.productName")" >> $GITHUB_OUTPUT
41+
echo "version=$(node -p "require('./src-tauri/tauri.conf.json').package.version")" >> $GITHUB_OUTPUT
42+
echo "description=$(node -p "require('./src-tauri/tauri.conf.json').tauri.bundle.longDescription")" >> $GITHUB_OUTPUT
43+
echo "short_description=$(node -p "require('./src-tauri/tauri.conf.json').tauri.bundle.shortDescription")" >> $GITHUB_OUTPUT
44+
echo "license=$(node -p "require('./package.json').license")" >> $GITHUB_OUTPUT
45+
46+
build-tauri:
47+
needs: [setup]
948
permissions:
1049
contents: write
1150
strategy:
1251
fail-fast: false
1352
matrix:
14-
platform: [macos-latest, ubuntu-20.04, windows-latest]
15-
53+
platform: [macos-latest, ubuntu-latest, windows-latest]
1654
runs-on: ${{ matrix.platform }}
1755
steps:
18-
- uses: actions/checkout@v3
56+
- uses: actions/checkout@v4
57+
1958
- name: setup node
20-
uses: actions/setup-node@v3
59+
uses: actions/setup-node@v4
2160
with:
22-
node-version: 16
61+
node-version: 20
62+
2363
- name: install Rust stable
2464
uses: dtolnay/rust-toolchain@stable
65+
2566
- name: install dependencies (ubuntu only)
26-
if: matrix.platform == 'ubuntu-20.04'
67+
if: matrix.platform == 'ubuntu-latest'
2768
run: |
2869
sudo apt-get update
29-
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev patchelf
70+
wget http://nz2.archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2.20_amd64.deb
71+
sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2.20_amd64.deb
72+
sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.0-dev libappindicator3-dev librsvg2-dev libxcb-shape0-dev libxcb-xfixes0-dev libxdo-dev
73+
3074
- name: install frontend dependencies
31-
uses: pnpm/action-setup@v2.0.1
75+
uses: pnpm/action-setup@v2
3276
with:
3377
version: latest
3478
run_install: true
79+
3580
- uses: tauri-apps/tauri-action@v0
3681
env:
3782
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
3883
with:
39-
tagName: obk-layout-editor-v__VERSION__
40-
releaseName: 'OBK Layout Editor v__VERSION__'
84+
tagName: ${{ needs.setup.outputs.tag_name }}
85+
releaseName: '${{ needs.setup.outputs.short_description }} v${{ needs.setup.outputs.version }}'
4186
releaseBody: 'See the assets to download this version and install.'
42-
releaseDraft: true
87+
releaseDraft: false
4388
prerelease: false
89+
90+
- name: copy deb package && create PKGBUILD file (ubuntu only)
91+
if: matrix.platform == 'ubuntu-latest'
92+
run: |
93+
mkdir -p ${{ needs.setup.outputs.name_bin }}
94+
cp -fr ${{ needs.setup.outputs.deb_pkg_path }}${{ needs.setup.outputs.deb_pkg_name }} ${{ needs.setup.outputs.name_bin }}/${{ needs.setup.outputs.deb_pkg_renamed }}
95+
cat <<EOF > ./${{ needs.setup.outputs.name_bin }}/PKGBUILD
96+
pkgname=${{ needs.setup.outputs.name_bin }}
97+
pkgver=${{ needs.setup.outputs.version }}
98+
md5sums=('$(md5sum ${{ needs.setup.outputs.name_bin }}/${{ needs.setup.outputs.deb_pkg_renamed }} | awk '{print $1}')')
99+
pkgrel=1
100+
depends=(${{ env.DEPENDENCIES_ARCH }})
101+
pkgdesc='${{ needs.setup.outputs.description }}'
102+
arch=('${{ env.ARCH }}')
103+
url="https://github.com/${{ github.repository }}"
104+
license=('${{ needs.setup.outputs.license }}')
105+
source=("\$url/releases/download/${{ needs.setup.outputs.tag_name }}/${{ needs.setup.outputs.deb_pkg_renamed }}")
106+
107+
build() {
108+
rm control.tar.gz
109+
tar xvf data.tar.gz
110+
}
111+
112+
package() {
113+
cp -fr usr/ \${pkgdir}
114+
}
115+
EOF
116+
cat ${{ needs.setup.outputs.name_bin }}/PKGBUILD
117+
118+
- name: create arch package (ubuntu only)
119+
if: matrix.platform == 'ubuntu-latest'
120+
uses: 2m/arch-pkgbuild-builder@v1.17
121+
with:
122+
debug: true
123+
target: pkgbuild
124+
pkgname: ${{ needs.setup.outputs.name_bin }}/
125+
126+
- name: copy deb package && create rpm.spec file (ubuntu only)
127+
if: matrix.platform == 'ubuntu-latest'
128+
run: |
129+
mkdir -p ${{ needs.setup.outputs.name_bin }}
130+
cp -fr ${{ needs.setup.outputs.deb_pkg_path }}/${{ needs.setup.outputs.deb_pkg_name }} ${{ needs.setup.outputs.name_bin }}/${{ needs.setup.outputs.deb_pkg_renamed }}
131+
cat <<EOF > ./${{ needs.setup.outputs.name_bin }}/rpm.spec
132+
Name: ${{ needs.setup.outputs.name }}
133+
Version: ${{ needs.setup.outputs.version }}
134+
BuildArch: ${{ env.ARCH }}
135+
Release: 1
136+
Summary: ${{ needs.setup.outputs.description }}
137+
Requires: ${{ env.DEPENDENCIES_RPM }}
138+
License: ${{ needs.setup.outputs.license }}
139+
Source0: ${{ needs.setup.outputs.deb_pkg_renamed }}
140+
141+
%description
142+
${{ needs.setup.outputs.description }}
143+
144+
%prep
145+
ar x %{SOURCE0}
146+
147+
%build
148+
rm -rf control.tar.gz
149+
tar xvf data.tar.gz
150+
151+
%install
152+
cp -fr usr/ %{buildroot}
153+
154+
%files
155+
%{_bindir}/${{ needs.setup.outputs.name }}
156+
/usr/share/applications/${{ needs.setup.outputs.name }}.desktop
157+
/usr/share/icons/hicolor/**/*
158+
/usr/lib/${{ needs.setup.outputs.name }}/_up_/**/*
159+
EOF
160+
cat ${{ needs.setup.outputs.name_bin }}/rpm.spec
161+
162+
- name: createa rpm package (ubuntu only)
163+
if: matrix.platform == 'ubuntu-latest'
164+
uses: Antikythera/build-rpm@latest
165+
with:
166+
spec_file: ${{ needs.setup.outputs.name_bin }}/rpm.spec
167+
sources: ${{ needs.setup.outputs.name_bin }}/${{ needs.setup.outputs.deb_pkg_renamed }}
168+
169+
- name: upload arch && rpm release (ubuntu only)
170+
if: matrix.platform == 'ubuntu-latest'
171+
uses: softprops/action-gh-release@v1
172+
with:
173+
token: ${{ secrets.GITHUB_TOKEN }}
174+
tag_name: ${{ needs.setup.outputs.tag_name }}
175+
name: '${{ needs.setup.outputs.short_description }} v${{ needs.setup.outputs.version }}'
176+
files: |
177+
${{ needs.setup.outputs.name_bin }}/${{ needs.setup.outputs.arch_pkg_name }}
178+
${{ needs.setup.outputs.rpm_pkg_name }}

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"name": "obk-layout-editor",
3+
"license": "MPL-2.0",
34
"private": true,
45
"type": "module",
56
"scripts": {

0 commit comments

Comments
 (0)