mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-13 06:47:40 +07:00
IJI-2196 GitHub workflow to build IntelliJ IDEA Community distributions for all supported OS
(cherry picked from commit 30e80f202d89acc6b4846caeba2a166e2675d899) IJ-CR-149323 GitOrigin-RevId: 8e57a8a4356dc6a3ba65706006dc0600e25a759e
This commit is contained in:
committed by
intellij-monorepo-bot
parent
106f8d8d51
commit
a227e0e905
24
.github/actions/build_ide/action.yml
vendored
Normal file
24
.github/actions/build_ide/action.yml
vendored
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
inputs:
|
||||||
|
os:
|
||||||
|
description: 'linux, windows or mac'
|
||||||
|
required: true
|
||||||
|
extension:
|
||||||
|
description: 'tar.gz, exe or sit'
|
||||||
|
required: true
|
||||||
|
runs:
|
||||||
|
using: composite
|
||||||
|
steps:
|
||||||
|
- name: Checkout JetBrains/android
|
||||||
|
uses: actions/checkout@v4.2.2
|
||||||
|
with:
|
||||||
|
repository: JetBrains/android
|
||||||
|
path: android
|
||||||
|
ref: ${{github.ref}}
|
||||||
|
- name: Build environment
|
||||||
|
shell: bash
|
||||||
|
# language=bash
|
||||||
|
run: docker build . --target build_env --tag build_env
|
||||||
|
- name: Build .${{inputs.extension}}
|
||||||
|
shell: bash
|
||||||
|
# language=bash
|
||||||
|
run: docker run --rm --user "$(id -u)" --volume ${PWD}:/community build_env -Dintellij.build.target.os=${{inputs.os}}
|
||||||
43
.github/actions/upload_ide/action.yml
vendored
Normal file
43
.github/actions/upload_ide/action.yml
vendored
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
inputs:
|
||||||
|
os:
|
||||||
|
description: 'linux, windows or mac'
|
||||||
|
required: true
|
||||||
|
extension:
|
||||||
|
description: 'tar.gz, exe, sit or dmg'
|
||||||
|
required: true
|
||||||
|
artifacts_dir:
|
||||||
|
description: 'IDE artifacts output directory'
|
||||||
|
required: true
|
||||||
|
runs:
|
||||||
|
using: composite
|
||||||
|
steps:
|
||||||
|
- name: Generate checksums
|
||||||
|
shell: bash
|
||||||
|
# language=bash
|
||||||
|
run: |
|
||||||
|
function checksum() {
|
||||||
|
file="$1"
|
||||||
|
# The output is a line with checksum,
|
||||||
|
# a character indicating type ('*' for --binary, ' ' for --text),
|
||||||
|
# and the supplied file argument
|
||||||
|
if [ "$(uname)" == Darwin ]; then
|
||||||
|
shasum --algorithm 256 --binary "$file"
|
||||||
|
else
|
||||||
|
sha256sum --binary "$file"
|
||||||
|
fi > "$file.sha256"
|
||||||
|
}
|
||||||
|
cd "${{inputs.artifacts_dir}}"
|
||||||
|
for it in *.${{inputs.extension}}; do checksum "$it"; done
|
||||||
|
if ls *.${{inputs.extension}}.spdx.json; then
|
||||||
|
for it in *.${{inputs.extension}}.spdx.json; do checksum "$it"; done
|
||||||
|
fi
|
||||||
|
- name: Upload .${{inputs.extension}}
|
||||||
|
uses: actions/upload-artifact@v4.4.3
|
||||||
|
with:
|
||||||
|
name: ${{inputs.os}}-${{inputs.extension}}-unsigned
|
||||||
|
if-no-files-found: 'error'
|
||||||
|
retention-days: 1
|
||||||
|
path: |
|
||||||
|
${{inputs.artifacts_dir}}/*.${{inputs.extension}}
|
||||||
|
${{inputs.artifacts_dir}}/*.spdx.json
|
||||||
|
${{inputs.artifacts_dir}}/*.sha256
|
||||||
81
.github/workflows/IntelliJ_IDEA.yml
vendored
Normal file
81
.github/workflows/IntelliJ_IDEA.yml
vendored
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
name: IntelliJ IDEA
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
# daily at 4AM for the master branch
|
||||||
|
- cron: '0 4 * * *'
|
||||||
|
push:
|
||||||
|
# for each release
|
||||||
|
tags:
|
||||||
|
- 'idea/*'
|
||||||
|
env:
|
||||||
|
artifacts_dir: 'out/idea-ce/artifacts'
|
||||||
|
jobs:
|
||||||
|
# a single job for all OSes cannot be used due to free disk space lack on runners
|
||||||
|
build-linux:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4.2.2
|
||||||
|
- uses: ./.github/actions/build_ide
|
||||||
|
with:
|
||||||
|
os: linux
|
||||||
|
extension: tar.gz
|
||||||
|
- uses: ./.github/actions/upload_ide
|
||||||
|
with:
|
||||||
|
os: linux
|
||||||
|
extension: tar.gz
|
||||||
|
artifacts_dir: ${{env.artifacts_dir}}
|
||||||
|
build-windows:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4.2.2
|
||||||
|
- uses: ./.github/actions/build_ide
|
||||||
|
with:
|
||||||
|
os: windows
|
||||||
|
extension: exe
|
||||||
|
- uses: ./.github/actions/upload_ide
|
||||||
|
with:
|
||||||
|
os: windows
|
||||||
|
extension: exe
|
||||||
|
artifacts_dir: ${{env.artifacts_dir}}
|
||||||
|
build-macos:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4.2.2
|
||||||
|
- uses: ./.github/actions/build_ide
|
||||||
|
with:
|
||||||
|
os: mac
|
||||||
|
extension: sit
|
||||||
|
- uses: ./.github/actions/upload_ide
|
||||||
|
with:
|
||||||
|
os: mac
|
||||||
|
extension: sit
|
||||||
|
artifacts_dir: ${{env.artifacts_dir}}
|
||||||
|
- name: Upload .dmg build scripts
|
||||||
|
uses: actions/upload-artifact@v4.4.3
|
||||||
|
with:
|
||||||
|
name: dmg-build-scripts
|
||||||
|
if-no-files-found: 'error'
|
||||||
|
path: ${{env.artifacts_dir}}/macos-dmg-build/
|
||||||
|
build-dmg:
|
||||||
|
runs-on: macos-latest
|
||||||
|
needs: build-macos
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4.2.2
|
||||||
|
- name: Download .dmg build scripts
|
||||||
|
uses: actions/download-artifact@v4.1.8
|
||||||
|
with:
|
||||||
|
name: dmg-build-scripts
|
||||||
|
- name: Download .sit
|
||||||
|
uses: actions/download-artifact@v4.1.8
|
||||||
|
with:
|
||||||
|
name: mac-sit-unsigned
|
||||||
|
- name: Build .dmg
|
||||||
|
shell: bash
|
||||||
|
# language=bash
|
||||||
|
run: /bin/bash ./build.sh
|
||||||
|
- name: Upload .dmg
|
||||||
|
uses: ./.github/actions/upload_ide
|
||||||
|
with:
|
||||||
|
os: mac
|
||||||
|
extension: dmg
|
||||||
|
artifacts_dir: .
|
||||||
@@ -17,16 +17,16 @@ VOLUME /root/.m2
|
|||||||
# Community sources root
|
# Community sources root
|
||||||
VOLUME /community
|
VOLUME /community
|
||||||
WORKDIR /community
|
WORKDIR /community
|
||||||
ENTRYPOINT ["/bin/sh", "-c"]
|
ENTRYPOINT ["/bin/sh", "./installers.cmd"]
|
||||||
CMD ["./installers.cmd"]
|
|
||||||
|
|
||||||
FROM build_env AS build_env_with_docker
|
FROM build_env AS build_env_with_docker
|
||||||
LABEL Description="Community Build Environment with Docker (required to build additional tools like Repair utility)"
|
LABEL Description="Community Build Environment with Docker (required to build Snapcraft distributions)"
|
||||||
RUN apt-get update && \
|
RUN apt-get update && \
|
||||||
apt-get install -y docker.io \
|
apt-get install -y docker.io \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
COPY --from=docker/buildx-bin:latest /buildx /usr/libexec/docker/cli-plugins/docker-buildx
|
COPY --from=docker/buildx-bin:latest /buildx /usr/libexec/docker/cli-plugins/docker-buildx
|
||||||
RUN docker buildx version
|
RUN docker buildx version
|
||||||
# Docker socket
|
# Docker daemon socket is expected to be mounted with --volume /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
# and the container should be run as the root user to be able to connect to the socket
|
||||||
VOLUME /var/run/docker.sock
|
VOLUME /var/run/docker.sock
|
||||||
CMD ["docker system info && ./installers.cmd"]
|
CMD ["docker system info && ./installers.cmd"]
|
||||||
|
|||||||
Reference in New Issue
Block a user