Skip to content

update GHA to use main #128

update GHA to use main

update GHA to use main #128

Workflow file for this run

name: Python Test and Package
on:
push:
branches:
- main
tags:
- 'v*'
pull_request:
branches:
- main
jobs:
linting:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.8
uses: actions/setup-python@v3
with:
python-version: 3.8
- name: Install tools
run: |
python -m pip install --upgrade pip
pip install black flake8
- name: Lint with black
run: |
python -m black --check --diff .
- name: Lint with flake8
run: |
# stop the build for flake8 issues
python -m flake8 . --show-source --statistics
test:
needs: linting
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.8, 3.11]
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Create LFS file list
run: |
git lfs ls-files -l | cut -d' ' -f1 | sort > .lfs-assets-id
- name: Restore LFS cache
uses: actions/cache@v3
id: lfs-cache
with:
path: .git/lfs
key: lfs-v1-${{ hashFiles('.lfs-assets-id') }}
restore-keys:
lfs-v1-
- name: Git LFS Pull
run: |
git lfs pull
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -e .[dev]
env:
PIP_EXTRA_INDEX_URL: https://${{secrets.ARTIFACTORY_RO_USER}}:${{secrets.ARTIFACTORY_RO_TOKEN}}@artifactory.niaid.nih.gov/artifactory/api/pypi/bcbb-pypi/simple
- name: Test with pytest
run: |
python -m pytest
package_docs:
needs: test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Create LFS file list
run: |
git lfs ls-files -l | cut -d' ' -f1 | sort > .lfs-assets-id
- name: Restore LFS cache
uses: actions/cache@v3
id: lfs-cache
with:
path: .git/lfs
key: lfs-v1-${{ hashFiles('.lfs-assets-id') }}
restore-keys: |
lfs-v1-
- name: Git LFS Pull
run: |
git lfs pull
- name: Set up Python 3.9
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install build
- name: Build package
run: |
python -m build
ls -la dist
- name: Upload package
if: github.event_name == 'push'
uses: actions/upload-artifact@v3
with:
name: python-packages
path: dist
- name: Build Sphinx Documentation
run: |
# install so that setuptools_scm generate version for package
pip install -r docs/requirements.txt -e .
make -C docs html
env:
PIP_EXTRA_INDEX_URL: https://${{secrets.ARTIFACTORY_RO_USER}}:${{secrets.ARTIFACTORY_RO_TOKEN}}@artifactory.niaid.nih.gov/artifactory/api/pypi/bcbb-pypi/simple
- name: Upload documentation
if: github.event_name == 'push'
uses: actions/upload-artifact@v3
with:
name: sphinx-docs
path: docs/_build/html
- name: Update gh-pages
if: github.ref == 'refs/heads/master'
run: |
rm docs/_build/html/.buildinfo
touch docs/_build/html/.nojekyll
git update-ref refs/heads/${TARGET_BRANCH} origin/${TARGET_BRANCH}
./utils/update-gh-pages.sh docs/_build/html
repo_uri="https://x-access-token:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git"
git push $repo_uri ${TARGET_BRANCH}
env:
GITHUB_TOKEN: ${{ secrets.github_token }}
TARGET_BRANCH: 'gh-pages'
publish_release:
if: startsWith(github.ref, 'refs/tags/v')
needs: package_docs
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v3
id: download
with:
name: python-packages
- name: Extract Python Packages
id: files
run: |
cd ${{steps.download.outputs.download-path}}
echo ::set-output name=file1::$(ls tbpcxr*any.whl)
echo ::set-output name=file2::$(ls tbpcxr*.tar.gz)
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
draft: false
prerelease: false
- name: Upload Release Asset Wheel
if: startsWith(github.ref, 'refs/tags/v')
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
# This pulls from the CREATE RELEASE step above, referencing it's ID to get its outputs object, which include
# a `upload_url`. See this blog post for more info:
# https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ${{steps.download.outputs.download-path}}/${{steps.files.outputs.file1}}
asset_name: ${{steps.files.outputs.file1}}
asset_content_type: application/octet-stream
- name: Upload Release Asset Source
if: startsWith(github.ref, 'refs/tags/v')
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ${{steps.download.outputs.download-path}}/${{steps.files.outputs.file2}}
asset_name: ${{steps.files.outputs.file2}}
asset_content_type: application/octet-stream
- name: bcbb-pypi upload
run: |
python -m pip install twine
python -m twine check ${{steps.download.outputs.download-path}}/*
python -m twine upload ${{steps.download.outputs.download-path}}/*
env:
TWINE_REPOSITORY_URL: https://artifactory.niaid.nih.gov/artifactory/api/pypi/bcbb-pypi
TWINE_PASSWORD: ${{secrets.BCBB_PYPI_PASSWORD}}
TWINE_USERNAME: ${{secrets.BCBB_PYPI_USERNAME}}