Skip to content

Run CD

Run CD #14

Workflow file for this run

name: Run CD
permissions: read-all
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-Optimization'
- name: Build artifacts
run: |
pipx run poetry build
- name: Archive artifacts
uses: actions/upload-artifact@v3
with:
name: lava-optimization
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-optimization artifact
uses: actions/download-artifact@v3
with:
name: lava-optimization
- 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_optimization | grep tar)
pip install --no-input $artifact
python -c 'import lava.lib.optimization.solvers'
python -c 'import lava.lib.optimization.solvers.generic'
pip uninstall -y lava-optimization
deactivate
rm -rf artifact-test
- name: Test artifact .whl
run: |
python3 -m venv artifact-test
source artifact-test/bin/activate
artifact=$(ls | grep lava_optimization | grep whl)
pip install --no-input $artifact
python -c 'import lava.lib.optimization.solvers'
python -c 'import lava.lib.optimization.solvers.generic'
pip uninstall -y lava-optimization
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-optimization artifact
uses: actions/download-artifact@v3
with:
name: lava-optimization
- 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_optimization | 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_optimization | grep whl)
pip install --no-input $artifact
# Change $artifact to tar.gz
artifact=$(ls | grep lava_optimization | 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
if: github.triggering_actor == 'mgkwill' || github.triggering_actor == 'PhilippPlank' || github.triggering_actor == 'tim-shea'
environment:
name: pypi
url: https://pypi.org/p/lava-optimization/
permissions:
contents: write
id-token: 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.3
with:
repository: 'lava-optimization'
- name: Download lava artifact
uses: actions/download-artifact@v3
with:
name: lava-optimization
- name: Check Version
id: check-version
run: |
[[ "$(pipx run poetry version --short)" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || echo prerelease=true >> $GITHUB_OUTPUT
echo "release-version=$(pipx run poetry version --short)" >> $GITHUB_OUTPUT
echo "release-commit=$(git log -n 1 --pretty=format:"%H")" >> $GITHUB_OUTPUT
- name: Print Versions
run: |
[[ "$(pipx run poetry version --short)" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] || echo prerelease=true
echo "release-version=$(pipx run poetry version --short)"
echo "release-commit=$(git log -n 1 --pretty=format:"%H")"
- 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 Optimization ${{ 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
if: steps.check-version.outputs.prerelease != 'true'
run: |
mkdir dist
cp lava* dist/.
- name: Publish package distributions to PyPI
if: steps.check-version.outputs.prerelease != 'true'
uses: pypa/gh-action-pypi-publish@release/v1