Skip to content

Commit b527989

Browse files
使用ayanamist改进的编译工作流及其适配JBR17的patch
1 parent c13f862 commit b527989

File tree

2 files changed

+174
-217
lines changed

2 files changed

+174
-217
lines changed

.github/workflows/jbr-linux-x64.yml

Lines changed: 86 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -2,127 +2,113 @@ name: jbr-linux-x64
22

33
on:
44
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"
1015

1116
jobs:
1217
build:
13-
runs-on: ubuntu-18.04
18+
runs-on: ubuntu-20.04
1419
steps:
1520
- 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"
1763
1864
- name: Init Build Dependencies
1965
env:
2066
DEBIAN_FRONTEND: noninteractive
2167
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
5973
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
6486

6587
- 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
6989
run: |
70-
git config --global core.autocrlf input
71-
git clone -b master --single-branch https://github.com/JetBrains/JetBrainsRuntime.git
7290
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
8692
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
11094
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)"
116102
117103
- name: Create Release
118104
id: create_release
119105
uses: actions/create-release@v1
120106
env:
121107
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
122108
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 }}
126112
draft: false
127113
prerelease: true
128114

@@ -133,7 +119,7 @@ jobs:
133119
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
134120
with:
135121
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
139125

0 commit comments

Comments
 (0)