Files
concrete/.github/workflows/continuous-integration.yaml
Arthur Meyre 63eac35a43 build: launch pcc targets in parallel to speed up checks
- change call in github actions as proper flags are in the Makefile
- change mypy_ci target to avoid cache issues with multiple mypy instances
2021-08-17 18:27:31 +02:00

156 lines
5.1 KiB
YAML

name: HDK CI Pipeline
on:
pull_request:
push:
branches:
- main
jobs:
build:
concurrency:
group: ${{ github.head_ref }}
cancel-in-progress: true
runs-on: ubuntu-20.04
container:
image: ghcr.io/zama-ai/zamalang-compiler
credentials:
username: zama-bot
password: ${{ secrets.BOT_TOKEN }}
strategy:
matrix:
python-version: [3.8]
steps:
- name: Install Git
run: apt-get install git -y
- name: Checkout Code
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
- name: Cache Installation Files
uses: actions/cache@v2
with:
# Paths are Unix specific for now
path: |
~/.cache/pip
~/.cache/pypoetry
# Ignore line break in the evaluated double quoted string
key: "${{ runner.os }}-build-${{ matrix.python-version }}-\
${{ hashFiles('poetry.lock') }}"
restore-keys: |
${{ runner.os }}-build-${{ matrix.python-version }}-
${{ runner.os }}-build-
${{ runner.os }}-
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install poetry
make setup_env
- name: Conformance
id: conformance
if: ${{ success() && !cancelled() }}
# pcc launches an internal target with proper flags
run: |
make pcc
- name: PyTest
id: pytest
if: ${{ steps.conformance.outcome == 'success' && !cancelled() }}
run: |
make pytest
- name: Notebooks
if: ${{ steps.conformance.outcome == 'success' && !cancelled() }}
run: |
make strip_nb
make notebook_timeout
poetry run pytest --nbmake examples/*.ipynb
- name: Test coverage
id: coverage
if: ${{ steps.pytest.outcome != 'skipped' && !cancelled() }}
run: |
./script/actions_utils/coverage.sh ${{ github.base_ref }}
- name: Archive test coverage
uses: actions/upload-artifact@v2
if: ${{ steps.coverage.outcome != 'skipped' && !cancelled() }}
with:
name: coverage
path: coverage.html
- name: Comment with coverage
uses: marocchino/sticky-pull-request-comment@v2
if: ${{ steps.coverage.outcome != 'skipped' && !cancelled() }}
with:
path: diff-coverage.txt
recreate: true
- name: Build docs
id: docs
if: ${{ steps.conformance.outcome == 'success' && !cancelled() }}
run: |
make docs
- name: Archive docs artifacts
if: ${{ steps.docs.outcome == 'success' && !cancelled() }}
uses: actions/upload-artifact@v2
with:
name: html-docs
path: docs/_build/html
- name: Slack Notification
if: ${{ always() }}
uses: rtCamp/action-slack-notify@v2
env:
SLACK_CHANNEL: hdk-updates
SLACK_ICON: https://pbs.twimg.com/profile_images/1274014582265298945/OjBKP9kn_400x400.png
SLACK_COLOR: ${{ job.status }}
SLACK_MESSAGE: 'Build finished with status ${{ job.status }}'
SLACK_USERNAME: zama-bot
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
publish-docs:
needs: [build]
runs-on: ubuntu-20.04
if: ${{ github.event_name == 'push' && github.base_ref == 'main' }}
steps:
- name: Download Documentation
id: download
uses: actions/download-artifact@v2
with:
name: html-docs
- name: Publish Documentation to S3
id: publish
if: ${{ steps.download.outcome == 'success' && !cancelled() }}
uses: jakejarvis/s3-sync-action@master
with:
args: --delete
env:
AWS_S3_BUCKET: ${{ secrets.AWS_HDK_DOCUMENTATION_BUCKET_NAME }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_REGION: ${{ secrets.AWS_REGION }}
SOURCE_DIR: '.'
- name: Invalidate CloudFront Cache
if: ${{ steps.publish.outcome == 'success' }}
uses: awact/cloudfront-action@master
env:
SOURCE_PATH: '/*'
AWS_REGION: ${{ secrets.AWS_REGION }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
DISTRIBUTION_ID: ${{ secrets.AWS_HDK_DOCUMENTATION_DISTRIBUTION_ID }}
- name: Slack Notification
if: ${{ always() }}
uses: rtCamp/action-slack-notify@v2
env:
SLACK_CHANNEL: hdk-updates
SLACK_ICON: https://pbs.twimg.com/profile_images/1274014582265298945/OjBKP9kn_400x400.png
SLACK_COLOR: ${{ job.status }}
SLACK_MESSAGE: 'Publishing documentation finished with status ${{ job.status }}'
SLACK_USERNAME: zama-bot
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}