Files
2025-06-11 19:06:08 +01:00

129 lines
4.0 KiB
YAML

name: Release
on:
push:
tags: '*'
env:
CARGO_TERM_COLOR: always
CMAKE_CONFIG: RelWithDebInfo
jobs:
create_release:
runs-on: ubuntu-24.04
outputs:
upload_url: ${{ steps.create_release.outputs.upload_url }}
git_tag: ${{ steps.get-git-tag.outputs.name }}
steps:
- name: Get Git tag
id: get-git-tag
run: echo "name=${GITHUB_REF#refs/*/}" >> $GITHUB_OUTPUT
- id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.get-git-tag.outputs.name }}
release_name: libloot v${{ steps.get-git-tag.outputs.name }}
body: |
Requires Windows 7 or later, the MSVC 2022 [x86](https://aka.ms/vs/17/release/vc_redist.x86.exe) or [x64](https://aka.ms/vs/17/release/vc_redist.x64.exe) redistributable for 32-bit and 64-bit builds respectively, and [7-Zip](http://www.7-zip.org/) to extract the archives.
## Change Logs
- [API](https://loot-api.readthedocs.io/en/latest/api/changelog.html)
- [Metadata Syntax](https://loot-api.readthedocs.io/en/latest/metadata/changelog.html)
windows:
runs-on: windows-2025
needs: create_release
strategy:
matrix:
target:
- platform: Win32
triple: i686-pc-windows-msvc
- platform: x64
triple: x86_64-pc-windows-msvc
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Cache cargo
uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-${{ matrix.target.platform }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- name: Install Rust i686-pc-windows-msvc target
run: rustup target add i686-pc-windows-msvc
if: matrix.target.platform == 'Win32'
- name: Set LIBLOOT_REVISION
shell: bash
run: echo "LIBLOOT_REVISION=$(git rev-parse --short HEAD)" >> "$GITHUB_ENV"
- name: Run CMake
working-directory: cpp
run: |
cmake -G "Visual Studio 17 2022" `
-A ${{ matrix.target.platform }} `
-DCPACK_PACKAGE_VERSION="${{ needs.create_release.outputs.git_tag }}" `
-DCPACK_THREADS=0 `
-DRUST_TARGET="${{ matrix.target.triple }}" `
-B build
cmake --build build --parallel --config ${{ env.CMAKE_CONFIG }}
- uses: actions/setup-python@v5
with:
python-version: '3.13'
- name: Install packages for building docs
working-directory: docs
run: |
curl -sSfLO https://github.com/doxygen/doxygen/releases/download/Release_1_13_2/doxygen-1.13.2.windows.x64.bin.zip
Expand-Archive doxygen-1.13.2.windows.x64.bin.zip
echo "${{ github.workspace }}\doxygen-1.13.2.windows.x64.bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
pipx install uv
uv sync
- name: Build docs
working-directory: docs
run: uv run -- sphinx-build -b html . build/html
- name: Build archive
id: build-archive
shell: bash
working-directory: cpp/build
run: |
cpack -C ${{ env.CMAKE_CONFIG }}
if [[ "${{ matrix.target.platform }}" == "Win32" ]]
then
PLATFORM=win32
else
PLATFORM=win64
fi
echo "filename=libloot-${{ needs.create_release.outputs.git_tag }}-${PLATFORM}.7z" >> "$GITHUB_OUTPUT"
- name: Upload Archive
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ needs.create_release.outputs.upload_url }}
asset_path: cpp/build/package/${{ steps.build-archive.outputs.filename }}
asset_name: ${{ steps.build-archive.outputs.filename }}
asset_content_type: application/x-7z-compressed