build(release): bump to 0.5.5 #121
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
# Infos on current github runners: | |
# https://docs.github.com/en/free-pro-team@latest/actions/reference/specifications-for-github-hosted-runners#about-github-hosted-runners | |
name: CI/CD | |
on: | |
pull_request: | |
push: | |
branches: ["main"] | |
tags: ["v*"] | |
workflow_dispatch: | |
inputs: | |
refToBuild: | |
description: "Branch, tag or commit SHA1 to build" | |
required: true | |
type: string | |
concurrency: | |
group: cicd-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
test: | |
name: Lint & Test | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-11, macos-14, windows-2022, ubuntu-22.04] | |
steps: | |
# Setup environment | |
- uses: actions/checkout@v4 | |
if: ${{ github.event_name != 'workflow_dispatch' }} | |
- uses: actions/checkout@v4 | |
if: ${{ github.event_name == 'workflow_dispatch' }} | |
with: | |
ref: ${{ inputs.refToBuild }} | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.10" | |
cache: "pip" | |
- name: Install hatch | |
run: pip install hatch | |
- name: Prepare Linux | |
if: matrix.os == 'ubuntu-22.04' | |
run: | | |
sudo apt-get update | |
sudo apt-get install \ | |
python3-pil \ | |
tesseract-ocr \ | |
tesseract-ocr-eng \ | |
tesseract-ocr-jpn \ | |
tesseract-ocr-chi-sim \ | |
xclip | |
sudo apt-get install \ | |
xvfb \ | |
libxkbcommon-x11-0 \ | |
libxcb-icccm4 \ | |
libxcb-image0 \ | |
libxcb-keysyms1 \ | |
libxcb-randr0 \ | |
libxcb-render-util0 \ | |
libxcb-xinerama0 \ | |
libxcb-xfixes0 \ | |
libxcb-shape0 \ | |
libxcb-cursor0 \ | |
libegl1 \ | |
libegl1-mesa | |
sudo apt-get install \ | |
ca-certificates | |
echo "XDG_SESSION_TYPE=gnome" >> $GITHUB_ENV | |
echo "QT_DEBUG_PLUGINS=1" >> $GITHUB_ENV | |
echo "QT_QPA_PLATFORM=xcb" >> $GITHUB_ENV | |
- name: Prepare macOS | |
if: matrix.os == 'macos-11' || matrix.os == 'macos-14' | |
run: | | |
brew install pkg-config tesseract tesseract-lang dylibbundler | |
brew info tesseract | |
- name: Prepare Windows | |
if: matrix.os == 'windows-2022' | |
run: | | |
$url = "https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w64-setup-v5.3.0.20221214.exe" | |
Invoke-WebRequest -Uri $url -OutFile "tesseract_installer.exe" | |
7z x tesseract_installer.exe -O"C:\Program Files\Tesseract-OCR" | |
$chi_sim_url = "https://github.com/tesseract-ocr/tessdata_fast/raw/main/chi_sim.traineddata" | |
Invoke-WebRequest -Uri $chi_sim_url -OutFile "C:\Program Files\Tesseract-OCR\tessdata\chi_sim.traineddata" | |
$jpn_url = "https://github.com/tesseract-ocr/tessdata_fast/raw/main/jpn.traineddata" | |
Invoke-WebRequest -Uri $jpn_url -OutFile "C:\Program Files\Tesseract-OCR\tessdata\jpn.traineddata" | |
$tesseract = "C:\Program Files\Tesseract-OCR\" | |
echo "$tesseract" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append | |
echo "TESSDATA_PREFIX=$tesseract\tessdata" >> $env:GITHUB_ENV | |
Set-DisplayResolution -Width 1920 -Height 1080 -Force | |
- name: Test tesseract | |
run: | | |
tesseract --version | |
tesseract --list-langs | |
- name: Run project checks | |
run: hatch run check | |
env: | |
QT_DEBUG_PLUGINS: 1 | |
- name: Coveralls Parallel | |
uses: coverallsapp/github-action@release/v2 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
flag-name: ${{ matrix.os }} | |
path-to-lcov: coverage.lcov | |
parallel: true | |
test-python-package: | |
name: Test Python package build | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-11, macos-14, windows-2022, ubuntu-22.04] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.10" | |
cache: "pip" | |
- name: Install hatch | |
run: pip install hatch | |
- name: Test build python package | |
run: hatch build | |
test-briefcase: | |
name: Test Briefcase build | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-11, macos-14, windows-2022, ubuntu-22.04] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.10" | |
cache: "pip" | |
- name: Install hatch | |
run: pip install hatch | |
- name: Test build briefcase package | |
shell: bash -l {0} | |
run: hatch run bundle --dev | |
- name: Print briefcase log in case of error | |
if: failure() | |
shell: bash -l {0} | |
run: | | |
(cat logs/briefcase*) || true | |
find build/normcap || true | |
# For security reasons, github doesn't allow setting envvars using expressions | |
# directly. Therefore, we need an extra step: | |
- name: Set current date as env variable | |
shell: bash -l {0} | |
run: echo "NOW=$(date +'%Y-%m-%dT%H:%M:%S')" >> $GITHUB_ENV | |
- name: Draft internal release | |
uses: ncipollo/release-action@v1 | |
# It's possible, that the run lacks release permissions (e.g. on forks). In | |
# this is not crucial, so we just silence the error. | |
continue-on-error: true | |
if: github.repository_owner == 'dynobo' | |
with: | |
name: Internal | |
body: "Only for internal tests. Should not be published. [${{ env.NOW }}]" | |
repo: normcap | |
owner: dynobo | |
artifacts: "*/*.+(dmg|AppImage|msi|zip)" | |
allowUpdates: true | |
draft: true | |
prerelease: true | |
token: ${{ secrets.GITHUB_TOKEN }} | |
tag: "internal" | |
test-documentation: | |
name: Test documentation build | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.10" | |
cache: "pip" | |
- name: Install hatch | |
run: pip install hatch | |
- name: Build documentation | |
run: hatch run build-docs | |
coveralls: | |
name: Upload coverage | |
needs: test | |
if: github.repository_owner == 'dynobo' | |
runs-on: ubuntu-latest | |
steps: | |
- name: Coveralls Finished | |
uses: coverallsapp/github-action@release/v2 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
parallel-finished: true | |
codeql: | |
name: CodeQL | |
runs-on: ubuntu-latest | |
permissions: | |
actions: read | |
contents: read | |
security-events: write | |
strategy: | |
fail-fast: false | |
matrix: | |
language: ["javascript", "python"] | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Initialize CodeQL | |
uses: github/codeql-action/init@v3 | |
with: | |
languages: ${{ matrix.language }} | |
queries: security-extended | |
- name: Autobuild | |
uses: github/codeql-action/autobuild@v3 | |
- name: Perform CodeQL Analysis | |
uses: github/codeql-action/analyze@v3 | |
deploy-briefcase: | |
name: Briefcase build & draft release | |
needs: | |
- test | |
- test-briefcase | |
- test-python-package | |
if: | | |
startsWith(github.ref, 'refs/tags/v') | |
&& github.repository_owner == 'dynobo' | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [macos-11, macos-14, windows-2022, ubuntu-22.04] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.10" | |
cache: "pip" | |
- name: Install hatch | |
run: pip install hatch | |
- name: Build package briefcase | |
shell: bash -l {0} | |
run: hatch run bundle | |
- name: Draft release | |
if: github.repository == 'dynobo/normcap' | |
uses: ncipollo/release-action@v1 | |
with: | |
body: | |
See [CHANGELOG](https://github.com/dynobo/normcap/blob/main/CHANGELOG) for | |
details. | |
artifacts: "*/*.+(dmg|AppImage|msi|zip)" | |
artifactErrorsFailBuild: false | |
allowUpdates: true | |
draft: true | |
token: ${{ secrets.GITHUB_TOKEN }} | |
- name: FTP upload windows package | |
if: matrix.os == 'windows-2022' && github.repository == 'dynobo/normcap' | |
uses: SamKirkland/[email protected] | |
with: | |
server: ${{ secrets.WEBGO_FTP_HOST }} | |
username: ${{ secrets.WEBGO_FTP_USER }} | |
password: ${{ secrets.WEBGO_FTP_PASS }} | |
protocol: ftps | |
local-dir: ./bundle/ | |
exclude: | | |
**/platforms/** | |
**/imgs/** | |
**/*.py | |
**/*.wxs | |
**/*.wxs | |
**/metainfo | |
deploy-pypi: | |
name: Publish to PyPi | |
needs: deploy-briefcase | |
runs-on: ubuntu-22.04 | |
permissions: | |
# Used to authenticate to PyPI via OIDC. | |
# Used to sign the release's artifacts with sigstore-python. | |
id-token: write | |
# Used to attach signing artifacts to the published release. | |
contents: write | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.10" | |
cache: "pip" | |
- name: Install hatch | |
run: pip install hatch | |
- name: Build Python package | |
run: hatch build | |
- name: Publish to PyPi | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
verbose: true | |
print-hash: true | |
- name: Sign published artifacts | |
uses: sigstore/[email protected] | |
with: | |
inputs: ./dist/*.tar.gz ./dist/*.whl | |
release-signing-artifacts: true | |
release-documentation: | |
name: Deploy github pages | |
needs: | |
- test | |
- test-documentation | |
if: | | |
(startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main') | |
&& github.repository_owner == 'dynobo' | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: "3.10" | |
cache: "pip" | |
- name: Install hatch | |
run: pip install hatch | |
- name: Build documentation | |
run: hatch run build-docs | |
- name: Deploy pages | |
uses: peaceiris/actions-gh-pages@v3 | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
publish_dir: ./site |