Skip to content

Run CD

Run CD #32

Workflow file for this run

name: Run CD
on:
workflow_dispatch:
jobs:
build-artifacts:
name: Build Artifacts
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
lfs: true
- name: setup CI
uses: lava-nc/ci-setup-composite-action@v1.3
with:
repository: 'Lava'
- name: Build artifacts
run: |
pipx run poetry build
- name: Archive artifacts
uses: actions/upload-artifact@v3
with:
name: lava
path: |
dist
retention-days: 10
test-artifact-install:
name: Test Artifact Install
runs-on: ubuntu-latest
needs: build-artifacts
steps:
- uses: actions/checkout@v3
with:
lfs: true
- name: Download lava artifact
uses: actions/download-artifact@v3
with:
name: lava
- name: Set up Python 3.10
uses: actions/setup-python@v4
with:
python-version: "3.10"
- name: Test artifact tar.gz
run: |
python3 -m venv artifact-test
source artifact-test/bin/activate
artifact=$(ls | grep lava | grep tar)
pip install --no-input $artifact
python -c 'import lava.magma.compiler.subcompilers'
python -c 'import lava.magma.core.model'
pip uninstall -y lava-nc
deactivate
rm -rf artifact-test
- name: Test artifact .whl
run: |
python3 -m venv artifact-test
source artifact-test/bin/activate
artifact=$(ls | grep lava | grep whl)
pip install --no-input $artifact
python -c 'import lava.magma.compiler.subcompilers'
python -c 'import lava.magma.core.model'
pip uninstall -y lava-nc
deactivate
rm -rf artifact-test
test-artifact-use:
name: Test Artifact With Unit Tests
runs-on: ubuntu-latest
needs: [build-artifacts, test-artifact-install]
steps:
- name: Download lava artifact
uses: actions/download-artifact@v3
with:
name: lava
- name: Set up Python 3.10
uses: actions/setup-python@v4
with:
python-version: "3.10"
- name: Test artifact tar.gz
run: |
mkdir tmp
cd tmp
cp ../lava* .
python3 -m venv artifact-unittest
source artifact-unittest/bin/activate
pip install -U pip
pip install "nbconvert>=7.2.10,<7.3" pytest>=7.2.0 matplotlib>=3.5.1 ipykernel>=6.15.0 nbformat>=5.3.0
artifact=$(ls | grep lava | grep tar)
pip install --no-input $artifact
tar -xvf $artifact
mv ./lava*/tests .
mv ./lava*/tutorials .
python -m unittest -vv
deactivate
cd ../
rm -rf tmp
- name: Test artifact .whl
run: |
mkdir tmp
cd tmp
cp ../lava* .
python3 -m venv artifact-unittest
source artifact-unittest/bin/activate
pip install -U pip
pip install "nbconvert>=7.2.10,<7.3" pytest>=7.2.0 matplotlib>=3.5.1 ipykernel>=6.15.0 nbformat>=5.3.0
artifact=$(ls | grep lava | grep whl)
pip install --no-input $artifact
# Change $artifact to tar.gz
artifact=$(ls | grep lava | grep tar)
tar -xvf $artifact
mv ./lava*/tests .
mv ./lava*/tutorials .
python -m unittest -vv
deactivate
cd ../
rm -rf tmp
upload-release-artifact:
name: Upload release artifact
runs-on: ubuntu-latest
permissions:
contents: write
needs: [build-artifacts, test-artifact-install, test-artifact-use]
steps:
- uses: actions/checkout@v3
with:
lfs: true
- name: setup CI
uses: lava-nc/ci-setup-composite-action@v1.2
with:
repository: 'Lava'
- name: Download lava artifact
uses: actions/download-artifact@v3
with:
name: lava
- name: Check Version
id: check-version
run: |
[[ "$(pipx run poetry version --short)" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || echo prerelease=true >> $GITHUB_OUTPUT
release-version=$(pipx run poetry version --short) >> $GITHUB_OUTPUT
release-commit=$(git log -n 1 --pretty=format:"%H") >> $GITHUB_OUTPUT
- name: Create Release
uses: ncipollo/release-action@v1
with:
artifacts: "lava*"
token: ${{ secrets.GITHUB_TOKEN }}
draft: true
prerelease: steps.check-version.outputs.prerelease == 'true'
name: "Lava ${{ steps.check-version.outputs.release-version }}"
commit: "${{ steps.check-version.outputs.release-commit }}"
tag: "v${{ steps.check-version.outputs.release-version }}"
discussionCategory: "Announcements"
artifactErrorsFailBuild: true
generateReleaseNotes: true
makeLatest: true
- name: Publish to PyPI
env:
POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_TOKEN }}
run: poetry publish --dry-run