Skip to content

vcpkg GitHub action #2463

vcpkg GitHub action

vcpkg GitHub action #2463

Workflow file for this run

name: Vcpkg CI
on: [push]
jobs:
build:
name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
# # Enable this if you want specific version of vcpkg
# # For openmind tag "2020.06"
# - name: Configure Vcpkg
# shell: bash
# run: |
# cd ${{ matrix.vcpkg_dir }}
# git fetch origin --tags
# git reset --hard 2020.06
# if [ "$RUNNER_OS" == "Windows" ]; then
# ./bootstrap-vcpkg.bat
# else
# ./bootstrap-vcpkg.sh
# fi
- name: Cache vcpkg
uses: actions/cache@v4
with:

Check failure on line 34 in .github/workflows/vcpkg.yml

View workflow run for this annotation

GitHub Actions / .github/workflows/vcpkg.yml

Invalid workflow file

You have an error in your yaml syntax on line 34
path: |
${{github.workspace}}/vcpkg
!${{github.workspace}}/vcpkg/buildtrees
!${{github.workspace}}/vcpkg/packages
!${{github.workspace}}/vcpkg/downloads
${{ github.workspace }}/build/bin/Db*.solutions
key: ${{ runner.os }}-vcpkg-${{ hashFiles('**/vcpkg.json') }}
restore-keys: |
${{ runner.os }}-vcpkg-
- name: Install dependencies (Ubuntu)
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y build-essential cmake ninja-build autoconf automake autoconf-archive
cmake --version
ninja --version
gcc --version
g++ --version
- name: Install dependencies (macOS)
if: runner.os == 'macOS'
env:
VCPKG_PYTHON3: $(which python3)
run: |
echo "VCPKG_PYTHON3=$VCPKG_PYTHON3" >> $GITHUB_ENV
brew update
brew install cmake ninja autoconf automake autoconf-archive
cmake --version
ninja --version
clang --version
- name: Install dependencies (Windows)
if: runner.os == 'Windows'
uses: microsoft/setup-msbuild@v2
- name: Setup MSVC
if: runner.os == 'Windows'
uses: ilammy/msvc-dev-cmd@v1
- name: Setup vcpkg
uses: lukka/run-vcpkg@v11
with:
vcpkgGitCommitId: 'c82f74667287d3dc386bce81e44964370c91a289'
vcpkgJsonGlob: '**/vcpkg.json'
- name: Configure CMake
run: cmake -B ${{github.workspace}}/build -G Ninja -DCMAKE_TOOLCHAIN_FILE=${{github.workspace}}/vcpkg/scripts/buildsystems/vcpkg.cmake -DOPENMIND_BUILD_TESTS=ON || cmake -B ${{github.workspace}}/build -G Ninja -DCMAKE_TOOLCHAIN_FILE=${{github.workspace}}/vcpkg/scripts/buildsystems/vcpkg.cmake -DOPENMIND_BUILD_TESTS=ON
- name: Build
run: cmake --build ${{github.workspace}}/build
- name: Get number of CPU cores
uses: SimenB/github-actions-cpu-cores@v2
id: cpu-cores
- name: Check
working-directory: ${{github.workspace}}/build
run: ctest . -j ${{steps.cpu-cores.outputs.count}} -E "ts" --rerun-failed --output-on-failure
- name: List runtime dependencies
shell: bash
run: |
if [ "$RUNNER_OS" == "Linux" ]; then
ldd ./install/bin/openmind
elif [ "$RUNNER_OS" == "macOS" ]; then
otool -L ./install/bin/openmind
fi
- name: Package
id: create_artifact
shell: bash
run: |
mkdir release
if [ "$RUNNER_OS" == "Windows" ]; then
ls ./install
7z a -r openmind.zip ./install/*
else
cd ./install
zip -r ./../openmind.zip *
cd ..
fi
name=openmind-${{ matrix.suffix }}-$(git describe --always).zip
mv -v ./openmind.zip release/${name}
echo "::set-output name=name::${name}"
echo "::set-output name=path::release/${name}"
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: Release
path: release
- name: Create Changelog
id: create_changelog
if: startsWith(github.ref, 'refs/tags/v')
shell: bash
run: |
last_tag=$(git describe --tags --abbrev=0 @^ || true)
if [ -z "$last_tag" ]; then
git log --oneline --format="%C(auto) %h %s" > changelog.txt
else
git log --oneline --format="%C(auto) %h %s" ${last_tag}..@ > changelog.txt
fi
cat changelog.txt
- name: Release
uses: ncipollo/release-action@v1
if: startsWith(github.ref, 'refs/tags/v')
with:
artifacts: ${{ steps.create_artifact.outputs.path }}
allowUpdates: true
artifactContentType: application/zip
bodyFile: changelog.txt
draft: false
omitBodyDuringUpdate: true
omitNameDuringUpdate: true
prerelease: false
token: ${{ secrets.GITHUB_TOKEN }}