callbacks for dask optimization loop (#122) #744
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
name: ci-cd-pipeline | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
branches: | |
- main | |
release: | |
types: [published] | |
jobs: | |
lint: | |
runs-on: ubuntu-20.04 | |
container: python:3.8-slim | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install dependencies | |
run: | | |
pip install poetry | |
poetry install --extras "all" | |
- name: Formatting | |
if: always() | |
run: | | |
poetry run black --check --exclude blackboxopt/examples/ . | |
poetry run black --check --include blackboxopt/examples/ --line-length 80 . | |
- name: Type Checks | |
if: always() | |
run: poetry run mypy --config-file pyproject.toml . | |
- name: Linting | |
if: always() | |
run: | | |
poetry run ruff check blackboxopt/ | |
poetry run ruff check tests/ | |
test: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-20.04] | |
python-version: ["3.8", "3.9", "3.10", "3.11"] | |
container: python:${{ matrix.python-version }}-slim | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install dependencies | |
run: | | |
pip install poetry | |
poetry install --extras "all" | |
- name: Run tests | |
if: always() | |
run: poetry run coverage run --branch -m pytest tests | |
env: | |
COVERAGE_FILE: ".coverage.${{ matrix.python-version }}" | |
- name: Store coverage file | |
uses: actions/upload-artifact@v3 | |
with: | |
name: coverage | |
path: .coverage.${{ matrix.python-version }} | |
report: | |
needs: [test] | |
runs-on: ubuntu-20.04 | |
permissions: | |
# Gives the action the necessary permissions for publishing new | |
# comments in pull requests. | |
pull-requests: write | |
# Gives the action the necessary permissions for pushing data to the | |
# python-coverage-comment-action branch, and for editing existing | |
# comments (to avoid publishing multiple comments in the same PR) | |
contents: write | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Download coverage summary | |
uses: actions/download-artifact@v3 | |
with: | |
name: coverage | |
- name: Coverage comment | |
id: coverage_comment | |
uses: py-cov-action/python-coverage-comment-action@v3 | |
with: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
MERGE_COVERAGE_FILES: true | |
- name: Store Pull Request comment to be posted | |
uses: actions/upload-artifact@v3 | |
if: steps.coverage_comment.outputs.COMMENT_FILE_WRITTEN == 'true' | |
with: | |
name: python-coverage-comment-action | |
path: python-coverage-comment-action.txt | |
deploy: | |
needs: [lint, test] | |
if: startsWith(github.ref, 'refs/tags/v') | |
runs-on: ubuntu-20.04 | |
container: python:3.8-slim | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install dependencies | |
run: | | |
pip install poetry | |
- name: Build & release | |
env: | |
PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} | |
run: | | |
poetry config pypi-token.pypi $PYPI_TOKEN | |
poetry publish --build | |
docs: | |
needs: [lint, test] | |
if: startsWith(github.ref, 'refs/tags/v') | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 # fetch all branches, incl. gh-pages | |
- uses: actions/setup-python@v2 | |
with: | |
python-version: 3.8 | |
- name: Install dependencies | |
run: | | |
pip install poetry | |
poetry install --extras "all" | |
- name: Setup git author | |
run: | | |
git config --global user.name docs deploy | |
git config --global user.email [email protected] | |
- name: Get GIT_TAG_NAME | |
uses: olegtarasov/[email protected] | |
id: tagName | |
- name: Publish | |
run: | | |
poetry run mike deploy --push --update-aliases ${{ env.GIT_TAG_NAME }} latest | |
poetry run mike set-default --push latest |