Compare commits

...

5 Commits

Author SHA1 Message Date
scito
cff5fe1cda ci_release: ignore response and remove silent mode 2023-01-24 23:18:28 +01:00
scito
576b1e68c5 ci: ignore markdown files 2023-01-24 23:00:32 +01:00
scito
84e1922979 fix VERSION_PATCH for pre-tags, e.g. 1b1 2023-01-24 22:48:22 +01:00
scito
7f89168b92 ci_release: change order of build matrix 2023-01-24 22:15:13 +01:00
scito
b9f17c4a95 rename build docker jobs 2023-01-24 22:12:02 +01:00
5 changed files with 55 additions and 48 deletions

View File

@@ -9,6 +9,7 @@ on:
push: push:
paths-ignore: paths-ignore:
- 'docs/**' - 'docs/**'
- '**.md'
# pull_request: # pull_request:
schedule: schedule:
# Run daily on default branch # Run daily on default branch

View File

@@ -13,6 +13,7 @@ on:
push: push:
paths-ignore: paths-ignore:
- 'docs/**' - 'docs/**'
- '**.md'
tags-ignore: tags-ignore:
- '**' - '**'
# branches is needed if tags-ignore is used # branches is needed if tags-ignore is used
@@ -24,7 +25,7 @@ on:
jobs: jobs:
build-and-push-docker-debian-image: build-and-push-docker-debian-image:
name: Build Docker image and push to repositories name: Build Docker Bullseye image and push to repositories
# run only when code is compiling and tests are passing # run only when code is compiling and tests are passing
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -63,7 +64,7 @@ jobs:
username: ${{ github.actor }} username: ${{ github.actor }}
password: ${{ secrets.GHCR_IO_TOKEN }} password: ${{ secrets.GHCR_IO_TOKEN }}
- name: "qr_reader: Build image and push to Docker Hub and GitHub Container Registry" - name: "Build image and push to Docker Hub and GitHub Container Registry"
id: docker_build_qr_reader_latest id: docker_build_qr_reader_latest
uses: docker/build-push-action@v3 uses: docker/build-push-action@v3
with: with:
@@ -89,7 +90,7 @@ jobs:
echo "extract_otp_secrets: ${{ steps.docker_build_qr_reader_latest.outputs.digest }}" echo "extract_otp_secrets: ${{ steps.docker_build_qr_reader_latest.outputs.digest }}"
build-and-push-docker-alpine-image: build-and-push-docker-alpine-image:
name: Build Docker image and push to repositories name: Build Docker Alpine image and push to repositories
# run only when code is compiling and tests are passing # run only when code is compiling and tests are passing
runs-on: ubuntu-latest runs-on: ubuntu-latest

View File

@@ -151,6 +151,7 @@ jobs:
- name: Smoke tests - name: Smoke tests
run: | run: |
dist/extract_otp_secrets_linux_x86_64 -V
dist/extract_otp_secrets_linux_x86_64 -h dist/extract_otp_secrets_linux_x86_64 -h
dist/extract_otp_secrets_linux_x86_64 example_export.png dist/extract_otp_secrets_linux_x86_64 example_export.png
dist/extract_otp_secrets_linux_x86_64 - < example_export.txt dist/extract_otp_secrets_linux_x86_64 - < example_export.txt
@@ -184,14 +185,17 @@ jobs:
matrix: matrix:
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#choosing-github-hosted-runners # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#choosing-github-hosted-runners
include: include:
- os: ubuntu-latest - os: windows-latest
TARGET: linux TARGET: windows
# TODO add --icon
# TODO add --manifest
# TODO find more elegant solution for pyzbar\libiconv.dll and pyzbar\libzbar-64.dll
CMD_BUILD: | CMD_BUILD: |
pyinstaller -y --add-data $pythonLocation/__yolo_v3_qr_detector/:__yolo_v3_qr_detector/ --onefile src/extract_otp_secrets.py pyinstaller -y --add-data "$($Env:pythonLocation)\__yolo_v3_qr_detector;__yolo_v3_qr_detector" --add-binary "$($Env:pythonLocation)\Lib\site-packages\pyzbar\libiconv.dll;pyzbar" --add-binary "$($Env:pythonLocation)\Lib\site-packages\pyzbar\libzbar-64.dll;pyzbar" --onefile --version-file build\file_version_info.txt src\extract_otp_secrets.py
OUT_FILE_NAME: extract_otp_secrets OUT_FILE_NAME: extract_otp_secrets.exe
ASSET_NAME: extract_otp_secrets_linux_x86_64_ubuntu_latest ASSET_NAME: extract_otp_secrets_win_x86_64.exe
ASSET_MIME: application/x-executable ASSET_MIME: application/vnd.microsoft.portable-executable
UPLOAD: false UPLOAD: true
- os: macos-11 - os: macos-11
TARGET: macos TARGET: macos
# TODO add --icon # TODO add --icon
@@ -206,17 +210,14 @@ jobs:
ASSET_NAME: extract_otp_secrets_macos_x86_64 ASSET_NAME: extract_otp_secrets_macos_x86_64
ASSET_MIME: application/x-newton-compatible-pkg ASSET_MIME: application/x-newton-compatible-pkg
UPLOAD: true UPLOAD: true
- os: windows-latest - os: ubuntu-latest
TARGET: windows TARGET: linux
# TODO add --icon
# TODO add --manifest
# TODO find more elegant solution for pyzbar\libiconv.dll and pyzbar\libzbar-64.dll
CMD_BUILD: | CMD_BUILD: |
pyinstaller -y --add-data "$($Env:pythonLocation)\__yolo_v3_qr_detector;__yolo_v3_qr_detector" --add-binary "$($Env:pythonLocation)\Lib\site-packages\pyzbar\libiconv.dll;pyzbar" --add-binary "$($Env:pythonLocation)\Lib\site-packages\pyzbar\libzbar-64.dll;pyzbar" --onefile --version-file build\file_version_info.txt src\extract_otp_secrets.py pyinstaller -y --add-data $pythonLocation/__yolo_v3_qr_detector/:__yolo_v3_qr_detector/ --onefile src/extract_otp_secrets.py
OUT_FILE_NAME: extract_otp_secrets.exe OUT_FILE_NAME: extract_otp_secrets
ASSET_NAME: extract_otp_secrets_win_x86_64.exe ASSET_NAME: extract_otp_secrets_linux_x86_64_ubuntu_latest
ASSET_MIME: application/vnd.microsoft.portable-executable ASSET_MIME: application/x-executable
UPLOAD: true UPLOAD: false
steps: steps:
- uses: actions/checkout@v3 - uses: actions/checkout@v3
- name: Set macos macos_python_path - name: Set macos macos_python_path
@@ -245,11 +246,12 @@ jobs:
shell: bash shell: bash
run: | run: |
mkdir -p build/ mkdir -p build/
VERSION_STR=$(setuptools-git-versioning) VERSION_MAJOR=$(cut -d '.' -f 1 <<< "$(setuptools-git-versioning)") VERSION_MINOR=$(cut -d '.' -f 2 <<< "$(setuptools-git-versioning)") VERSION_PATCH=$(cut -d '.' -f 3 <<< "$(setuptools-git-versioning)") VERSION_BUILD=$(($(git rev-list --count $(git tag | sort -V -r | sed '1!d')..HEAD))) YEARS='2020-2023' envsubst < file_version_info_template.txt > build/file_version_info.txt VERSION_STR=$(setuptools-git-versioning) VERSION_MAJOR=$(cut -d '.' -f 1 <<< "$(setuptools-git-versioning)") VERSION_MINOR=$(cut -d '.' -f 2 <<< "$(setuptools-git-versioning)") VERSION_PATCH=$(echo $(cut -d '.' -f 3 <<< "$(setuptools-git-versioning)") | sed -E "s/^([0-9]+).*/\1/") VERSION_BUILD=$(($(git rev-list --count $(git tag | sort -V -r | sed '1!d')..HEAD))) YEARS='2020-2023' envsubst < file_version_info_template.txt > build/file_version_info.txt
- name: Build with pyinstaller for ${{ matrix.TARGET }} - name: Build with pyinstaller for ${{ matrix.TARGET }}
run: ${{ matrix.CMD_BUILD }} run: ${{ matrix.CMD_BUILD }}
- name: Smoke tests for generated exe (general) - name: Smoke tests for generated exe (general)
run: | run: |
dist/${{ matrix.OUT_FILE_NAME }} -V
dist/${{ matrix.OUT_FILE_NAME }} -h dist/${{ matrix.OUT_FILE_NAME }} -h
dist/${{ matrix.OUT_FILE_NAME }} example_export.png dist/${{ matrix.OUT_FILE_NAME }} example_export.png
- name: Smoke tests for generated exe (stdin) - name: Smoke tests for generated exe (stdin)
@@ -268,14 +270,25 @@ jobs:
if: ${{ matrix.UPLOAD }} if: ${{ matrix.UPLOAD }}
shell: bash shell: bash
run: | run: |
response=$(curl \ curl \
-X POST \ -X POST \
-H "Accept: application/vnd.github+json" \ -H "Accept: application/vnd.github+json" \
-H "Content-Type: ${{ matrix.ASSET_MIME }}" \ -H "Content-Type: ${{ matrix.ASSET_MIME }}" \
-H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}"\ -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}"\
-H "X-GitHub-Api-Version: 2022-11-28" \ -H "X-GitHub-Api-Version: 2022-11-28" \
--silent \
--show-error \ --show-error \
--data-binary @dist/${{ matrix.OUT_FILE_NAME }} \ --data-binary @dist/${{ matrix.OUT_FILE_NAME }} \
$(cat release_url.txt)=${{ matrix.ASSET_NAME }}) $(cat release_url.txt)=${{ matrix.ASSET_NAME }}
# run: |
# response=$(curl \
# -X POST \
# -H "Accept: application/vnd.github+json" \
# -H "Content-Type: ${{ matrix.ASSET_MIME }}" \
# -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}"\
# -H "X-GitHub-Api-Version: 2022-11-28" \
# --silent \
# --show-error \
# --data-binary @dist/${{ matrix.OUT_FILE_NAME }} \
# $(cat release_url.txt)=${{ matrix.ASSET_NAME }})

View File

@@ -35,13 +35,12 @@ The secrets can be exported to JSON or CSV, or printed as QR codes to console or
## Table of contents ## Table of contents
- [Download binary executable (🆕 since v2.1)](#download-binary-executable--since-v21)
- [Usage](#usage) - [Usage](#usage)
- [Capture QR codes from camera (🆕 since version 2.0)](#capture-qr-codes-from-camera--since-version-20) - [Capture QR codes from camera (🆕 since version 2.0)](#capture-qr-codes-from-camera--since-version-20)
- [With builtin QR decoder from image files (🆕 since version 2.0)](#with-builtin-qr-decoder-from-image-files--since-version-20) - [With builtin QR decoder from image files (🆕 since version 2.0)](#with-builtin-qr-decoder-from-image-files--since-version-20)
- [With external QR decoder app from text files](#with-external-qr-decoder-app-from-text-files) - [With external QR decoder app from text files](#with-external-qr-decoder-app-from-text-files)
- [Installation](#installation) - [Installation of Python script (recommend for developers or advanced users)](#installation-of-python-script-recommend-for-developers-or-advanced-users)
- [Download binary executable (🆕 since v2.1)](#download-binary-executable--since-v21)
- [Run as script (recommend for developers or advanced users)](#run-as-script-recommend-for-developers-or-advanced-users)
- [Installation of shared system libraries](#installation-of-shared-system-libraries) - [Installation of shared system libraries](#installation-of-shared-system-libraries)
- [Program help: arguments and options](#program-help-arguments-and-options) - [Program help: arguments and options](#program-help-arguments-and-options)
- [Examples](#examples) - [Examples](#examples)
@@ -86,6 +85,15 @@ The secrets can be exported to JSON or CSV, or printed as QR codes to console or
- [Related projects](#related-projects) - [Related projects](#related-projects)
</details> </details>
## Download binary executable (🆕 since v2.1)
1. Download executable for your platform from [latest release](https://github.com/scito/extract_otp_secrets/releases/latest), see assets
2. Start executable by clicking or from command line
✅ Everything is just packed in one executable.
✅ No installation needed, neither Python nor dependencies have to be installed.
✅ Easy and convenient
## Usage ## Usage
### Capture QR codes from camera (🆕 since version 2.0) ### Capture QR codes from camera (🆕 since version 2.0)
@@ -97,10 +105,6 @@ The secrets can be exported to JSON or CSV, or printed as QR codes to console or
``` ```
extract_otp_secrets extract_otp_secrets
``` ```
or
```
python src/extract_otp_secrets.py
```
![CV2 Capture from camera screenshot](docs/cv2_capture_screenshot.png) ![CV2 Capture from camera screenshot](docs/cv2_capture_screenshot.png)
@@ -120,7 +124,7 @@ The secrets are printed by default to the console. [Set program parameters](#pro
4. Transfer the images files to the computer where his script is installed. 4. Transfer the images files to the computer where his script is installed.
5. Call this script with the file as input: 5. Call this script with the file as input:
``` ```
python src/extract_otp_secrets.py example_export.png extract_otp_secrets example_export.png
``` ```
6. Remove unencrypted files with secrets from your computer and mobile. 6. Remove unencrypted files with secrets from your computer and mobile.
@@ -133,22 +137,11 @@ python src/extract_otp_secrets.py example_export.png
5. Transfer the file to the computer where his script is installed. 5. Transfer the file to the computer where his script is installed.
6. Call this script with the file as input: 6. Call this script with the file as input:
``` ```
python src/extract_otp_secrets.py example_export.txt extract_otp_secrets example_export.txt
``` ```
7. Remove unencrypted files with secrets from your computer and mobile. 7. Remove unencrypted files with secrets from your computer and mobile.
## Installation ## Installation of Python script (recommend for developers or advanced users)
### Download binary executable (🆕 since v2.1)
1. Download executable for your platform from [latest release](https://github.com/scito/extract_otp_secrets/releases/latest), see assets
2. Start executable by clicking or from command line
✅ Everything is just packed in one executable.
✅ No installation needed, neither Python nor dependencies have to be installed.
✅ Easy and convenient
### Run as script (recommend for developers or advanced users)
```bash ```bash
git clone https://github.com/scito/extract_otp_secrets.git git clone https://github.com/scito/extract_otp_secrets.git

View File

@@ -3,13 +3,12 @@ Generate from file: README.md
## Table of contents ## Table of contents
- [Table of contents](#table-of-contents) - [Table of contents](#table-of-contents)
- [Download binary executable (🆕 since v2.1)](#download-binary-executable--since-v21)
- [Usage](#usage) - [Usage](#usage)
- [Capture QR codes from camera (🆕 since version 2.0)](#capture-qr-codes-from-camera--since-version-20) - [Capture QR codes from camera (🆕 since version 2.0)](#capture-qr-codes-from-camera--since-version-20)
- [With builtin QR decoder from image files (🆕 since version 2.0)](#with-builtin-qr-decoder-from-image-files--since-version-20) - [With builtin QR decoder from image files (🆕 since version 2.0)](#with-builtin-qr-decoder-from-image-files--since-version-20)
- [With external QR decoder app from text files](#with-external-qr-decoder-app-from-text-files) - [With external QR decoder app from text files](#with-external-qr-decoder-app-from-text-files)
- [Installation](#installation) - [Installation of Python script (recommend for developers or advanced users)](#installation-of-python-script-recommend-for-developers-or-advanced-users)
- [Download binary executable (🆕 since v2.1)](#download-binary-executable--since-v21)
- [Run as script (recommend for developers or advanced users)](#run-as-script-recommend-for-developers-or-advanced-users)
- [Installation of shared system libraries](#installation-of-shared-system-libraries) - [Installation of shared system libraries](#installation-of-shared-system-libraries)
- [Program help: arguments and options](#program-help-arguments-and-options) - [Program help: arguments and options](#program-help-arguments-and-options)
- [Examples](#examples) - [Examples](#examples)