nuget: Build native libraries in jobs
This commit is contained in:
482
.github/workflows/Nuget-publishing.yml
vendored
482
.github/workflows/Nuget-publishing.yml
vendored
@@ -1,11 +1,17 @@
|
|||||||
name: Nuget 📦 Distribution
|
name: Nuget 📦 Distribution
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_run:
|
push:
|
||||||
workflows:
|
paths-ignore:
|
||||||
- "Build UC2"
|
- ".gitignore"
|
||||||
types:
|
- "docs/**"
|
||||||
- completed
|
- "README"
|
||||||
|
- "CREDITS.TXT"
|
||||||
|
- "COPYING_GLIB"
|
||||||
|
- "COPYING.LGPL2"
|
||||||
|
- "AUTHORS.TXT"
|
||||||
|
- "CHANGELOG"
|
||||||
|
- "COPYING"
|
||||||
branches:
|
branches:
|
||||||
- dev
|
- dev
|
||||||
- master
|
- master
|
||||||
@@ -14,128 +20,406 @@ permissions:
|
|||||||
packages: write
|
packages: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
publish:
|
Windows:
|
||||||
if: ${{ github.event.workflow_run.conclusion == 'success' }}
|
runs-on: ${{ matrix.config.os }}
|
||||||
runs-on: ubuntu-latest
|
name: ${{ matrix.config.name }}
|
||||||
|
strategy:
|
||||||
|
fail-fast: true
|
||||||
|
matrix:
|
||||||
|
config:
|
||||||
|
- {
|
||||||
|
os: windows-2019,
|
||||||
|
arch: x64,
|
||||||
|
python-arch: x64,
|
||||||
|
python-ver: '3.8',
|
||||||
|
name: 'windows-x64 MSVC 64bit shared',
|
||||||
|
msvc-arch: x64,
|
||||||
|
artifact: 'windows_msvc64_shared.7z',
|
||||||
|
shared: 'yes',
|
||||||
|
build_type: 'Release',
|
||||||
|
archiver: '7z a',
|
||||||
|
generators: 'Visual Studio 16 2019'
|
||||||
|
}
|
||||||
|
- {
|
||||||
|
os: windows-2019,
|
||||||
|
arch: x86,
|
||||||
|
python-arch: x86,
|
||||||
|
python-ver: '3.8',
|
||||||
|
name: 'windows-x86 MSVC 32bit shared',
|
||||||
|
msvc-arch: x86,
|
||||||
|
artifact: 'windows_msvc32_shared.7z',
|
||||||
|
shared: 'yes',
|
||||||
|
build_type: 'Release',
|
||||||
|
archiver: '7z a',
|
||||||
|
generators: 'Visual Studio 16 2019'
|
||||||
|
}
|
||||||
|
compiler: [ gcc ]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
defaults:
|
- name: '🛠️ Win MSVC 64 setup'
|
||||||
run:
|
if: contains(matrix.config.name, 'MSVC 64')
|
||||||
working-directory: bindings/dotnet/UnicornEngine
|
uses: microsoft/setup-msbuild@v1
|
||||||
|
|
||||||
|
- name: '🛠️ Win MSVC 64 dev cmd setup'
|
||||||
|
if: contains(matrix.config.name, 'MSVC 64')
|
||||||
|
uses: ilammy/msvc-dev-cmd@v1
|
||||||
|
with:
|
||||||
|
arch: x64
|
||||||
|
|
||||||
|
- name: '🚧 Win MSVC 64 build'
|
||||||
|
if: contains(matrix.config.name, 'MSVC 64')
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
choco install ninja cmake
|
||||||
|
ninja --version
|
||||||
|
cmake --version
|
||||||
|
mkdir build
|
||||||
|
cmake \
|
||||||
|
-S . \
|
||||||
|
-B . \
|
||||||
|
-DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \
|
||||||
|
-G "${{ matrix.config.generators }}" \
|
||||||
|
-DCMAKE_INSTALL_PREFIX:PATH=instdir \
|
||||||
|
-DBUILD_SHARED_LIBS=${{ matrix.config.shared }}
|
||||||
|
cmake --build . --config ${{ matrix.config.build_type }}
|
||||||
|
cmake --install . --strip --config ${{ matrix.config.build_type }}
|
||||||
|
ctest -VV -C ${{ matrix.config.build_type }}
|
||||||
|
mv Release instdir
|
||||||
|
|
||||||
|
- name: '🛠️ Win MSVC 32 setup'
|
||||||
|
if: contains(matrix.config.name, 'MSVC 32')
|
||||||
|
uses: ilammy/msvc-dev-cmd@v1
|
||||||
|
with:
|
||||||
|
arch: x86
|
||||||
|
|
||||||
|
- name: '🚧 Win MSVC 32 build'
|
||||||
|
if: contains(matrix.config.name, 'MSVC 32')
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
choco install ninja cmake
|
||||||
|
ninja --version
|
||||||
|
cmake --version
|
||||||
|
mkdir build
|
||||||
|
cmake \
|
||||||
|
-S . \
|
||||||
|
-B . \
|
||||||
|
-A "win32" \
|
||||||
|
-DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \
|
||||||
|
-G "${{ matrix.config.generators }}" \
|
||||||
|
-DCMAKE_INSTALL_PREFIX:PATH=instdir \
|
||||||
|
-DBUILD_SHARED_LIBS=${{ matrix.config.shared }}
|
||||||
|
cmake --build . --config ${{ matrix.config.build_type }}
|
||||||
|
cmake --install . --strip --config ${{ matrix.config.build_type }}
|
||||||
|
ctest -VV -C ${{ matrix.config.build_type }}
|
||||||
|
mv Release instdir
|
||||||
|
|
||||||
|
- name: '📦 Pack artifact'
|
||||||
|
if: always()
|
||||||
|
shell: bash
|
||||||
|
working-directory: instdir
|
||||||
|
run: |
|
||||||
|
ls -laR
|
||||||
|
${{ matrix.config.archiver }} ../${{ matrix.config.artifact }} . ../test*
|
||||||
|
|
||||||
|
- name: '📤 Upload artifact'
|
||||||
|
if: always()
|
||||||
|
uses: actions/upload-artifact@v1
|
||||||
|
with:
|
||||||
|
path: ./${{ matrix.config.artifact }}
|
||||||
|
name: ${{ matrix.config.artifact }}
|
||||||
|
|
||||||
|
Macos:
|
||||||
|
runs-on: ${{ matrix.config.os }}
|
||||||
|
name: ${{ matrix.config.name }} - ${{ matrix.compiler }}
|
||||||
|
strategy:
|
||||||
|
fail-fast: true
|
||||||
|
matrix:
|
||||||
|
config:
|
||||||
|
- {
|
||||||
|
os: macos-latest,
|
||||||
|
arch: x64,
|
||||||
|
python-arch: x64,
|
||||||
|
python-ver: '3.8',
|
||||||
|
name: 'macos-x64 cmake shared',
|
||||||
|
shared: 'yes',
|
||||||
|
artifact: 'macos-cmake-shared-x64.7z',
|
||||||
|
build_type: 'Release',
|
||||||
|
archiver: '7za a',
|
||||||
|
generators: 'Ninja'
|
||||||
|
}
|
||||||
|
compiler: [ gcc ]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: '🚧 Mac build'
|
||||||
|
if: contains(matrix.config.name, 'macos-x64')
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
brew install p7zip cmake ninja
|
||||||
|
ninja --version
|
||||||
|
cmake --version
|
||||||
|
mkdir build
|
||||||
|
mkdir instdir
|
||||||
|
cmake \
|
||||||
|
-S . \
|
||||||
|
-B . \
|
||||||
|
-DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \
|
||||||
|
-G "${{ matrix.config.generators }}" \
|
||||||
|
-DCMAKE_INSTALL_PREFIX:PATH=instdir \
|
||||||
|
-DBUILD_SHARED_LIBS=${{ matrix.config.shared }}
|
||||||
|
cmake --build . --config ${{ matrix.config.build_type }}
|
||||||
|
cmake --install . --strip
|
||||||
|
ctest -VV -C ${{ matrix.config.build_type }}
|
||||||
|
|
||||||
|
- name: '📦 Pack artifact'
|
||||||
|
if: always()
|
||||||
|
shell: bash
|
||||||
|
working-directory: instdir
|
||||||
|
run: |
|
||||||
|
ls -laR
|
||||||
|
${{ matrix.config.archiver }} ../${{ matrix.config.artifact }} . ../test*
|
||||||
|
|
||||||
|
- name: '📤 Upload artifact'
|
||||||
|
if: always()
|
||||||
|
uses: actions/upload-artifact@v1
|
||||||
|
with:
|
||||||
|
path: ./${{ matrix.config.artifact }}
|
||||||
|
name: ${{ matrix.config.artifact }}
|
||||||
|
|
||||||
|
Linux:
|
||||||
|
runs-on: ${{ matrix.config.os }}
|
||||||
|
name: ${{ matrix.config.name }} - ${{ matrix.compiler }}
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
config:
|
||||||
|
- {
|
||||||
|
os: ubuntu-latest,
|
||||||
|
arch: x64,
|
||||||
|
python-arch: x64,
|
||||||
|
python-ver: '3.8',
|
||||||
|
name: 'ubuntu-x64 cmake shared',
|
||||||
|
shared: 'yes',
|
||||||
|
artifact: 'ubuntu-cmake-shared-x64.7z',
|
||||||
|
build_type: 'Release',
|
||||||
|
archiver: '7z a',
|
||||||
|
generators: 'Ninja'
|
||||||
|
}
|
||||||
|
- {
|
||||||
|
os: ubuntu-latest,
|
||||||
|
arch: x86,
|
||||||
|
python-arch: x86,
|
||||||
|
python-ver: '3.8',
|
||||||
|
name: 'ubuntu-x86 cmake shared',
|
||||||
|
shared: 'yes',
|
||||||
|
artifact: 'ubuntu-cmake-shared-x86.7z',
|
||||||
|
build_type: 'Release',
|
||||||
|
archiver: '7z a',
|
||||||
|
generators: 'Ninja'
|
||||||
|
}
|
||||||
|
- {
|
||||||
|
os: ubuntu-latest,
|
||||||
|
arch: aarch64,
|
||||||
|
python-arch: aarch64,
|
||||||
|
python-ver: '3.8',
|
||||||
|
name: 'ubuntu-aarch64 cmake',
|
||||||
|
artifact: 'ubuntu-cmake-aarch64.7z',
|
||||||
|
build_type: 'Release',
|
||||||
|
archiver: '7z a',
|
||||||
|
generators: 'Ninja',
|
||||||
|
distro: ubuntu20.04
|
||||||
|
}
|
||||||
|
- {
|
||||||
|
os: ubuntu-latest,
|
||||||
|
arch: ppc64le,
|
||||||
|
python-arch: ppc,
|
||||||
|
python-ver: '3.8',
|
||||||
|
name: 'ubuntu-ppc64le cmake',
|
||||||
|
artifact: 'ubuntu-cmake-ppc64le.7z',
|
||||||
|
build_type: 'Release',
|
||||||
|
archiver: '7z a',
|
||||||
|
generators: 'Ninja',
|
||||||
|
distro: ubuntu20.04
|
||||||
|
}
|
||||||
|
compiler: [ gcc ]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
|
- name: '🚧 Linux x64/x86 build'
|
||||||
|
if: contains(matrix.config.arch, 'x64') || contains(matrix.config.arch, 'x86')
|
||||||
|
shell: 'script -q -e -c "bash {0}"'
|
||||||
|
run: |
|
||||||
|
if [ ${{ matrix.config.arch }} == 'x64' ]; then
|
||||||
|
sudo apt install -q -y libcmocka-dev ninja-build
|
||||||
|
else
|
||||||
|
export CFLAGS="-m32" LDFLAGS="-m32" LDFLAGS_STATIC="-m32" UNICORN_QEMU_FLAGS="--cpu=i386"
|
||||||
|
sudo dpkg --add-architecture i386
|
||||||
|
sudo apt install -q -y lib32ncurses-dev lib32z1-dev lib32gcc-9-dev libc6-dev-i386 gcc-multilib \
|
||||||
|
libcmocka-dev:i386 libcmocka0:i386 libc6:i386 libgcc-s1:i386 ninja-build
|
||||||
|
fi
|
||||||
|
mkdir build
|
||||||
|
mkdir instdir
|
||||||
|
cmake \
|
||||||
|
-S . \
|
||||||
|
-B . \
|
||||||
|
-DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \
|
||||||
|
-G "${{ matrix.config.generators }}" \
|
||||||
|
-DCMAKE_INSTALL_PREFIX:PATH=instdir \
|
||||||
|
-DBUILD_SHARED_LIBS=${{ matrix.config.shared }}
|
||||||
|
cmake --build . --config ${{ matrix.config.build_type }}
|
||||||
|
cmake --install . --strip
|
||||||
|
ctest -VV -C ${{ matrix.config.build_type }}
|
||||||
|
|
||||||
|
- name: '🚧 Linux ppc64le/aarch64 build'
|
||||||
|
if: contains(matrix.config.arch, 'ppc64le') || contains(matrix.config.arch, 'aarch64')
|
||||||
|
uses: uraimo/run-on-arch-action@v2.0.5
|
||||||
|
with:
|
||||||
|
arch: ${{ matrix.config.arch }}
|
||||||
|
distro: ${{ matrix.config.distro }}
|
||||||
|
setup: |
|
||||||
|
mkdir -p "${PWD}/instdir"
|
||||||
|
dockerRunArgs: |
|
||||||
|
--volume "${PWD}/instdir:/instdir"
|
||||||
|
shell: /bin/sh
|
||||||
|
install: |
|
||||||
|
apt-get update -q -y
|
||||||
|
apt-get install -q -y git cmake build-essential automake libcmocka-dev pkg-config ${{ matrix.compiler }} ninja-build
|
||||||
|
run: |
|
||||||
|
mkdir build
|
||||||
|
cmake \
|
||||||
|
-S . \
|
||||||
|
-B . \
|
||||||
|
-DCMAKE_BUILD_TYPE=${{ matrix.config.build_type }} \
|
||||||
|
-G "${{ matrix.config.generators }}" \
|
||||||
|
-DCMAKE_INSTALL_PREFIX:PATH=/instdir
|
||||||
|
cmake --build . --config ${{ matrix.config.build_type }}
|
||||||
|
cmake --install . --strip
|
||||||
|
ctest -VV -C ${{ matrix.config.build_type }}
|
||||||
|
|
||||||
|
- name: '📦 Pack artifact'
|
||||||
|
if: always()
|
||||||
|
shell: bash
|
||||||
|
working-directory: instdir
|
||||||
|
run: |
|
||||||
|
ls -laR
|
||||||
|
${{ matrix.config.archiver }} ../${{ matrix.config.artifact }} . ../test*
|
||||||
|
|
||||||
|
- name: '📤 Upload artifact'
|
||||||
|
if: always()
|
||||||
|
uses: actions/upload-artifact@v1
|
||||||
|
with:
|
||||||
|
path: ./${{ matrix.config.artifact }}
|
||||||
|
name: ${{ matrix.config.artifact }}
|
||||||
|
|
||||||
|
publish:
|
||||||
|
needs: ["Windows", "Macos", "Linux"]
|
||||||
|
if: ${{ needs.Windows.result == 'success' && needs.Macos.result == 'success' && needs.Linux.result == 'success' }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Download artifacts
|
||||||
|
uses: actions/download-artifact@v3
|
||||||
with:
|
with:
|
||||||
ref: ${{ github.event.workflow_run.head_branch }}
|
path: artifacts
|
||||||
|
|
||||||
- name: Download and extract artifacts
|
- name: Extract artifacts
|
||||||
uses: actions/github-script@v6
|
shell: python
|
||||||
with:
|
run: |
|
||||||
script: |
|
import subprocess
|
||||||
let fs = require('fs');
|
import os
|
||||||
const options = {};
|
|
||||||
options.cwd = './bindings/dotnet/UnicornEngine';
|
|
||||||
|
|
||||||
let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
|
artifactPath = os.path.join(os.getcwd(), "artifacts")
|
||||||
owner: context.repo.owner,
|
bindingsPath = os.path.join(os.getcwd(), "bindings", "dotnet", "UnicornEngine")
|
||||||
repo: context.repo.repo,
|
|
||||||
run_id: context.payload.workflow_run.id,
|
|
||||||
});
|
|
||||||
|
|
||||||
let sourceDir = "";
|
ARTIFACT_CONFIG = {
|
||||||
let sourceFile = "";
|
"ubuntu-cmake-aarch64.7z": {
|
||||||
let destDir = "";
|
"sourceDir": "lib/",
|
||||||
let destFile = "";
|
"sourceFile": "libunicorn.so.*",
|
||||||
var output = {};
|
"destDir": "runtimes/linux-arm64/native",
|
||||||
for (const artifact of allArtifacts.data.artifacts) {
|
"destFile": "libunicorn.so"
|
||||||
switch(artifact.name) {
|
},
|
||||||
case 'ubuntu-cmake-aarch64.7z':
|
"ubuntu-cmake-ppc64le.7z": {
|
||||||
sourceDir = "lib/";
|
"sourceDir": "lib/",
|
||||||
sourceFile = "libunicorn.so.*";
|
"sourceFile": "libunicorn.so.*",
|
||||||
destDir = "runtimes/linux-arm64/native";
|
"destDir": "runtimes/linux-ppc64le/native",
|
||||||
destFile = "libunicorn.so";
|
"destFile": "libunicorn.so"
|
||||||
break;
|
},
|
||||||
case 'ubuntu-cmake-ppc64le.7z':
|
"ubuntu-cmake-shared-x86.7z": {
|
||||||
sourceDir = "lib/";
|
"sourceDir": "lib/",
|
||||||
sourceFile = "libunicorn.so.*";
|
"sourceFile": "libunicorn.so.*",
|
||||||
destDir = "runtimes/linux-ppc64le/native";
|
"destDir": "runtimes/linux-x64/native",
|
||||||
destFile = "libunicorn.so";
|
"destFile": "libunicorn.so"
|
||||||
break;
|
},
|
||||||
case 'ubuntu-cmake-shared-x64.7z':
|
"macos-cmake-shared-x64.7z": {
|
||||||
sourceDir = "lib/";
|
"sourceDir": "lib/",
|
||||||
sourceFile = "libunicorn.so.*";
|
"sourceFile": "libunicorn.*.dylib",
|
||||||
destDir = "runtimes/linux-x64/native";
|
"destDir": "runtimes/osx-x64/native",
|
||||||
destFile = "libunicorn.so";
|
"destFile": "libunicorn.dylib"
|
||||||
break;
|
},
|
||||||
case 'ubuntu-cmake-shared-x86.7z':
|
"windows_msvc64_shared.7z": {
|
||||||
sourceDir = "lib/";
|
"sourceDir": "",
|
||||||
sourceFile = "libunicorn.so.*";
|
"sourceFile": "unicorn.dll",
|
||||||
destDir = "runtimes/linux-x86/native";
|
"destDir": "runtimes/win-x64/native",
|
||||||
destFile = "libunicorn.so";
|
"destFile": "unicorn.dll"
|
||||||
break;
|
},
|
||||||
case 'macos-cmake-shared-x64.7z':
|
"windows_msvc32_shared.7z": {
|
||||||
sourceDir = "lib/";
|
"sourceDir": "",
|
||||||
sourceFile = "libunicorn.*.dylib";
|
"sourceFile": "unicorn.dll",
|
||||||
destDir = "runtimes/osx-x64/native";
|
"destDir": "runtimes/win-x86/native",
|
||||||
destFile = "libunicorn.dylib";
|
"destFile": "unicorn.dll"
|
||||||
break;
|
|
||||||
case 'windows_msvc64_shared.7z':
|
|
||||||
sourceDir = "";
|
|
||||||
sourceFile = "unicorn.dll";
|
|
||||||
destDir = "runtimes/win-x64/native";
|
|
||||||
destFile = "unicorn.dll";
|
|
||||||
break;
|
|
||||||
case 'windows_msvc32_shared.7z':
|
|
||||||
sourceDir = "";
|
|
||||||
sourceFile = "unicorn.dll";
|
|
||||||
destDir = "runtimes/win-x86/native";
|
|
||||||
destFile = "unicorn.dll";
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
console.log(`Creating destination directory: ${destDir}`);
|
|
||||||
await exec.exec("mkdir", ["-p", destDir], options);
|
|
||||||
|
|
||||||
console.log(`Downloading artifact: ${artifact.name}.zip`);
|
|
||||||
let download = await github.rest.actions.downloadArtifact({
|
|
||||||
owner: context.repo.owner,
|
|
||||||
repo: context.repo.repo,
|
|
||||||
artifact_id: artifact.id,
|
|
||||||
archive_format: 'zip',
|
|
||||||
});
|
|
||||||
fs.writeFileSync(`/home/runner/${artifact.name}.zip`, Buffer.from(download.data));
|
|
||||||
|
|
||||||
console.log(`Unzipping: /home/runner/${artifact.name}.zip`);
|
|
||||||
await exec.exec("unzip", [`/home/runner/${artifact.name}.zip`, "-d", "/home/runner/"]);
|
|
||||||
console.log(`Extracting library from 7z file to: ${destDir}/${sourceFile}`);
|
|
||||||
await exec.exec("7z", ["e", `-o${destDir}/`, `/home/runner/${artifact.name}`, `${sourceDir}${sourceFile}`], options);
|
|
||||||
if (sourceFile != destFile) {
|
|
||||||
output = await exec.getExecOutput("ls", [destDir], options);
|
|
||||||
sourceFile = output.stdout.trim();
|
|
||||||
console.log(`Renaming ${sourceFile} to ${destFile}`);
|
|
||||||
await exec.exec("mv", [`${destDir}/${sourceFile}`, `${destDir}/${destFile}`], options);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(os.listdir(artifactPath)) < len(ARTIFACT_CONFIG.keys()):
|
||||||
|
print("Some artifacts are missing. Aborting.")
|
||||||
|
exit(1)
|
||||||
|
|
||||||
|
for artifact in os.listdir(artifactPath):
|
||||||
|
if artifact in ARTIFACT_CONFIG.keys():
|
||||||
|
print("Working on:", artifact)
|
||||||
|
config = ARTIFACT_CONFIG[artifact]
|
||||||
|
destDir = os.path.join(bindingsPath, config["destDir"])
|
||||||
|
print("Creating dir:", destDir)
|
||||||
|
os.makedirs(destDir, exist_ok=True)
|
||||||
|
|
||||||
|
print(f"Extracting library from 7z file to: {config['destDir']}/{config['sourceFile']}")
|
||||||
|
result = subprocess.run(["7z", "e", f"-o{destDir}/", os.path.join(artifactPath, artifact), f"{config['sourceDir']}{config['sourceFile']}"])
|
||||||
|
result.check_returncode()
|
||||||
|
|
||||||
|
if config["sourceFile"] != config["destFile"]:
|
||||||
|
output = subprocess.run(["ls", destDir], stdout=subprocess.PIPE)
|
||||||
|
sourceFile = output.stdout.decode().strip()
|
||||||
|
print(f"Renaming {sourceFile} to {config['destFile']}")
|
||||||
|
os.rename(os.path.join(destDir, sourceFile), os.path.join(destDir, config["destFile"]))
|
||||||
|
|
||||||
|
print("Done!")
|
||||||
|
|
||||||
- name: Get short sha
|
- name: Get short sha
|
||||||
id: git_short_sha
|
id: git_short_sha
|
||||||
run: echo "result=$(git rev-parse --short "${{ github.event.workflow_run.head_sha }}")" >> $GITHUB_OUTPUT
|
run: echo "result=$(git rev-parse --short "${{ github.sha }}")" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
- uses: actions/setup-dotnet@v3
|
- uses: actions/setup-dotnet@v3
|
||||||
with:
|
with:
|
||||||
dotnet-version: 6.0.x
|
dotnet-version: 6.0.x
|
||||||
|
|
||||||
- name: Authenticate to Github Packages
|
- name: Authenticate to Github Packages
|
||||||
|
working-directory: bindings/dotnet/UnicornEngine
|
||||||
run: dotnet nuget add source --username "${{ github.repository_owner }}" --password "${{ secrets.GITHUB_TOKEN }}" --store-password-in-clear-text --name github "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json"
|
run: dotnet nuget add source --username "${{ github.repository_owner }}" --password "${{ secrets.GITHUB_TOKEN }}" --store-password-in-clear-text --name github "https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json"
|
||||||
|
|
||||||
- name: List all native libraries
|
- name: List all native libraries
|
||||||
|
working-directory: bindings/dotnet/UnicornEngine
|
||||||
run: find ./runtimes -type f -print
|
run: find ./runtimes -type f -print
|
||||||
|
|
||||||
- name: Package .NET distribution
|
- name: Package .NET distribution
|
||||||
|
working-directory: bindings/dotnet/UnicornEngine
|
||||||
run: |
|
run: |
|
||||||
[[ "${{ github.event.workflow_run.head_branch }}" == "master" ]] \
|
[[ "${{ github.event.workflow_run.head_branch }}" == "master" ]] \
|
||||||
&& dotnet pack -c Release \
|
&& dotnet pack -c Release \
|
||||||
|| dotnet pack -c Release --version-suffix="${{ steps.git_short_sha.outputs.result }}"
|
|| dotnet pack -c Release --version-suffix="${{ steps.git_short_sha.outputs.result }}"
|
||||||
|
|
||||||
- name: 📦 Publish to Github Packages
|
- name: 📦 Publish to Github Packages
|
||||||
|
working-directory: bindings/dotnet/UnicornEngine
|
||||||
run: dotnet nuget push "bin/Release/UnicornEngine.Unicorn.*.nupkg" --source "github" --api-key "${{ secrets.GHPR_TOKEN }}"
|
run: dotnet nuget push "bin/Release/UnicornEngine.Unicorn.*.nupkg" --source "github" --api-key "${{ secrets.GHPR_TOKEN }}"
|
||||||
|
|||||||
Reference in New Issue
Block a user