Skip to content

Commit

Permalink
🐎 ci: Split console builds by os, arch
Browse files Browse the repository at this point in the history
  • Loading branch information
caoccao committed Oct 16, 2024
1 parent 704fb6e commit 5a5317f
Show file tree
Hide file tree
Showing 2 changed files with 88 additions and 76 deletions.
4 changes: 4 additions & 0 deletions .github/workflows/android_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,15 @@ on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
paths-ignore:
- .github/**
- "!.github/workflows/android_build.yml"
- "**.md"
- "docs/**"
- "console/**"
push:
paths-ignore:
- .github/**
- "!.github/workflows/android_build.yml"
- "**.md"
- "docs/**"
- "console/**"
Expand Down
160 changes: 84 additions & 76 deletions .github/workflows/console_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,15 @@ on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
paths-ignore:
- .github/**
- "!.github/workflows/console_build.yml"
- "**.md"
- "docs/**"
- "android/**"
push:
paths-ignore:
- .github/**
- "!.github/workflows/console_build.yml"
- "**.md"
- "docs/**"
- "android/**"
Expand All @@ -22,84 +26,88 @@ env:
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}

jobs:
jar_for_linux_and_windows_x86_64:
name: Jar for Linux and Windows x86_64
runs-on: ubuntu-latest
build_jar:
strategy:
matrix:
include:
- name: Linux x86_64
image: ubuntu-latest
jar_name: linux-x86-64
zip_exclude_files: "*.dll *arm64*.so dylib"
- name: MacOS x86_64
image: macos-13
jar_name: macos-x86-64
zip_exclude_files: "*.dll *.so *arm64*.dylib"
- name: MacOS arm64
image: macos-14
jar_name: macos-arm64
zip_exclude_files: "*.dll *.so *x86_64*.dylib"
- name: Windows x86_64
image: windows-latest
jar_name: windows-x86-64
zip_exclude_files: "*arm64*.dll *.dylib *.so"

name: Build Jar for ${{ matrix.name }}
runs-on: ${{ matrix.image }}

steps:

- name: Checkout the code
uses: actions/checkout@v4

- name: Setup JDK 17
uses: actions/setup-java@v4
with:
distribution: corretto
java-version: 17

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
gradle-version: 8.5

- name: Build the Artifact
run: |
cd console
gradle build --debug
- name: Upload the Artifact
uses: actions/upload-artifact@v4
with:
name: javet-shell-console-linux-windows_x86-64
path: console/build/libs/*.jar

jar_for_macos:
name: Jar for MacOS
runs-on: macos-latest

steps:

- name: Checkout the code
uses: actions/checkout@v4

- name: Setup JDK 17
uses: actions/setup-java@v4
with:
distribution: corretto
java-version: 17

- name: Setup Gradle
uses: gradle/gradle-build-action@v3
with:
gradle-version: 8.5

- name: Build the Artifact
run: |
cd console
gradle build --debug
- name: Upload the Artifact
uses: actions/upload-artifact@v4
with:
name: javet-shell-console-macos
path: console/build/libs/*.jar

docker_image_for_linux_amd64:
name: Docker Image for Linux amd64
- name: Checkout the code
uses: actions/checkout@v4

- name: Setup JDK 17
uses: actions/setup-java@v4
with:
distribution: corretto
java-version: 17

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
gradle-version: 8.5

- name: Build the Artifact
run: |
cd console
gradle build --debug
- name: Remove Binary Files for Linux
uses: edgarrc/action-7z@v1
if: matrix.name == 'Linux x86_64'
with:
args: 7z d build/libs/*.jar ${{ matrix.zip_exclude_files }}

- name: Remove Binary Files for MacOS
if: matrix.name == 'MacOS x86_64' || matrix.name == 'MacOS arm64'
run: |
zip -d build/libs/*.jar ${{ matrix.zip_exclude_files }}
- name: Remove Binary Files for Windows
if: matrix.name == 'Windows x86_64'
run: |
choco install 7zip.install
7z d build/libs/*.jar ${{ matrix.zip_exclude_files }}
- name: Upload the Artifact
uses: actions/upload-artifact@v4
with:
name: javet-shell-console-${{ matrix.jar_name }}
path: console/build/libs/*.jar

build_docker_image:
name: Build Docker Image for Linux x86_64
runs-on: ubuntu-latest

steps:

- name: Checkout the code
uses: actions/checkout@v4

- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Docker Build and Push
run: |
docker build -t ${{ env.DOCKERHUB_USERNAME }}/javet-shell:amd64-latest -f docker/console.Dockerfile .
docker push ${{ env.DOCKERHUB_USERNAME }}/javet-shell:amd64-latest
- name: Checkout the code
uses: actions/checkout@v4

- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Docker Build and Push
run: |
docker build -t ${{ env.DOCKERHUB_USERNAME }}/javet-shell:amd64-latest -f docker/console.Dockerfile .
docker push ${{ env.DOCKERHUB_USERNAME }}/javet-shell:amd64-latest

0 comments on commit 5a5317f

Please sign in to comment.