quotes around booleans #5
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Copyright 2023 NWChemEx-Project | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
# | ||
name: Common Pull Request Workflow | ||
# Collects common Pull Request related jobs for the NWX stack, specifically | ||
# 1. Apply licensing | ||
# 2. Apply formatting | ||
# 2. Build and test C++ libraries | ||
# 3. Test building the documentation | ||
# Each step can be skipped by setting the corresponding input variable as | ||
# an empty string ''. | ||
on: | ||
workflow_call: | ||
inputs: | ||
config_file: | ||
description: "The license configuration file for SkyWalking Eyes" | ||
type: string | ||
required: false | ||
default: '.licenserc.yaml' | ||
source_dir: | ||
description: "Space seperated list of dirs to apply formatting to" | ||
type: string | ||
required: false | ||
default: 'include src tests' | ||
compilers: | ||
description: "String of a JSON list of compilers to test" | ||
type: string | ||
required: false | ||
default: '' | ||
doc_target: | ||
description: "The name of the documentation target. Set to 'Sphinx' to skip doxygen" | ||
type: string | ||
required: false | ||
default: '' | ||
secrets: | ||
CMAIZE_GITHUB_TOKEN: | ||
description: "Token passed to CMaize" | ||
required: true | ||
CONTAINER_REPO_TOKEN: | ||
description: "Token to access Github Image Registry" | ||
required: true | ||
jobs: | ||
# Apply licensing and formatting, then push changes. | ||
# If changes are made, the workflow should end and be re-triggered by the | ||
# new commit to ensure that the changes don't break anything. | ||
license_and_format: | ||
runs-on: ubuntu-latest | ||
outputs: | ||
made_changes: ${{ steps.commit-changes.outputs.pushed }} | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
# Need non-default token so changes trigger additional CI | ||
token: ${{ secrets.CMAIZE_GITHUB_TOKEN }} | ||
- name: Add license | ||
if: inputs.config_file != '' | ||
uses: apache/[email protected] | ||
with: | ||
config: ${{ inputs.config_file }} | ||
mode: fix | ||
- name: Apply formatting | ||
if: inputs.source_dir != '' | ||
uses: DoozyX/[email protected] | ||
with: | ||
source: ${{ inputs.source_dir }} | ||
extensions: 'hpp,cpp,ipp,h,c' | ||
clangFormatVersion: 12 | ||
inplace: True | ||
- name: Commit any changes | ||
id: commit-changes | ||
uses: EndBug/add-and-commit@v9 | ||
with: | ||
author_name: github-actions[bot] | ||
author_email: github-actions[bot]@users.noreply.github.com | ||
message: 'Committing clang-format changes' | ||
# Build and test C++ libraries. | ||
# Runs in a container built on the NWX Build Environment image. | ||
test_library: | ||
needs: license_and_format | ||
# Only run if no new changes were made above and if compilers isn't empty | ||
if: | | ||
needs.license_and_format.outputs.made_changes == 'false' && | ||
inputs.compilers != '' && toJson(fromJson(inputs.compilers)) != '[]' | ||
runs-on: ubuntu-latest | ||
container: | ||
image: ghcr.io/nwchemex-project/nwx_buildenv:latest | ||
credentials: | ||
username: ${{ github.actor }} | ||
password: ${{ secrets.CONTAINER_REPO_TOKEN }} | ||
strategy: | ||
matrix: | ||
compiler: ${{ fromJSON(inputs.compilers) }} | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Build and Test | ||
env: | ||
CMAIZE_GITHUB_TOKEN: ${{secrets.CMAIZE_GITHUB_TOKEN}} | ||
run: | | ||
toolchain=/toolchains/nwx_${{ matrix.compiler }}.cmake | ||
echo 'set(CMAIZE_GITHUB_TOKEN '${CMAIZE_GITHUB_TOKEN}')' >> toolchain | ||
cmake -Bbuild -H. -GNinja \ | ||
-DCMAKE_INSTALL_PREFIX=./install \ | ||
-DCMAKE_TOOLCHAIN_FILE="${toolchain}" | ||
cmake --build build --parallel | ||
cd build | ||
ctest --VV | ||
shell: bash | ||
# Test building the documentation. | ||
test_build_docs: | ||
needs: license_and_format | ||
Only run if no new changes were made above | ||
if: | | ||
needs.license_and_format.outputs.made_changes == 'false' && | ||
inputs.doc_target != '' | ||
runs-on: ubuntu-latest | ||
container: | ||
image: ghcr.io/nwchemex-project/nwx_buildenv:latest | ||
credentials: | ||
username: ${{ github.actor }} | ||
password: ${{ secrets.CONTAINER_REPO_TOKEN }} | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Doxygen Docs | ||
if: ${{ inputs.doc_target != 'Sphinx' }} | ||
run: | | ||
cmake -Bbuild -H. -GNinja -DBUILD_DOCS=ON -DONLY_BUILD_DOCS=ON \ | ||
cmake --build build --target ${{ inputs.doc_target }} --parallel | ||
# Migrate the Doxygen documentation to the docs source | ||
mkdir docs/build | ||
mkdir docs/build/html | ||
mv build/html "docs/build/html/${{ inputs.doc_target }}" | ||
shell: bash | ||
- name: Sphinx Docs | ||
run: | | ||
cd docs | ||
if [ -f requirements.txt ]; then | ||
pip install -r requirements.txt | ||
fi | ||
make html | ||
shell: bash | ||