Add contribution guidelines, pre-commit and releasenotes (#215) #21
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
# (C) Copyright IBM 2023, 2024. | |
# | |
# This code is part of Qiskit. | |
# | |
# This code is licensed under the Apache License, Version 2.0 with LLVM | |
# Exceptions. You may obtain a copy of this license in the LICENSE.txt | |
# file in the root directory of this source tree. | |
# | |
# Any modifications or derivative works of this code must retain this | |
# copyright notice, and modified files need to carry a notice indicating | |
# that they have been altered from the originals. | |
name: Build | |
on: [push, pull_request] | |
jobs: | |
Build: | |
runs-on: ubuntu-latest | |
env: | |
CONAN_USER_HOME: ${{ github.workspace }} | |
steps: | |
- name: free-up-space | |
run: | | |
df -h | |
sudo rm -rf /usr/share/dotnet | |
sudo rm -rf /opt/ghc | |
sudo rm -rf "/usr/local/share/boost" | |
sudo rm -rf "$AGENT_TOOLSDIRECTORY" | |
df -h | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.10.9' | |
- name: Install pip packages | |
run: | | |
python -m pip install --upgrade pip | |
pip install -r requirements-dev.txt | |
- name: Export QSSC_VERSION from Git version tag | |
run: | | |
version=`python -c "from setuptools_scm import get_version; print(get_version())"` | |
echo "QSSC_VERSION=$version" >> $GITHUB_ENV | |
- name: Load Conan cache | |
id: cache | |
uses: actions/cache/restore@v3 | |
with: | |
path: .conan | |
key: conan-${{ runner.os }} | |
restore-keys: conan-${{ runner.os }} | |
- name: Create Conan default profile | |
run: | | |
conan profile new default --detect || true | |
conan profile update settings.compiler.libcxx=libstdc++11 default | |
- name: Add QASM, LLVM, and clang tools recipes to Conan cache. | |
run: ./conan_deps.sh | |
- name: Create build dir | |
run: mkdir build | |
# Check if all conan packages are within the cache. If not | |
# we will need to build packages (and if on main flush the cache) | |
- name : Check Conan dependencies are cached | |
id: check_conan_cache | |
working-directory: build | |
run: | | |
export CONAN_LLVM_GIT_CACHE="${{ runner.temp }}/llvm-project" | |
conan install .. -pr:h default -pr:b default | |
if [ $? -ne 0 ] | |
then | |
cache_hit=false | |
else | |
cache_hit=true | |
fi | |
echo "cache_hit=$cache_hit" >> $GITHUB_OUTPUT | |
echo "Cache was hit: $cache_hit" | |
# If we have a cache miss on 'main', clear the cache. | |
# A dependency was updated, so we need to drop the old one | |
# to prevent unbounded cache growth over time. | |
- name : Clear Conan cache | |
if: github.event_name == 'push' && github.ref == 'refs/heads/main' && steps.check_conan_cache.outputs.cache_hit != 'true' | |
run: | | |
echo "Cache was hit: ${{ steps.check_conan_cache.outputs.cache_hit }}" | |
rm -rf ./.conan | |
- name: Conan install | |
id: conan_install | |
working-directory: build | |
run: | | |
export CONAN_LLVM_GIT_CACHE="${{ runner.temp }}/llvm-project" | |
conan install .. --build=outdated -pr:h default -pr:b default | |
- name: Build | |
id: build | |
working-directory: build | |
run: | | |
conan build .. | |
- name: Test | |
id: test | |
working-directory: build | |
run: conan build .. --test | |
# On 'main' branch, always save the cache if Conan install succeeded. | |
# Note: we only update the cache from 'main' to avoid "cache thrashing", which would result in the 'main' | |
# cache getting LRU-evicted for every PR, since a single run uses most of the 10GB repo limit. | |
- uses: actions/cache/save@v3 | |
if: always() && (github.event_name == 'push' && github.ref == 'refs/heads/main' && steps.conan_install.outcome == 'success' && steps.check_conan_cache.outputs.cache_hit != 'true') | |
with: | |
path: .conan | |
key: conan-${{ runner.os }} |