refactor(clipboard): distinguish between compatible and available han… #19
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-12, 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-12' | |
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-12, 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-12, 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 | |
- 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 | |
if: github.repository_owner == 'dynobo' | |
with: | |
name: Internal | |
body: "Only for internal tests. Should not be published. [${{ env.NOW }}]" | |
artifacts: "*/*.+(dmg|AppImage|msi|zip)" | |
artifactErrorsFailBuild: false | |
allowUpdates: true | |
draft: true | |
prerelease: true | |
token: ${{ secrets.GITHUB_TOKEN }} | |
tag: "internal" | |
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: [ubuntu-22.04, macos-12, windows-2022] | |
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/FTP-Deploy-Action@v4.3.4 | |
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/gh-action-sigstore-python@v2.1.1 | |
with: | |
inputs: ./dist/*.tar.gz ./dist/*.whl | |
release-signing-artifacts: true | |
release-documentation: | |
name: Deploy github pages | |
needs: deploy-briefcase | |
runs-on: ubuntu-22.04 | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Deploy pages | |
uses: peaceiris/actions-gh-pages@v3 | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
publish_dir: ./docs |