Refactor: Add dockerfile, fix some type errors, update type annotations, add some error-handling, formatting #126
Workflow file for this run
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 | |
# only run on pushes to main or pull requests | |
on: | |
push: | |
branches: [ "*"] | |
pull_request: | |
branches: [ main , development ] | |
jobs: | |
ci: | |
# Set up operating system | |
runs-on: ubuntu-latest | |
# Define job steps | |
steps: | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.9" | |
- name: Check-out repository | |
uses: actions/checkout@v3 | |
- name: Install poetry | |
uses: snok/install-poetry@v1 | |
- name: Install package | |
run: poetry install | |
# Commented out until we have a repo for coverage | |
# - name: Test with pytest | |
# run: poetry run pytest tests/ --cov=readii --cov-report=xml | |
# - name: Use Codecov to track coverage | |
# uses: codecov/codecov-action@v3 | |
# with: | |
# files: ./coverage.xml # coverage report | |
cd: | |
# Only run this job if the "ci" job passes | |
needs: ci | |
# # Only run this job if new work is pushed to "main" | |
if: github.ref == 'refs/heads/main' | |
# Set up operating system | |
runs-on: ubuntu-latest | |
# Define job steps | |
steps: | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.9" | |
- name: Check-out repository | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Install poetry | |
uses: snok/install-poetry@v1 | |
- name: Install package | |
run: poetry install | |
# This action uses Python Semantic Release v8 | |
- name: Python Semantic Release | |
id: release | |
uses: python-semantic-release/python-semantic-release@master | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
- name: Test Outputs of semantic release step | |
run: | | |
echo "${{ steps.release.outputs.released }}" | |
echo "${{ steps.release.outputs.version }}" | |
echo "${{ steps.release.outputs.tag }}" | |
- name: Install packaging-related tool | |
if: steps.release.outputs.released == 'true' | |
run: | |
python3 -m pip install build twine | |
- name: Build package | |
if: steps.release.outputs.released == 'true' | |
run: | | |
poetry version ${{ steps.release.outputs.version }} | |
python -m build --sdist --wheel --outdir dist/ . | |
ls dist/ | |
- name: Publish to TestPyPI | |
if: steps.release.outputs.released == 'true' | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
user: __token__ | |
password: ${{ secrets.TEST_PYPI_API_TOKEN }} | |
repository-url: https://test.pypi.org/legacy/ | |
- name: Test install from TestPyPI | |
if: steps.release.outputs.released == 'true' | |
run: | | |
pip install \ | |
--index-url https://test.pypi.org/simple/ \ | |
--extra-index-url https://pypi.org/simple \ | |
readii | |
- name: Publish to PyPI | |
if: steps.release.outputs.released == 'true' | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
user: __token__ | |
password: ${{ secrets.PYPI_API_TOKEN }} | |
- name: Set up QEMU | |
if: steps.release.outputs.released == 'true' | |
uses: docker/setup-qemu-action@v3 | |
- name: Set up Docker Buildx | |
if: steps.release.outputs.released == 'true' | |
uses: docker/setup-buildx-action@v3 | |
- name: Login to Docker Hub | |
if: steps.release.outputs.released == 'true' | |
uses: docker/login-action@v3 | |
with: | |
username: ${{ secrets.BHKLAB_DOCKERHUB_USERNAME }} | |
password: ${{ secrets.BHKLAB_DOCKERHUB_ACCESS_KEY }} | |
- name: Login to the GitHub Container Registry | |
if: steps.release.outputs.released == 'true' | |
uses: docker/login-action@v3 | |
with: | |
registry: ghcr.io | |
username: ${{ github.actor }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Extract metadata (tags, labels) for Docker | |
if: steps.release.outputs.released == 'true' | |
id: meta | |
uses: docker/metadata-action@v3 | |
with: | |
images: | | |
${{ secrets.BHKLAB_DOCKERHUB_USERNAME }}/readii:${{ steps.release.outputs.tag }} | |
ghcr.io/${{ github.repository }}/readii:${{ steps.release.outputs.tag }} | |
- name: Build | |
if: steps.release.outputs.released == 'true' | |
uses: docker/build-push-action@v5 | |
with: | |
context: . | |
platforms: linux/amd64,linux/arm64 | |
file: ./Dockerfile | |
push: true | |
tags: | | |
${{ secrets.BHKLAB_DOCKERHUB_USERNAME }}/readii:${{ steps.release.outputs.tag }} | |
${{ secrets.BHKLAB_DOCKERHUB_USERNAME }}/readii:latest | |
ghcr.io/${{ github.repository }}/readii:${{ steps.release.outputs.tag }} | |
ghcr.io/${{ github.repository }}/readii:latest | |
labels: ${{ steps.meta.outputs.labels }} |