CI / Build Java (push) Has been cancelled
CI / Build Native (macos-latest - macos) (push) Has been cancelled
CI / Build Native (ubuntu-latest - linux) (push) Has been cancelled
CI / Build Native (ubuntu-latest - windows) (push) Has been cancelled
CI / Archive Natives (push) Has been cancelled
CI / Update Binaries (push) Has been cancelled
CI / Release (push) Has been cancelled
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 5. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
203 lines
5.7 KiB
YAML
203 lines
5.7 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
tags:
|
|
- v*
|
|
pull_request:
|
|
branches:
|
|
- main
|
|
|
|
jobs:
|
|
build-java:
|
|
name: Build Java
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout Repository
|
|
uses: actions/checkout@v5
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Setup Java
|
|
uses: actions/setup-java@v5
|
|
with:
|
|
distribution: liberica
|
|
java-version: |
|
|
8
|
|
17
|
|
|
|
- name: Setup Gradle
|
|
uses: gradle/actions/setup-gradle@v5
|
|
|
|
- name: Build
|
|
run: ./gradlew buildAll
|
|
|
|
# This helps to upload only jar files into the build artifact
|
|
- name: Copy Build Results to Temp
|
|
run: |
|
|
mkdir -p tmp/
|
|
cp imgui-app/build/libs/*.jar tmp/
|
|
cp imgui-binding/build/libs/*.jar tmp/
|
|
cp imgui-lwjgl3/build/libs/*.jar tmp/
|
|
|
|
- name: Upload Artifacts
|
|
uses: actions/upload-artifact@v5
|
|
with:
|
|
name: java-libraries
|
|
path: tmp/*.jar
|
|
|
|
build-natives:
|
|
name: Build Native (${{ matrix.target.os }} - ${{ matrix.target.type }})
|
|
needs: build-java
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
target:
|
|
- os: ubuntu-latest
|
|
type: linux
|
|
- os: ubuntu-latest
|
|
type: windows
|
|
- os: macos-latest
|
|
type: macos
|
|
runs-on: ${{ matrix.target.os }}
|
|
steps:
|
|
- name: Checkout Repository and Submodules
|
|
uses: actions/checkout@v5
|
|
with:
|
|
fetch-depth: 0
|
|
submodules: recursive
|
|
|
|
- name: Setup Java
|
|
uses: actions/setup-java@v5
|
|
with:
|
|
distribution: liberica
|
|
java-version: |
|
|
8
|
|
17
|
|
|
|
- name: Setup Gradle
|
|
uses: gradle/actions/setup-gradle@v5
|
|
|
|
- name: Install Dependencies (for Windows build)
|
|
if: matrix.target.type == 'windows'
|
|
run: sudo apt install mingw-w64
|
|
|
|
- name: Build
|
|
run: |
|
|
chmod +x buildSrc/scripts/build.sh
|
|
buildSrc/scripts/build.sh ${{ matrix.target.type }}
|
|
|
|
- name: Upload Artifacts
|
|
uses: actions/upload-artifact@v5
|
|
with:
|
|
name: native-library-${{ matrix.target.type }}
|
|
path: /tmp/imgui/dst/
|
|
|
|
# This required to pack all native libraries into single archive
|
|
archive-natives:
|
|
name: Archive Natives
|
|
runs-on: ubuntu-latest
|
|
needs: build-natives
|
|
steps:
|
|
- name: Merge Artifacts
|
|
uses: actions/upload-artifact/merge@v5
|
|
with:
|
|
name: native-libraries
|
|
pattern: native-library-*
|
|
|
|
update-bin:
|
|
name: Update Binaries
|
|
if: github.ref == 'refs/heads/main' && !github.event.repository.fork # runs only on the main branch and not forks (sometimes people do PRs from the main branch)
|
|
runs-on: ubuntu-latest
|
|
needs: archive-natives
|
|
steps:
|
|
- name: Checkout Repository
|
|
uses: actions/checkout@v5
|
|
|
|
- name: Download Artifacts
|
|
uses: actions/download-artifact@v6
|
|
with:
|
|
path: /tmp/artifacts
|
|
|
|
# Job compares sha1 hash of the imgui-binding/src/main directory.
|
|
# If there are any changes, then we update native libraries.
|
|
# We do not rely on git in terms of comparing binaries,
|
|
# since DLL files will always have versioning difference.
|
|
- name: Compare Binding Hash
|
|
id: cmp-binding-hash
|
|
continue-on-error: true
|
|
run: |
|
|
touch bin/binding.sha1
|
|
cat bin/binding.sha1 > /tmp/hash
|
|
find imgui-binding/src/main -type f -print0 | sort -z | xargs -0 sha1sum > bin/binding.sha1
|
|
find imgui-binding/src/generated -type f -print0 | sort -z | xargs -0 sha1sum >> bin/binding.sha1
|
|
find include -type f -print0 | sort -z | xargs -0 sha1sum >> bin/binding.sha1
|
|
cmp /tmp/hash bin/binding.sha1
|
|
|
|
- name: Update
|
|
if: steps.cmp-binding-hash.outcome != 'success'
|
|
run: mv /tmp/artifacts/native-libraries/* bin/
|
|
|
|
- name: Commit
|
|
if: steps.cmp-binding-hash.outcome != 'success'
|
|
uses: EndBug/add-and-commit@v9
|
|
with:
|
|
default_author: github_actions
|
|
message: '[ci skip] update native binaries'
|
|
|
|
release:
|
|
name: Release
|
|
if: startsWith(github.ref, 'refs/tags/v') # if tag starts with "v"
|
|
runs-on: ubuntu-latest
|
|
needs: [ build-java, archive-natives ]
|
|
steps:
|
|
- name: Checkout Repository
|
|
uses: actions/checkout@v5
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Setup Java
|
|
uses: actions/setup-java@v5
|
|
with:
|
|
distribution: liberica
|
|
java-version: |
|
|
8
|
|
17
|
|
|
|
- name: Setup Gradle
|
|
uses: gradle/actions/setup-gradle@v5
|
|
|
|
- name: Download Artifacts
|
|
uses: actions/download-artifact@v6
|
|
with:
|
|
path: out/artifacts
|
|
|
|
- name: Zip Artifacts
|
|
run: |
|
|
mkdir out/archives
|
|
zip -rj out/archives/native-libraries out/artifacts/native-libraries
|
|
zip -rj out/archives/java-libraries out/artifacts/java-libraries
|
|
|
|
- name: Publish
|
|
env:
|
|
NEXUS_UPD_ID: ${{ secrets.RELEASE_NEXUS_UPD_ID }}
|
|
NEXUS_UPD_PASS: ${{ secrets.RELEASE_NEXUS_UPD_PASS }}
|
|
SIGNING_KEY_ID: ${{ secrets.RELEASE_SIGNING_KEY_ID }}
|
|
SIGNING_KEY: ${{ secrets.RELEASE_SIGNING_KEY }}
|
|
SIGNING_KEY_PASS: ${{ secrets.RELEASE_SIGNING_KEY_PASS }}
|
|
run: |
|
|
chmod +x ./buildSrc/scripts/publish.sh
|
|
buildSrc/scripts/publish.sh
|
|
|
|
- name: Release
|
|
uses: softprops/action-gh-release@v2
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
draft: true
|
|
prerelease: false
|
|
files: |
|
|
out/archives/**
|