@@ -2,127 +2,113 @@ name: jbr-linux-x64
2
2
3
3
on :
4
4
workflow_dispatch :
5
- push :
6
- branches :
7
- - master
8
- schedule :
9
- - cron : 0 0 1 * *
5
+ inputs :
6
+ release_id :
7
+ required : true
8
+ default : ' latest'
9
+ type : string
10
+ description : " Release id or tag"
11
+ jbr_branch :
12
+ required : false
13
+ type : string
14
+ description : " JBR branch"
10
15
11
16
jobs :
12
17
build :
13
- runs-on : ubuntu-18 .04
18
+ runs-on : ubuntu-20 .04
14
19
steps :
15
20
- name : Clone Repository
16
- uses : actions/checkout@v1
21
+ uses : actions/checkout@v3
22
+
23
+ - name : Generate Variables
24
+ id : vars
25
+ run : |
26
+ release_id='${{ github.event.inputs.release_id }}'
27
+ curl -H "authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" -sfL -m 60 -o /tmp/latest.json "${{ github.api_url }}/repos/JetBrains/JetBrainsRuntime/releases/${release_id:-latest}"
28
+
29
+ release_name=$(jq -r .name /tmp/latest.json)
30
+ echo "Release: $release_name"
31
+ echo ::set-output name=release_name::"$release_name"
32
+
33
+ html_url=$(jq -r .html_url /tmp/latest.json)
34
+ echo "Release URL: $html_url"
35
+ echo ::set-output name=release_body::"$html_url"
36
+
37
+ tag_name=$(jq -r .tag_name /tmp/latest.json)
38
+ echo "Tag: $tag_name"
39
+ echo ::set-output name=tag_name::"$tag_name"
40
+
41
+ if [[ "$tag_name" == jbr17* ]]; then
42
+ JBSDK_VERSION=$(sed -E 's/^jbr([0-9_.]+)b.*$/\1/' <<< "$tag_name")
43
+ build_number=$(sed -E 's/^jbr[0-9_.]+b([0-9.]+)$/\1/' <<< "$tag_name")
44
+ elif [[ "$tag_name" == jbr-release-17.* ]]; then
45
+ JBSDK_VERSION=$(sed -E 's/^jbr-release-([0-9_.]+)b.*$/\1/' <<< "$tag_name")
46
+ build_number=$(sed -E 's/^jbr-release-[0-9_.]+b([0-9.]+)$/\1/' <<< "$tag_name")
47
+ else
48
+ echo unknown tag name: $tag_name
49
+ exit 1
50
+ fi
51
+
52
+ echo "JBSDK Version: $JBSDK_VERSION"
53
+ echo ::set-output name=JBSDK_VERSION::"$JBSDK_VERSION"
54
+ echo "Build Number: $build_number"
55
+ echo ::set-output name=build_number::"$build_number"
56
+
57
+ ref='${{ github.event.inputs.jbr_branch }}'
58
+ if [[ -z "$ref" ]]; then
59
+ ref="jb${JBSDK_VERSION}-b${build_number}"
60
+ fi
61
+ echo "Ref: $ref"
62
+ echo ::set-output name=ref::"$ref"
17
63
18
64
- name : Init Build Dependencies
19
65
env :
20
66
DEBIAN_FRONTEND : noninteractive
21
67
run : |
22
- sudo -E apt-get remove -y --purge azure-cli ghc zulu* hhvm llvm* firefox google* dotnet* powershell openjdk* mysql* php*
23
- sudo -E rm -rf /usr/share/dotnet /etc/mysql /etc/php /usr/lib/jvm/
24
- sudo -E apt-get update -y
25
- sudo -E apt-get install -y ant autoconf bison build-essential cmake flex git gperf ksh \
26
- libasound2-dev libavcodec-dev libavformat-dev libcups2-dev libfontconfig1-dev \
27
- libgl1-mesa-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \
28
- libgtk2.0-dev libgtk-3-dev libjpeg-dev libpng-dev libudev-dev libx11-dev libxext-dev \
29
- libxml2-dev libxrandr-dev libxrender-dev libxslt1-dev libxt-dev libxtst-dev libxxf86vm-dev \
30
- make mercurial openjdk-11-jdk pkg-config ruby tree x11proto-core-dev x11proto-xf86vidmode-dev zip
31
- sudo -E apt-get autoremove -y --purge
32
- sudo -E apt-get clean -y
33
-
34
- - name : Generate Information
35
- id : gen_info
36
- env :
37
- TZ : Asia/Shanghai
38
- run : |
39
- release_tag="$(date +%Y-%m-%d_%H-%M)"
40
- release_name="jbr-linux-x64-$release_tag"
41
- release_description="${{ secrets.DESC }}"
42
- echo "##[set-output name=release_tag;]$release_tag"
43
- echo "##[set-output name=release_name;]$release_name"
44
- echo "##[set-output name=release_description;]$release_description"
45
-
46
- - name : Compile JCEF
47
- env :
48
- JDK_11 : /usr/lib/jvm/java-11-openjdk-amd64
49
- ANT_HOME : /usr/share/ant
50
- run : |
51
- git clone https://github.com/JetBrains/jcef.git jcef
52
- cd jcef
53
- # reset to commit 4ef9139
54
- git reset --hard 4ef9139
55
- cd jb/tools/linux && chmod +x *
56
- ./build.sh all
57
-
58
- - name : List Paths
68
+ sudo apt-get update -y
69
+ sudo apt-get install -y libasound2-dev libavcodec-dev libavformat-dev libcups2-dev libgl1-mesa-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgtk2.0-dev libgtk-3-dev libudev-dev libxrandr-dev libxslt1-dev libxtst-dev libxxf86vm-dev x11proto-xf86vidmode-dev
70
+ sudo apt-get clean -y
71
+
72
+ - name : Prepare JCEF
59
73
run : |
60
- cd jcef
61
- ls -a
62
- echo
63
- tree -a
74
+ aria2c -o jbrsdk_jcef.tgz 'https://cache-redirector.jetbrains.com/intellij-jbr/jbrsdk_jcef-${{ steps.vars.outputs.JBSDK_VERSION }}-linux-x64-b${{ steps.vars.outputs.build_number }}.tar.gz'
75
+ mkdir jcef_linux_x64
76
+ tar -zxvf jbrsdk_jcef.tgz --strip-components=1 -C jcef_linux_x64 --wildcards -- 'jbrsdk_jcef-*/jmods/gluegen.rt.jmod' 'jbrsdk_jcef-*/jmods/jogl.all.jmod' 'jbrsdk_jcef-*/jmods/jcef.jmod'
77
+ rm -f jbrsdk_jcef.tgz
78
+
79
+ - name : Clone JBR Repository
80
+ uses : actions/checkout@v3
81
+ with :
82
+ repository : JetBrains/JetBrainsRuntime
83
+ ref : ${{ steps.vars.outputs.ref }}
84
+ fetch-depth : 0 # 这里必须拉取全部历史,下面的mkimages_x64.sh里面会通过git log找tag
85
+ path : JetBrainsRuntime
64
86
65
87
- name : Patch & Compile JetBrainsRuntime with JCEF
66
- env :
67
- JAVA_HOME : /usr/lib/jvm/java-11-openjdk-amd64
68
- JDK_HOME : /usr/lib/jvm/java-11-openjdk-amd64
88
+ id : compile
69
89
run : |
70
- git config --global core.autocrlf input
71
- git clone -b master --single-branch https://github.com/JetBrains/JetBrainsRuntime.git
72
90
cd JetBrainsRuntime
73
- mkdir jcef_linux_x64 && tar zxf ../jcef/jcef_linux_x64.tar.gz -C jcef_linux_x64
74
- git apply -p0 < jb/project/tools/patches/add_jcef_module.patch
75
- mv ../idea.patch ./
76
- patch -p1 < idea.patch
77
- sh ./configure --disable-warnings-as-errors --with-import-modules=./jcef_linux_x64/modular-sdk
78
- make images
79
-
80
- - name : List Paths
81
- run : |
82
- cd JetBrainsRuntime
83
- ls -a
84
- echo
85
- tree -a
91
+ git log -1
86
92
87
- - name : Reduce Size
88
- env :
89
- BASE_DIR : build/linux-x86_64-normal-server-release/images
90
- JBR_BUNDLE : jbr_jcef
91
- JCEF_PATH : ../jcef/jcef_build/native/Release
92
- run : |
93
- cd JetBrainsRuntime
94
- cat jb/project/tools/common/modules.list > modules_tmp.list
95
- rm -rf ${BASE_DIR}/${JBR_BUNDLE}
96
- ${BASE_DIR}/jdk/bin/jlink \
97
- --module-path ${BASE_DIR}/jdk/jmods --no-man-pages --compress=2 \
98
- --add-modules $(xargs < modules_tmp.list | sed s/" "//g) --output $BASE_DIR/$JBR_BUNDLE
99
- cp -R $BASE_DIR/$JBR_BUNDLE $BASE_DIR/jbr
100
- rsync -av ${JCEF_PATH}/ $BASE_DIR/$JBR_BUNDLE/lib --exclude="modular-sdk"
101
- grep -v "^JAVA_VERSION" ${BASE_DIR}/jdk/release | grep -v "^MODULES" >> $BASE_DIR/$JBR_BUNDLE/release
102
- rm -rf ${BASE_DIR}/jbr
103
- cp -R ${BASE_DIR}/${JBR_BUNDLE} ${BASE_DIR}/jbr
104
-
105
- - name : Package Artifact
106
- run : |
107
- cd JetBrainsRuntime/build/linux-x86_64-normal-server-release/images
108
- zip -r jbr-linux-x64.zip ./jbr/*
109
- mv jbr-linux-x64.zip ../../../../
93
+ patch -p1 < ../idea.patch
110
94
111
- - name : Upload Artifact
112
- uses : actions/upload-artifact@master
113
- with :
114
- name : ${{ steps.gen_info.outputs.release_tag }}
115
- path : jbr-linux-x64.zip
95
+ mv ../jcef_linux_x64 ./
96
+
97
+ export BOOT_JDK="$JAVA_HOME_17_X64"
98
+
99
+ jb/project/tools/linux/scripts/mkimages_x64.sh '${{ steps.vars.outputs.build_number }}' jcef
100
+
101
+ echo ::set-output name=jbr_image::"$(ls -1 jbr_jcef-*-linux-x64-*.tar.gz)"
116
102
117
103
- name : Create Release
118
104
id : create_release
119
105
uses : actions/create-release@v1
120
106
env :
121
107
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
122
108
with :
123
- tag_name : ${{ steps.gen_info .outputs.release_tag }}
124
- release_name : ${{ steps.gen_info .outputs.release_name }}
125
- body : ${{ steps.gen_info .outputs.release_description }}
109
+ tag_name : ${{ steps.vars .outputs.tag_name }}
110
+ release_name : ${{ steps.vars .outputs.release_name }}
111
+ body : ${{ steps.vars .outputs.release_body }}
126
112
draft : false
127
113
prerelease : true
128
114
@@ -133,7 +119,7 @@ jobs:
133
119
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
134
120
with :
135
121
upload_url : ${{ steps.create_release.outputs.upload_url }}
136
- asset_path : ./jbr-linux-x64.zip
137
- asset_name : ${{ steps.gen_info .outputs.release_name }}.zip
138
- asset_content_type : application/zip
122
+ asset_path : JetBrainsRuntime/${{ steps.compile.outputs.jbr_image }}
123
+ asset_name : ${{ steps.compile .outputs.jbr_image }}
124
+ asset_content_type : application/gzip
139
125
0 commit comments