Skip to content

Commit

Permalink
chore(ci): Update api docs checks to the current wheel and create art…
Browse files Browse the repository at this point in the history
…ifacts in case of failure
  • Loading branch information
BourgerieQuentin committed Dec 4, 2024
1 parent 1e2c619 commit 3dc46e8
Show file tree
Hide file tree
Showing 3 changed files with 109 additions and 100 deletions.
61 changes: 42 additions & 19 deletions .github/workflows/concrete_python_release_cpu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,25 +38,6 @@ jobs:
backend: aws
profile: release

release-checks:
needs: setup-instance
runs-on: ${{ needs.setup-instance.outputs.runner-name }}
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
submodules: recursive
fetch-depth: 0
- name: Check python api doc is up to date
run: ci/scripts/make_apidocs.sh
- name: Slack Notification
if: ${{ failure() }}
continue-on-error: true
uses: rtCamp/action-slack-notify@c33737706dea87cd7784c687dadc9adf1be59990
env:
SLACK_COLOR: ${{ job.status }}
SLACK_MESSAGE: "release-checks finished with status: ${{ job.status }}. (${{ env.ACTION_RUN_URL }})"

build-linux-x86:
strategy:
matrix:
Expand Down Expand Up @@ -138,6 +119,48 @@ jobs:
SLACK_COLOR: ${{ job.status }}
SLACK_MESSAGE: "build-linux-x86 finished with status: ${{ job.status }}. (${{ env.ACTION_RUN_URL }})"

release-checks:
strategy:
matrix:
python-version: ["3.8"]
needs: [ build-linux-x86 ]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
submodules: recursive
fetch-depth: 0
- name: Setup Python
uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0
with:
python-version: ${{ matrix.python-version }}
- name: Download wheels
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
with:
name: ${{ format('wheel-{0}-linux-x86', matrix.python-version) }}
path: ${{ format('wheel-{0}-linux-x86', matrix.python-version) }}
- name: Check documentation
run: |
WHEEL_DIR=$(pwd)/${{ format('wheel-{0}-linux-x86', matrix.python-version) }}
CONCRETE_WHEEL="${WHEEL_DIR}"/*.whl .github/workflows/scripts/make_apidocs.sh
- name: Upload docs.patch if failure
if: ${{ failure() }}
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0
with:
name: docs-artifacts
path: |
docs.patch
docs/dev/api
retention-days: 3
- name: Slack Notification
if: ${{ failure() }}
continue-on-error: true
uses: rtCamp/action-slack-notify@c33737706dea87cd7784c687dadc9adf1be59990
env:
SLACK_COLOR: ${{ job.status }}
SLACK_MESSAGE: "release-checks finished with status: ${{ job.status }}. (${{ env.ACTION_RUN_URL }})"

build-macos:
strategy:
matrix:
Expand Down
67 changes: 67 additions & 0 deletions .github/workflows/scripts/make_apidocs.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
#!/usr/bin/env bash

set -e

PYTHON=${PYTHON:-python}
PIP=${PIP:-${PYTHON} -m pip}
VENV_DIR=${PWD}/.venv-docs

# Remove old documentation
rm -rf docs/dev/api/*

# Create virtual env and install concrete and docs tools
${PYTHON} -m venv "${VENV_DIR}"
source "${VENV_DIR}"/bin/activate
if [ -z "${CONCRETE_WHEEL}" ]; then
echo "You must specify the CONCRETE_WHEEL environment variable"
exit 1
fi
${PIP} install ${CONCRETE_WHEEL}
${PIP} install lazydocs

# Generate the API doc
lazydocs --output-path="./docs/dev/api" --overview-file="README.md" --src-base-url="../../" --no-watermark concrete


# Update documentation paths
SED_OPT='-i'
if [ $(uname) == "Darwin" ]; then
SED_OPT='-i ""'
fi

# Fixing the path issues, to point on files in GitHub
WHICH_PYTHON_VERSION=$(${PYTHON} --version | cut -f 2 -d " " | cut -f 1-2 -d ".")
sed $SED_OPT -e "s@../../.venvtrash/lib.*/python$WHICH_PYTHON_VERSION/site-packages/@../../../compilers/concrete-compiler/compiler/lib/Bindings/Python/@g" docs/dev/api/concrete.compiler*.md docs/dev/api/concrete.lang*.md
sed $SED_OPT -e "s@../../.venvtrash/lib.*/python$WHICH_PYTHON_VERSION/site-packages/@../../frontends/concrete-python/@g" docs/dev/api/concrete.fhe*.md

# Fixing the links in README.md, which fails (missing .'s for some reason): remove the #headers
sed $SED_OPT -e "[email protected]#module-.*)@.md)@g" docs/dev/api/README.md
sed $SED_OPT -e "[email protected]#function-.*)@.md)@g" docs/dev/api/README.md
sed $SED_OPT -e "[email protected]#class-.*)@.md)@g" docs/dev/api/README.md

# Removed the "object addresses" and "function addresses", since they are not constant
sed $SED_OPT -e "s@object at 0x[a-zA-Z0-9]*@object at ADDRESS@g" docs/*.md
sed $SED_OPT -e "s@object at 0x[a-zA-Z0-9]*@object at ADDRESS@g" docs/*/*.md
sed $SED_OPT -e "s@object at 0x[a-zA-Z0-9]*@object at ADDRESS@g" docs/*/*/*.md

sed $SED_OPT -e "s@function Int at 0x[a-zA-Z0-9]*@function Int at ADDRESS@g" docs/*.md
sed $SED_OPT -e "s@function Int at 0x[a-zA-Z0-9]*@function Int at ADDRESS@g" docs/*/*.md
sed $SED_OPT -e "s@function Int at 0x[a-zA-Z0-9]*@function Int at ADDRESS@g" docs/*/*/*.md

# FIXME: remove this once the PR has been merged once
sed $SED_OPT -e "s@https://github.com/zama-ai/concrete-compiler-internal/blob/main/LICENSE.txt@https://github.com/zama-ai/concrete/blob/main/LICENSE.txt@g" ./docs/dev/api/concrete.lang.dialects.md ./docs/dev/api/concrete.compiler.md ./docs/dev/api/concrete.lang.md

# Create the patch file
git add -N docs/dev/api/*
git diff docs &> docs.patch

# Was there changes?
if [ ! -s docs.patch ]; then
echo "The documentation us up to date, congrats."
exit 0
else
echo "There is a difference in the docs, please commit the changes, here the change:"
cat docs.patch
exit 1
fi

81 changes: 0 additions & 81 deletions ci/scripts/make_apidocs.sh

This file was deleted.

0 comments on commit 3dc46e8

Please sign in to comment.