Skip to content

Commit f440437

Browse files
authored
Merge pull request #3717 from sh41/feature/support-2025-3
Update for 2025.3
2 parents 46278a4 + 6b07cdd commit f440437

File tree

141 files changed

+2653
-1172
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

141 files changed

+2653
-1172
lines changed
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
name: 'Setup Build Environment'
2+
description: 'Sets up Java, Elixir, and Gradle for IntelliJ plugin builds'
3+
inputs:
4+
elixir-version:
5+
description: 'Elixir version'
6+
required: false
7+
default: '1.13.4'
8+
otp-version:
9+
description: 'OTP version'
10+
required: false
11+
default: '24.3.4.6'
12+
idea-version:
13+
description: 'IntelliJ IDEA version'
14+
required: false
15+
default: ''
16+
skip-gradle-cache:
17+
description: 'Skip Gradle cache'
18+
required: false
19+
default: 'false'
20+
skip-jcef:
21+
description: 'Skip JCEF package (set to true for release/verifyPlugin jobs)'
22+
required: false
23+
default: 'false'
24+
25+
runs:
26+
using: composite
27+
steps:
28+
- name: Free Disk Space (Ubuntu)
29+
uses: jlumbroso/free-disk-space@main
30+
with:
31+
tool-cache: false
32+
android: true
33+
dotnet: true
34+
haskell: true
35+
large-packages: false
36+
docker-images: true
37+
swap-storage: false
38+
39+
- name: Setup JBR 21
40+
uses: actions/setup-java@v5
41+
with:
42+
distribution: 'jetbrains'
43+
java-version: 21
44+
java-package: ${{ inputs.skip-jcef == 'false' && 'jdk+jcef' || 'jdk' }}
45+
46+
- name: Setup Gradle
47+
uses: gradle/actions/setup-gradle@v5
48+
49+
- name: Set up Elixir
50+
env:
51+
ImageOS: ubuntu24
52+
if: ${{ inputs.elixir-version != '' }}
53+
uses: erlef/setup-beam@v1
54+
with:
55+
otp-version: ${{ inputs.otp-version }}
56+
elixir-version: ${{ inputs.elixir-version }}
57+
58+
- name: Export environment variables
59+
shell: bash
60+
run: |
61+
if [ -n "${{ inputs.elixir-version }}" ]; then
62+
echo "OTP_RELEASE=${{ inputs.otp-version }}" >> $GITHUB_ENV
63+
echo "ERLANG_SDK_HOME=$(erl -eval 'io:format("~s", [code:root_dir()]).' -noshell -run init stop)" >> $GITHUB_ENV
64+
fi
65+
chmod +x gradlew
66+
if [ -n "${{ inputs.idea-version }}" ]; then
67+
echo "ORG_GRADLE_PROJECT_ideaVersion=${{ inputs.idea-version }}" >> $GITHUB_ENV
68+
fi
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: Publish to Canary
2+
on:
3+
# release:
4+
# types: [prereleased]
5+
workflow_dispatch:
6+
7+
jobs:
8+
publish-to-canary:
9+
runs-on: ubuntu-latest
10+
steps:
11+
- name: Check out repository 💾
12+
uses: actions/checkout@v5
13+
14+
- name: Setup Build Environment ☕
15+
uses: ./.github/actions/setup-env
16+
with:
17+
elixir-version: ''
18+
19+
- name: Download release asset 📦
20+
id: download_asset
21+
uses: dsaltares/fetch-gh-release-asset@1.1.2
22+
with:
23+
repo: ${{ github.repository }}
24+
version: tags/${{ github.ref_name }}
25+
file: intellij-elixir-${{ github.ref_name }}.zip
26+
token: ${{ secrets.GITHUB_TOKEN }}
27+
28+
- name: Publish to Canary 🐣
29+
env:
30+
JET_BRAINS_MARKETPLACE_TOKEN: ${{ secrets.JetBrainsMarketplaceToken }}
31+
run: >
32+
./gradlew publishPlugin -PdistributionFile=intellij-elixir-${{ github.ref_name }}.zip

.github/workflows/release.yml

Lines changed: 20 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -6,77 +6,43 @@ on:
66
- main
77

88
jobs:
9-
test:
10-
runs-on: ubuntu-latest
9+
test-and-verify:
10+
uses: ./.github/workflows/shared-test.yml
11+
with:
12+
elixir-version: '1.13.4'
13+
otp-version: '24.3.4.6'
1114

12-
steps:
13-
- uses: actions/checkout@v2
14-
- name: Setup JBR 21
15-
uses: actions/setup-java@v5
16-
with:
17-
distribution: 'jetbrains'
18-
java-version: 21
19-
- name: Set up Elixir
20-
uses: erlef/setup-beam@v1
21-
with:
22-
otp-version: 24.3.4.6
23-
elixir-version: 1.13.0
24-
- name: Export OTP_RELEASE
25-
run: echo "OTP_RELEASE=24.3.4.6" >> $GITHUB_ENV
26-
- name: Export ERLANG_SDK_HOME
27-
run: echo "ERLANG_SDK_HOME=`erl -eval 'io:format("~s", [code:root_dir()]).' -noshell -run init stop`" >> $GITHUB_ENV
28-
- name: Grant execute permission for gradlew
29-
run: chmod +x gradlew
30-
- name: Compile Tests with Gradle
31-
run: ./gradlew --stacktrace compileTestJava
32-
- name: Get Elixir Source
33-
run: ./gradlew --stacktrace getElixir
34-
- name: Release Quoter
35-
run: ./gradlew --stacktrace releaseQuoter
36-
- name: Test with Gradle
37-
run: ./gradlew --stacktrace test
38-
verifyPlugin:
39-
runs-on: ubuntu-latest
40-
41-
steps:
42-
- uses: actions/checkout@v2
43-
- name: Setup JBR 21
44-
uses: actions/setup-java@v5
45-
with:
46-
distribution: 'jetbrains'
47-
java-version: 21
48-
- name: Grant execute permission for gradlew
49-
run: chmod +x gradlew
50-
- name: Run Plugin Verifier
51-
run: ./gradlew --stacktrace verifyPlugin
5215
release:
53-
needs: [ test, verifyPlugin ]
16+
needs: [ test-and-verify ]
5417
runs-on: ubuntu-latest
55-
5618
steps:
57-
- uses: actions/checkout@v2
58-
- name: Setup JBR 21
59-
uses: actions/setup-java@v5
19+
- uses: actions/checkout@v5
20+
21+
- name: Setup Build Environment
22+
uses: ./.github/actions/setup-env
6023
with:
61-
distribution: 'jetbrains'
62-
java-version: 21
63-
- name: Grant execute permission for gradlew
64-
run: chmod +x gradlew
24+
elixir-version: ''
25+
skip-jcef: 'true'
26+
6527
- name: Build with Gradle
6628
run: ./gradlew buildPlugin
29+
6730
- name: Export ASSET_PATH
68-
run: echo "ASSET_PATH=`ls -1 build/distributions/intellij-elixir-*.zip`" >> $GITHUB_ENV
31+
run: echo "ASSET_PATH=$(ls -1 build/distributions/intellij-elixir-*.zip)" >> $GITHUB_ENV
32+
6933
- name: Export ASSET_NAME
7034
run: echo "ASSET_NAME=${ASSET_PATH#build/distributions/}" >> $GITHUB_ENV
35+
7136
- name: Export TAG
7237
run: |
7338
version_suffix_zip=${ASSET_NAME#intellij-elixir-}
7439
echo "TAG=v${version_suffix_zip%.zip}" >> $GITHUB_ENV
40+
7541
- name: Tag Commit
7642
uses: hole19/git-tag-action@master
7743
env:
78-
# TAG set above with `set-env name=TAG`
7944
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
45+
8046
- name: Create Release
8147
id: create_release
8248
uses: actions/create-release@latest
@@ -86,6 +52,7 @@ jobs:
8652
tag_name: ${{ env.TAG }}
8753
release_name: ${{ env.TAG }}
8854
prerelease: true
55+
8956
- name: Upload Release Asset
9057
uses: actions/upload-release-asset@v1
9158
env:
@@ -95,7 +62,3 @@ jobs:
9562
asset_path: ${{ env.ASSET_PATH }}
9663
asset_name: ${{ env.ASSET_NAME }}
9764
asset_content_type: application/zip
98-
- name: Publish
99-
env:
100-
JET_BRAINS_MARKETPLACE_TOKEN: ${{ secrets.JetBrainsMarketplaceToken }}
101-
run: ./gradlew --stacktrace publishPlugin

.github/workflows/shared-test.yml

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
name: Shared Test Workflow
2+
3+
on:
4+
workflow_call:
5+
inputs:
6+
elixir-version:
7+
description: 'Elixir version to use'
8+
required: false
9+
type: string
10+
default: '1.13.4'
11+
otp-version:
12+
description: 'OTP version to use'
13+
required: false
14+
type: string
15+
default: '24.3.4.6'
16+
idea-version:
17+
description: 'IntelliJ IDEA version for testing'
18+
required: false
19+
type: string
20+
default: '253.28294.169'
21+
upload-reports:
22+
description: 'Upload test reports as artifacts'
23+
required: false
24+
type: boolean
25+
default: false
26+
27+
jobs:
28+
test:
29+
runs-on: ubuntu-latest
30+
31+
steps:
32+
- uses: actions/checkout@v5
33+
34+
- name: Setup Build Environment
35+
uses: ./.github/actions/setup-env
36+
with:
37+
elixir-version: ${{ inputs.elixir-version }}
38+
otp-version: ${{ inputs.otp-version }}
39+
idea-version: ${{ inputs.idea-version }}
40+
41+
- name: Compile Tests with Gradle
42+
run: ./gradlew --stacktrace compileTestJava
43+
44+
- name: Get Elixir Source
45+
run: ./gradlew --stacktrace getElixir
46+
47+
- name: Release Quoter
48+
run: ./gradlew --stacktrace releaseQuoter
49+
50+
- name: Test with Gradle
51+
run: ./gradlew --stacktrace test
52+
53+
- name: Publish Test Results
54+
uses: EnricoMi/publish-unit-test-result-action@v2
55+
if: always()
56+
with:
57+
files: '**/build/test-results/**/*.xml'
58+
check_name: Test Results
59+
60+
- name: Upload Test Reports
61+
uses: actions/upload-artifact@v4
62+
if: ${{ always() && inputs.upload-reports }}
63+
with:
64+
name: test-reports
65+
path: |
66+
**/build/reports/tests/**
67+
**/build/test-results/**
68+
retention-days: 30
69+
70+
verifyPlugin:
71+
runs-on: ubuntu-latest
72+
73+
steps:
74+
- uses: actions/checkout@v5
75+
76+
- name: Setup Build Environment
77+
uses: ./.github/actions/setup-env
78+
with:
79+
elixir-version: ''
80+
81+
- name: Run Plugin Verifier
82+
run: ./gradlew --stacktrace verifyPlugin
83+
84+
- name: Upload Verify Reports
85+
uses: actions/upload-artifact@v4
86+
if: ${{ always() && inputs.upload-reports }}
87+
with:
88+
name: verify-plugin-reports
89+
path: |
90+
**/build/reports/pluginVerifier
91+
retention-days: 30

.github/workflows/test.yml

Lines changed: 8 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,16 @@
11
name: Test
22

3-
on: pull_request
3+
on: [ pull_request, workflow_dispatch ]
44

55
concurrency:
66
group: ${{ github.workflow }}-${{ github.head_ref }}
77
cancel-in-progress: true
88

99
jobs:
10-
test:
11-
runs-on: ubuntu-latest
12-
13-
strategy:
14-
matrix:
15-
ideaVersion: [ "2024.2.6", "2024.3.6", "2025.2.1" ]
16-
17-
steps:
18-
- uses: actions/checkout@v2
19-
- name: Setup JBR 21
20-
uses: actions/setup-java@v5
21-
with:
22-
distribution: 'jetbrains'
23-
java-version: 21
24-
cache: 'gradle'
25-
package-type: 'jdk+jcef'
26-
- name: Set up Elixir
27-
uses: erlef/setup-beam@v1
28-
with:
29-
otp-version: 24.3.4.6
30-
elixir-version: 1.13.4
31-
- name: Export OTP_RELEASE
32-
run: echo "OTP_RELEASE=24.3.4.6" >> $GITHUB_ENV
33-
- name: Export ERLANG_SDK_HOME
34-
run: echo "ERLANG_SDK_HOME=`erl -eval 'io:format("~s", [code:root_dir()]).' -noshell -run init stop`" >> $GITHUB_ENV
35-
- name: Grant execute permission for gradlew
36-
run: chmod +x gradlew
37-
- name: Export ideaVersion to gradle
38-
run: echo "ORG_GRADLE_PROJECT_ideaVersion=${{matrix.ideaVersion}}" >> $GITHUB_ENV
39-
- name: Compile Tests with Gradle
40-
run: ./gradlew --stacktrace compileTestJava
41-
- name: Get Elixir Source
42-
run: ./gradlew --stacktrace getElixir
43-
- name: Release Quoter
44-
run: ./gradlew --stacktrace releaseQuoter
45-
- name: Test with Gradle
46-
run: ./gradlew --stacktrace test
47-
verifyPlugin:
48-
runs-on: ubuntu-latest
49-
50-
steps:
51-
- uses: actions/checkout@v2
52-
- name: Setup JBR 21
53-
uses: actions/setup-java@v5
54-
with:
55-
distribution: 'jetbrains'
56-
java-version: 21
57-
cache: 'gradle'
58-
package-type: 'jdk+jcef'
59-
- name: Grant execute permission for gradlew
60-
run: chmod +x gradlew
61-
- name: Run Plugin Verifier
62-
run: ./gradlew --stacktrace verifyPlugin
10+
test-and-verify:
11+
uses: ./.github/workflows/shared-test.yml
12+
with:
13+
elixir-version: '1.13.4'
14+
otp-version: '24.3.4.6'
15+
idea-version: '2024.3.6'
16+
upload-reports: true

.tool-versions

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ erlang 24.3.4.6
77
# mac:
88
# mise link java@jbrsdk_jcef-21.0.3-b509.4-2024.2 /path/to/jbrsdk_jcef-21.0.3-xxx-xxx-b509.4/Contents/Home
99
# Then setting it to `java jbrsdk_jcef-21.0.3-b509.4-2024.2`
10-
java zulu-21.36.17
10+
java jetbrains-21.0.8b1038.68

0 commit comments

Comments
 (0)