Skip to content

Commit 1aa9610

Browse files
committed
Merge branch 'main' into the-wgpu-moment
2 parents 70ba638 + 11ef4a6 commit 1aa9610

17 files changed

Lines changed: 1003 additions & 100 deletions

File tree

.github/workflows/release.yml

Lines changed: 138 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
name: Releases
22
on:
3-
release:
4-
types: [published]
3+
push:
4+
tags:
5+
- 'processing-*'
56

67
jobs:
78
version:
@@ -21,12 +22,36 @@ jobs:
2122
# Set outputs for use in later jobs or steps
2223
echo "revision=$REVISION" >> $GITHUB_OUTPUT
2324
echo "version=$VERSION" >> $GITHUB_OUTPUT
25+
26+
create-draft:
27+
name: Create draft release
28+
runs-on: ubuntu-latest
29+
needs: version
30+
permissions:
31+
contents: write
32+
env:
33+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
34+
GH_REPO: ${{ github.repository }}
35+
TAG: ${{ github.ref_name }}
36+
VERSION: ${{ needs.version.outputs.version }}
37+
steps:
38+
- name: Create draft release
39+
run: |
40+
if gh release view "$TAG" >/dev/null 2>&1; then
41+
echo "Release for $TAG already exists; leaving it as-is."
42+
else
43+
gh release create "$TAG" \
44+
--draft \
45+
--title "Processing $VERSION" \
46+
--generate-notes
47+
fi
48+
2449
reference:
2550
name: Publish Processing Reference to release
2651
runs-on: ubuntu-latest
2752
permissions:
2853
contents: write
29-
needs: version
54+
needs: [version, create-draft]
3055
steps:
3156
- name: Checkout Website Repository
3257
uses: actions/checkout@v4
@@ -42,17 +67,23 @@ jobs:
4267
run: npm run build
4368
- name: Make reference.zip
4469
run: npm run zip
70+
- name: Stage reference asset
71+
env:
72+
VERSION: ${{ needs.version.outputs.version }}
73+
run: |
74+
mkdir -p release-assets
75+
cp reference.zip "release-assets/processing-${VERSION}-reference.zip"
4576
- name: Upload reference to release
46-
uses: svenstaro/upload-release-action@v2
77+
uses: softprops/action-gh-release@v2
4778
with:
48-
repo_token: ${{ secrets.GITHUB_TOKEN }}
49-
asset_name: processing-${{ needs.version.outputs.version }}-reference.zip
50-
file: reference.zip
79+
draft: true
80+
tag_name: ${{ github.ref_name }}
81+
files: release-assets/processing-${{ needs.version.outputs.version }}-reference.zip
5182

5283
publish-maven:
5384
name: Publish Processing Libraries to Maven Central
5485
runs-on: ubuntu-latest
55-
needs: version
86+
needs: [version, release-windows, release-macos, release-linux]
5687
steps:
5788
- name: Checkout Repository
5889
uses: actions/checkout@v4
@@ -78,7 +109,7 @@ jobs:
78109
publish-gradle:
79110
name: Publish Processing Plugins to Gradle Plugin Portal
80111
runs-on: ubuntu-latest
81-
needs: version
112+
needs: [version, release-windows, release-macos, release-linux]
82113
steps:
83114
- name: Checkout Repository
84115
uses: actions/checkout@v4
@@ -97,7 +128,7 @@ jobs:
97128

98129
ORG_GRADLE_PROJECT_version: ${{ needs.version.outputs.version }}
99130
ORG_GRADLE_PROJECT_group: ${{ vars.GRADLE_GROUP }}
100-
131+
101132
- name: Publish internal plugins to Gradle Plugin Portal
102133
run: ./gradlew -c gradle/plugins/settings.gradle.kts publishPlugins
103134
env:
@@ -114,7 +145,7 @@ jobs:
114145
release-windows:
115146
name: (windows/${{ matrix.arch }}) Create Processing Release
116147
runs-on: ${{ matrix.os }}
117-
needs: version
148+
needs: [version, create-draft]
118149
permissions:
119150
contents: write
120151
strategy:
@@ -154,24 +185,27 @@ jobs:
154185
timestamp-rfc3161: http://timestamp.acs.microsoft.com
155186
timestamp-digest: SHA256
156187

157-
- name: Upload portable version
158-
uses: svenstaro/upload-release-action@v2
159-
with:
160-
repo_token: ${{ secrets.GITHUB_TOKEN }}
161-
asset_name: processing-${{ needs.version.outputs.version }}-windows-${{ matrix.arch }}-portable.zip
162-
file: app/build/compose/binaries/main/Processing-${{ needs.version.outputs.version }}.zip
188+
- name: Stage release assets
189+
shell: bash
190+
env:
191+
VERSION: ${{ needs.version.outputs.version }}
192+
ARCH: ${{ matrix.arch }}
193+
run: |
194+
mkdir -p release-assets
195+
cp "app/build/compose/binaries/main/Processing-${VERSION}.zip" "release-assets/processing-${VERSION}-windows-${ARCH}-portable.zip"
196+
cp "app/build/compose/binaries/main/msi/Processing-${VERSION}.msi" "release-assets/processing-${VERSION}-windows-${ARCH}.msi"
163197
164-
- name: Upload installer
165-
uses: svenstaro/upload-release-action@v2
198+
- name: Upload release assets
199+
uses: softprops/action-gh-release@v2
166200
with:
167-
repo_token: ${{ secrets.GITHUB_TOKEN }}
168-
asset_name: processing-${{ needs.version.outputs.version }}-windows-${{ matrix.arch }}.msi
169-
file: app/build/compose/binaries/main/msi/Processing-${{ needs.version.outputs.version }}.msi
201+
draft: true
202+
tag_name: ${{ github.ref_name }}
203+
files: release-assets/*
170204

171205
release-macos:
172206
name: (macOS/${{ matrix.arch }}) Create Processing Release
173207
runs-on: macos-latest
174-
needs: version
208+
needs: [version, create-draft]
175209
permissions:
176210
contents: write
177211
strategy:
@@ -209,24 +243,26 @@ jobs:
209243
ORG_GRADLE_PROJECT_compose.desktop.mac.notarization.password: ${{ secrets.PROCESSING_APP_PASSWORD }}
210244
ORG_GRADLE_PROJECT_compose.desktop.mac.notarization.teamID: ${{ secrets.PROCESSING_TEAM_ID }}
211245

212-
- name: Upload portables to release
213-
uses: svenstaro/upload-release-action@v2
214-
with:
215-
repo_token: ${{ secrets.GITHUB_TOKEN }}
216-
asset_name: processing-${{ needs.version.outputs.version }}-macos-${{ matrix.arch }}-portable.zip
217-
file: app/build/compose/binaries/main/Processing-${{ needs.version.outputs.version }}.zip
246+
- name: Stage release assets
247+
env:
248+
VERSION: ${{ needs.version.outputs.version }}
249+
ARCH: ${{ matrix.arch }}
250+
run: |
251+
mkdir -p release-assets
252+
cp "app/build/compose/binaries/main/Processing-${VERSION}.zip" "release-assets/processing-${VERSION}-macos-${ARCH}-portable.zip"
253+
cp "app/build/compose/binaries/main/dmg/Processing-${VERSION}.dmg" "release-assets/processing-${VERSION}-macos-${ARCH}.dmg"
218254
219-
- name: Upload installers to release
220-
uses: svenstaro/upload-release-action@v2
255+
- name: Upload release assets
256+
uses: softprops/action-gh-release@v2
221257
with:
222-
repo_token: ${{ secrets.GITHUB_TOKEN }}
223-
asset_name: processing-${{ needs.version.outputs.version }}-macos-${{ matrix.arch }}.dmg
224-
file: app/build/compose/binaries/main/dmg/Processing-${{ needs.version.outputs.version }}.dmg
258+
draft: true
259+
tag_name: ${{ github.ref_name }}
260+
files: release-assets/*
225261

226262
release-linux:
227263
name: (linux/${{ matrix.arch }}) Create Processing Release
228264
runs-on: ${{ matrix.os }}
229-
needs: version
265+
needs: [version, create-draft]
230266
permissions:
231267
contents: write
232268
strategy:
@@ -254,19 +290,22 @@ jobs:
254290
ORG_GRADLE_PROJECT_revision: ${{ needs.version.outputs.revision }}
255291
ORG_GRADLE_PROJECT_compose.desktop.verbose: true
256292

257-
- name: Upload portable to release
258-
uses: svenstaro/upload-release-action@v2
259-
with:
260-
repo_token: ${{ secrets.GITHUB_TOKEN }}
261-
asset_name: processing-${{ needs.version.outputs.version }}-linux-${{ matrix.arch }}-portable.zip
262-
file: app/build/compose/binaries/main/Processing-${{ needs.version.outputs.version }}.zip
293+
- name: Stage release assets
294+
env:
295+
VERSION: ${{ needs.version.outputs.version }}
296+
ARCH: ${{ matrix.arch }}
297+
DEB: ${{ matrix.deb }}
298+
run: |
299+
mkdir -p release-assets
300+
cp "app/build/compose/binaries/main/Processing-${VERSION}.zip" "release-assets/processing-${VERSION}-linux-${ARCH}-portable.zip"
301+
cp "app/build/compose/binaries/main/deb/processing_${VERSION}-1_${DEB}.deb" "release-assets/processing-${VERSION}-linux-${ARCH}.deb"
263302
264-
- name: Upload installer to release
265-
uses: svenstaro/upload-release-action@v2
303+
- name: Upload release assets
304+
uses: softprops/action-gh-release@v2
266305
with:
267-
repo_token: ${{ secrets.GITHUB_TOKEN }}
268-
asset_name: processing-${{ needs.version.outputs.version }}-linux-${{ matrix.arch }}.deb
269-
file: app/build/compose/binaries/main/deb/processing_${{ needs.version.outputs.version }}-1_${{ matrix.deb }}.deb
306+
draft: true
307+
tag_name: ${{ github.ref_name }}
308+
files: release-assets/*
270309

271310
- name: Add artifact
272311
uses: actions/upload-artifact@v4
@@ -278,7 +317,7 @@ jobs:
278317
release-linux-snap:
279318
name: (linux/${{ matrix.arch }}) Create Processing Snap Release
280319
runs-on: ${{ matrix.os }}
281-
needs: [version, release-linux]
320+
needs: [version, create-draft, release-linux]
282321
permissions:
283322
contents: write
284323
strategy:
@@ -316,12 +355,22 @@ jobs:
316355
ORG_GRADLE_PROJECT_snapname: ${{ vars.SNAP_NAME }}
317356
ORG_GRADLE_PROJECT_snapconfinement: ${{ vars.SNAP_CONFINEMENT }}
318357

358+
- name: Stage release assets
359+
env:
360+
VERSION: ${{ needs.version.outputs.version }}
361+
ARCH: ${{ matrix.arch }}
362+
DEB: ${{ matrix.deb }}
363+
SNAP_NAME: ${{ vars.SNAP_NAME }}
364+
run: |
365+
mkdir -p release-assets
366+
cp "app/build/compose/binaries/main/${SNAP_NAME}_${VERSION}_${DEB}.snap" "release-assets/processing-${VERSION}-linux-${ARCH}.snap"
367+
319368
- name: Upload snap to release
320-
uses: svenstaro/upload-release-action@v2
369+
uses: softprops/action-gh-release@v2
321370
with:
322-
repo_token: ${{ secrets.GITHUB_TOKEN }}
323-
asset_name: processing-${{ needs.version.outputs.version }}-linux-${{ matrix.arch }}.snap
324-
file: app/build/compose/binaries/main/${{ vars.SNAP_NAME }}_${{ needs.version.outputs.version }}_${{ matrix.deb }}.snap
371+
draft: true
372+
tag_name: ${{ github.ref_name }}
373+
files: release-assets/processing-${{ needs.version.outputs.version }}-linux-${{ matrix.arch }}.snap
325374

326375
- name: Upload snap to Snap Store
327376
run: snapcraft upload --release=beta app/build/compose/binaries/main/${{ vars.SNAP_NAME }}_${{ needs.version.outputs.version }}_${{ matrix.deb }}.snap
@@ -330,7 +379,7 @@ jobs:
330379
release-linux-flatpak:
331380
name: (linux/${{ matrix.arch }}) Create Processing Flatpak Release
332381
runs-on: ${{ matrix.os }}
333-
needs: [ version, release-linux ]
382+
needs: [version, create-draft, release-linux]
334383
container:
335384
image: ghcr.io/flathub-infra/flatpak-github-actions:gnome-48
336385
options: --privileged
@@ -375,9 +424,42 @@ jobs:
375424
cache-key: flatpak-builder-${{ github.sha }}
376425
arch: ${{ matrix.farch }}
377426

427+
- name: Stage release assets
428+
env:
429+
VERSION: ${{ needs.version.outputs.version }}
430+
ARCH: ${{ matrix.arch }}
431+
run: |
432+
mkdir -p release-assets
433+
cp processing.flatpak "release-assets/processing-${VERSION}-linux-${ARCH}.flatpak"
434+
378435
- name: Upload Flatpak to release
379-
uses: svenstaro/upload-release-action@v2
436+
uses: softprops/action-gh-release@v2
380437
with:
381-
repo_token: ${{ secrets.GITHUB_TOKEN }}
382-
asset_name: processing-${{ needs.version.outputs.version }}-linux-${{ matrix.arch }}.flatpak
383-
file: processing.flatpak
438+
draft: true
439+
tag_name: ${{ github.ref_name }}
440+
files: release-assets/processing-${{ needs.version.outputs.version }}-linux-${{ matrix.arch }}.flatpak
441+
442+
publish-release:
443+
name: Publish release
444+
runs-on: ubuntu-latest
445+
environment: release
446+
needs:
447+
- version
448+
- create-draft
449+
- reference
450+
- publish-maven
451+
- publish-gradle
452+
- release-windows
453+
- release-macos
454+
- release-linux
455+
- release-linux-snap
456+
- release-linux-flatpak
457+
permissions:
458+
contents: write
459+
env:
460+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
461+
GH_REPO: ${{ github.repository }}
462+
TAG: ${{ github.ref_name }}
463+
steps:
464+
- name: Mark release as published
465+
run: gh release edit "$TAG" --draft=false --latest

BUILD.md

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,21 @@ Great to see you are interested in contributing to Processing. To get started yo
44

55
## IntelliJ IDEA (recommended)
66

7-
First, [download the IntelliJ IDEA Community Edition](https://www.jetbrains.com/idea/download/). Make sure to select the "Community Edition", not "Ultimate". The Community Edition is free and built on open-source software. You may need to scroll down to find the download link.
7+
_**Note:** A paid subscription is **not** required. Everything needed to build and work on Processing is available for free in IntelliJ IDEA._
8+
9+
1. [Download IntelliJ IDEA](https://www.jetbrains.com/idea/download/) and install it.
10+
1. Clone the `Processing4` repository locally.
11+
1. Open the cloned repository in **IntelliJ IDEA**.
12+
1. When prompted, select **Trust Project**. (You can preview the project in Safe Mode, but you will not be able to build Processing.)
13+
1. If IntelliJ asks whether to import the Gradle project, select **Load Gradle Project**.
14+
1. Make sure IntelliJ and Gradle are both using **JDK 17**:
15+
* Go to **`File > Project Structure > Project`**
16+
* Set **Project SDK** to **JDK 17** (we recommend **Eclipse Temurin**)
17+
* If needed, choose **Download JDK…** and install **Version 17**
18+
* Then go to **`Settings > Build, Execution, Deployment > Build Tools > Gradle`**
19+
* Set **Gradle JVM** to the same **JDK 17**
20+
1. Wait for Gradle sync to finish.
21+
1. Click the green **Run** button in the top right to build and launch Processing. You can also use this menu to start a debug session.
822

923
> [!TIP]
1024
> If you encounter any issues with this process, Read the [Troubleshooting and Setup Tips for IntelliJ IDEA](#troubleshooting-and-setup-tips-intellij-idea)
@@ -47,11 +61,12 @@ If you don't have them installed, you will need to install [Git](https://git-scm
4761
```
4862

4963
2. **Install Temurin JDK 17:**
50-
51-
Processing requires the Temurin distribution of OpenJDK.
64+
65+
Download and install the appropriate version for your platform:
5266

53-
You can download it from [Adoptium](https://adoptium.net/), from [GitHub releases](https://github.com/adoptium/temurin17-binaries/releases),
54-
or find it in the package manager for your platform.
67+
- [Linux (x86)](https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.15%2B6/OpenJDK17U-jdk_x64_linux_hotspot_17.0.15_6.tar.gz)
68+
- [macOS (Apple Silicon)](https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.15%2B6/OpenJDK17U-jdk_aarch64_mac_hotspot_17.0.15_6.pkg)
69+
- [Other platforms](https://adoptium.net/temurin/releases/?package=jdk&version=17&os=any&arch=any)
5570

5671
### macOS:
5772
```bash
@@ -97,7 +112,7 @@ sdk install jextract
97112
It may be necessary to set the `JAVA_HOME` environment variable to point to your Temurin JDK installation.
98113

99114
```bash
100-
export JAVA_HOME=/path/to/temurin/jdk-17/
115+
export JAVA_HOME=/path/to/temurin/jdk-17.0.15+6/
101116
```
102117

103118
### Build, Run, and Package Processing
@@ -181,20 +196,22 @@ If you’re building Processing using IntelliJ IDEA and something’s not workin
181196
Make sure IntelliJ is using **temurin-17**, not another version. If building with WebGPU (`-PenableWebGPU=true`), use **temurin-25** instead.
182197
183198
1. Go to **File > Project Structure > Project**
184-
2. Set the **Project SDK** to: `temurin-17`
199+
2. Set the **Project SDK** to: `temurin-17 java version "17.0.15"`
185200
186201
![JDK Selection](.github/media/troubleshooting-Intellij-setting-djk-version-manually.png)
187202
188203
If it is not already installed, you can download it by:
189204
1. Clicking the SDK input field and then selecting the `Download JDK...` option from the menu
190205
2. Select Version: `17`, Vendor: `Eclipse Temurin (AdoptOpenJDK HotSpot)`
191206
207+
<img width="400" alt="JDK Download" src="https://github.com/user-attachments/assets/503a03a4-3e53-4406-9641-2c93e4b45d51" />
192208
193209
![JDK Download](.github/media/troubleshooting-Intellij-download-jdk.png)
194210
195211
Now go back to your main window and
196212
1. Click the green Run Icon in the top right of the window.
197213
214+
198215
### “Duplicate content roots detected”
199216
200217
You may see this warning in IntelliJ:

0 commit comments

Comments
 (0)