sandboxed-api/.github/workflows/generator-tool.yml

122 lines
3.4 KiB
YAML

name: generator-tool
on: push
jobs:
build:
runs-on: ubuntu-latest
container: debian:10.13
steps:
- uses: actions/checkout@v3
- name: Cache dependencies
uses: actions/cache@v3
with:
key: debian-10.13-clang16
path: |
${{github.workspace}}/build/_deps
- name: Install build tools
run: |
apt-get update
env DEBIAN_FRONTEND=noninteractive \
apt-get install -qy --no-install-recommends \
build-essential \
ca-certificates \
cmake \
file \
git \
gnupg \
libc6-dev \
lsb-release \
make \
ninja-build \
software-properties-common \
wget
wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
./llvm.sh 16 all
- name: Configure CMake
run: |
mkdir -p "$GITHUB_WORKSPACE/build"
cmake \
-S "$GITHUB_WORKSPACE" \
-B "$GITHUB_WORKSPACE/build" \
-G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DSAPI_ENABLE_CLANG_TOOL=ON \
-DSAPI_ENABLE_CLANG_TOOL_STATIC=ON
- name: Build
run: |
cmake \
--build "$GITHUB_WORKSPACE/build" \
--config Release \
--target sapi_generator_tool
( \
cd "$GITHUB_WORKSPACE/build"; \
mv sandboxed_api/tools/clang_generator/sapi_generator_tool \
sapi_generator_tool-linux-x86_64; \
)
- name: Upload Build Artifact
uses: actions/upload-artifact@v3.1.2
with:
name: sapi_generator_tool-linux
path: ${{github.workspace}}/build/sapi_generator_tool-linux-x86_64
prerelease:
needs: build
runs-on: ubuntu-latest
env:
ARTIFACT_NAME: sapi_generator_tool-linux
steps:
- uses: actions/checkout@v3
- name: Prepare environment
run: mkdir -p "$GITHUB_WORKSPACE/build"
- name: Download Build Artifact
uses: actions/github-script@v6
with:
script: |
let artifactName = process.env.ARTIFACT_NAME;
let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: context.payload.workflow_run.id,
});
let matchArtifact = allArtifacts.data.artifacts.filter((artifact) => {
return artifact.name == artifactName
})[0];
let download = await github.rest.actions.downloadArtifact({
owner: context.repo.owner,
repo: context.repo.repo,
artifact_id: matchArtifact.id,
archive_format: 'zip',
});
let fs = require('fs');
fs.writeFileSync(
`${process.env.GITHUB_WORKSPACE}/build/${artifactName}.zip`,
Buffer.from(download.data)
);
- name: "Repackage as *-<arch>.tar.gz"
run: |
( \
cd "$GITHUB_WORKSPACE/build"; \
unzip "${ARTIFACT_NAME}.zip"; \
tar czf sapi_generator_tool-linux-x86_64.tar.gz \
sapi_generator_tool-linux-x86_64
)
- name: Create Pre-release
uses: marvinpinto/action-automatic-releases@v1.2.1
with:
repo_token: "${{secrets.GITHUB_TOKEN}}"
automatic_release_tag: "latest"
prerelease: true
files: |
${{github.workspace}}/build/sapi_generator_tool-linux-x86_64.tar.gz