Skip to content

cmake: Add options. Revise directory tree. #70

cmake: Add options. Revise directory tree.

cmake: Add options. Revise directory tree. #70

Workflow file for this run

name: Build
on:
push:
branches:
- main
- develop
pull_request:
branches:
- main
- develop
env:
REGISTRY: ghcr.io
jobs:
set-vars:
runs-on: [ubuntu-latest]
outputs:
CI_IMAGE : ${{ steps.common.outputs.CI_IMAGE }}
steps:
- name: Export common variables.
id : common
run : |
echo "CI_IMAGE=${{ env.REGISTRY }}/${{ github.repository }}/kokkos-utils:latest" >> $GITHUB_OUTPUT
build-image:
needs: [set-vars]
runs-on: [ubuntu-latest]
container:
image: docker:latest
permissions:
packages: write
steps:
- name: Checkout code.
uses: actions/checkout@v4
- name: Prepare.
run: |
apk add jq
echo "DOXYGEN_VERSION=$(jq .dependencies.doxygen.value version.json -j)" >> $GITHUB_ENV
echo "GOOGLETEST_VERSION=$(jq .dependencies.googletest.value version.json -j)" >> $GITHUB_ENV
echo "KOKKOS_VERSION=$(jq .dependencies.kokkos.value version.json -j)" >> $GITHUB_ENV
- name: Set up QEMU.
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx.
uses: docker/setup-buildx-action@v3
- name: Login to GitHub Container Registry.
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push.
uses: docker/build-push-action@v5
with:
context: .
platforms: linux/amd64,linux/arm64
push: ${{ github.ref == 'refs/heads/develop' }}
file: dockerfile
tags: ${{ needs.set-vars.outputs.CI_IMAGE }}
cache-from: type=registry,ref=${{ needs.set-vars.outputs.CI_IMAGE }}
cache-to: type=inline
build-args: |
DOXYGEN_VERSION=${{ env.DOXYGEN_VERSION }}
GOOGLETEST_VERSION=${{ env.GOOGLETEST_VERSION }}
KOKKOS_VERSION=${{ env.KOKKOS_VERSION }}
KOKKOS_PRESET=OpenMP
labels: "org.opencontainers.image.source=${{ github.repositoryUrl }}"
build-library:
needs: [set-vars, build-image]
runs-on: [ubuntu-latest]
container:
image: ${{ needs.set-vars.outputs.CI_IMAGE }}
steps:
- name: Checkout code.
uses: actions/checkout@v4
- name: Configure and build.
run : |
cmake -S . --preset=OpenMP
cmake --build --preset=OpenMP
- name: Test.
run : |
ctest --preset=OpenMP
build-documentation:
needs: [set-vars, build-image]
runs-on: [ubuntu-latest]
container:
image: ${{ needs.set-vars.outputs.CI_IMAGE }}
steps:
- name: Checkout code.
uses: actions/checkout@v4
- name: Build Doxygen documentation.
run : |
cmake -S . --preset=OpenMP
cmake --build --preset=OpenMP --target=docs
- name: Upload Pages artifacts.
uses: actions/upload-pages-artifact@v3
with:
path: build-with-OpenMP/docs/html
# The deploy job is heavily inspired from https://github.com/actions/deploy-pages.
deploy:
# The deployment only happens if the library can be built and the documentation generated.
needs: [build-library, build-documentation]
runs-on: [ubuntu-latest]
# The deployment only happens for 'main' or 'develop' branch.
if: ${{ contains(fromJSON('["refs/heads/main", "refs/heads/develop"]'), github.ref) }}
# Grant GITHUB_TOKEN the permissions required to make a Pages deployment
permissions:
pages: write # to deploy to Pages
id-token: write # to verify the deployment originates from an appropriate source
# Deploy to the github-pages environment
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages.
id : deployment
uses: actions/deploy-pages@v4