Add contribution guidelines, pre-commit and releasenotes #10
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
# (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: Try 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 : Conan deps cached | |
id: check_conan_cache | |
run: | | |
export CONAN_LLVM_GIT_CACHE="${{ runner.temp }}/llvm-project" | |
conan install .. -pr:h default -pr:b default | |
echo "cache-miss=$($?)" >> $GITHUB_OUTPUT | |
- name : Print cache hit/miss | |
run: | | |
echo "Cache was missed: ${{ steps.check_conan_cache.outputs.cache-miss }}" | |
# 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-miss }} != '0' | |
run: | | |
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-miss != '0') | |
with: | |
path: .conan | |
key: conan-${{ runner.os }} |