Skip to content

Update main.yml

Update main.yml #278

Workflow file for this run

name: CI
# builds and (manually) releases the contrib for mac, linux and windows
# note: prepare job is run first to determine a tag that can be used by all OS runners
on:
push:
workflow_dispatch: # This allows you to manually trigger the workflow from the GitHub UI
jobs:
prepare: # separate job to generate tag name exactly once based on the date
runs-on: ubuntu-latest
outputs:
TAG_NAME: ${{ steps.generate_tag_name.outputs.TAG_NAME }} # map step output to job output
steps:
- name: Generate tag name
id: generate_tag_name
run: echo "TAG_NAME=$(date +'%Y-%m-%d-%H%M%S')" >> $GITHUB_OUTPUT
build:
needs: prepare
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
include:
- os: ubuntu-latest
CMAKE_ARGS: ""
- os: macos-latest
CMAKE_ARGS: -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9
- os: windows-latest
CMAKE_ARGS: -G"Visual Studio 17 2022" -A"x64"
steps:
- name: Transfer variable TAG_NAME between jobs to be available as step output in this job
id: generate_tag_name
run: echo "TAG_NAME=${{needs.prepare.outputs.TAG_NAME}}" >> $GITHUB_OUTPUT
shell: bash
- uses: actions/checkout@v4
with:
path: contrib
- name: Setup cmake
uses: jwlawson/actions-setup-cmake@v2
with:
cmake-version: '3.29.x'
- name: Install prerequisites
shell: bash
run: |
if [ "$RUNNER_OS" == "Linux" ]; then
sudo apt-get -y install make autoconf automake tar patch libtool gcc
elif [ "$RUNNER_OS" == "Windows" ]; then
# choco install important_windows_software
echo "Nothing to install"
elif [ "$RUNNER_OS" == "macOS" ]; then
brew install autoconf automake libtool
else
echo "$RUNNER_OS not supported"
exit 1
fi
# Normalize path to only contain front slashes
- name: Normalize path on windows
id: normalize_ws
run: |
$normalizedWorkspace = $env:GITHUB_WORKSPACE -replace '\\', '/'
Write-Output "NORMALIZED_WORKSPACE=$normalizedWorkspace" >> $env:GITHUB_OUTPUT
shell: pwsh
- name: Set up Visual Studio shell
uses: egor-tensin/vs-shell@v2
with:
arch: x64
- name: Build contrib
run: |
mkdir "${{ github.workspace }}/contrib-build"
cd "${{ github.workspace }}/contrib-build"
cmake ${{ matrix.CMAKE_ARGS }} -DBUILD_TYPE=ALL -DNUMBER_OF_JOBS=4 ${{ github.workspace }}/contrib
cmake ${{ matrix.CMAKE_ARGS }} -DBUILD_TYPE=OPENMP -DNUMBER_OF_JOBS=4 ${{ github.workspace }}/contrib
- name: Configure Git for Tagging
if: github.event_name == 'workflow_dispatch'
run: |
git config --global user.name 'GitHub Actions'
git config --global user.email '[email protected]'
- name: Create and Push Tag
if: github.event_name == 'workflow_dispatch'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
cd "${{ github.workspace }}/contrib"
git tag ${{ steps.generate_tag_name.outputs.TAG_NAME }}
git push origin ${{ steps.generate_tag_name.outputs.TAG_NAME }}
shell: bash
- name: Clean build and package
if: github.event_name == 'workflow_dispatch'
run: |
cd "${{ github.workspace }}/contrib-build"
rm -rf archives src CMakeFiles
tar -czvf "contrib_build-${{ runner.os }}.tar.gz" $(ls -d lib) $(ls -d bin) $(ls -d include) $(ls -d share)
shell: bash
- name: Create Release (Windows)
if: github.event_name == 'workflow_dispatch' && runner.os == "Windows"

Check failure on line 108 in .github/workflows/main.yml

View workflow run for this annotation

GitHub Actions / CI

Invalid workflow file

The workflow is not valid. .github/workflows/main.yml (Line: 108, Col: 13): Unexpected symbol: '"Windows"'. Located at position 58 within expression: github.event_name == 'workflow_dispatch' && runner.os == "Windows" .github/workflows/main.yml (Line: 119, Col: 13): Unexpected symbol: '"Windows"'. Located at position 58 within expression: github.event_name == 'workflow_dispatch' && runner.os != "Windows"
id: create_release_win
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.generate_tag_name.outputs.TAG_NAME }}
files: |
"${{ steps.normalize_ws.outputs.NORMALIZED_WORKSPACE }}/contrib-build/contrib_build-${{runner.os}}.tar.gz"
- name: Create Release (Mac and Linux)
if: github.event_name == 'workflow_dispatch' && runner.os != "Windows"
id: create_release_mac_linux
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ steps.generate_tag_name.outputs.TAG_NAME }}
files: |
"${{ github.workspace }}/contrib-build/contrib_build-${{runner.os}}.tar.gz"