Rewrite: Added documentation and cleared up code into an OOP design #306
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: build | |
on: | |
pull_request: | |
branches: | |
- main | |
paths: | |
- requirements.txt | |
- requirements.remote.txt | |
- '*.py' | |
- data/** | |
- codexctl/** | |
- builds/scripts/** | |
- builds/github-make-executable.sh | |
- Makefile | |
- .github/workflows/main.yml | |
push: | |
branches: | |
- main | |
paths: | |
- requirements.txt | |
- requirements.remote.txt | |
- '*.py' | |
- data/** | |
- codexctl/** | |
- builds/scripts/** | |
- builds/github-make-executable.sh | |
- Makefile | |
- .github/workflows/main.yml | |
workflow_dispatch: | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
remote: | |
name: Build for ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-latest | |
- windows-latest | |
- macos-latest | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Install Apt packages | |
if: matrix.os == 'ubuntu-latest' | |
id: cache-apt | |
uses: awalsh128/cache-apt-pkgs-action@latest | |
with: | |
execute_install_scripts: true | |
packages: libfuse-dev | |
version: 1.0 | |
- name: Install brew packages | |
if: matrix.os == 'macos-latest' | |
run: brew install coreutils | |
- name: Checkout the Git repository | |
uses: actions/checkout@v4 | |
- name: ccache | |
uses: hendrikmuhs/ccache-action@v1.2 | |
with: | |
key: ${{ github.job }}-${{ matrix.os }} | |
- name: Move .ccache | |
shell: bash | |
run: | | |
mkdir -p "$nuitka_cache" .ccache | |
mv .ccache "$nuitka_cache/ccache" | |
env: | |
nuitka_cache: ${{ github.workspace }}/.nuitka | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.12' | |
cache: 'pip' | |
cache-dependency-path: | | |
**/requirements*.txt | |
- name: Test codexctl | |
shell: bash | |
run: make test | |
- name: Build codexctl | |
shell: bash | |
run: ./github-make-executable.sh | |
env: | |
nuitka_cache: ${{ github.workspace }}/.nuitka | |
- name: Upload Compilation Report | |
uses: actions/upload-artifact@v4 | |
if: (success() || failure()) && runner.debug == '1' | |
with: | |
name: ${{ matrix.os }}-compilation-report | |
path: compilation-report.xml | |
if-no-files-found: warn | |
- name: Test Built version | |
shell: bash | |
run: make test-executable | |
- name: Move .ccache | |
shell: bash | |
run: | | |
mv "$nuitka_cache/ccache" .ccache | |
env: | |
nuitka_cache: ${{ github.workspace }}/.nuitka | |
- name: Upload executable | |
if: matrix.os != 'windows-latest' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.os }} | |
path: dist/codexctl.bin | |
if-no-files-found: error | |
- name: Upload executable | |
if: matrix.os == 'windows-latest' | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.os }} | |
path: dist/codexctl.exe | |
if-no-files-found: error | |
device: | |
name: Build for remarkable | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout the codexctl repository | |
uses: actions/checkout@v4 | |
- name: Nuitka ccache | |
uses: actions/cache@v3 | |
with: | |
path: ${{ github.workspace }}/.nuitka | |
key: ${{ github.job }}-remarkable | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v3 | |
- name: Set up Docker Buildx | |
uses: docker/setup-buildx-action@v3 | |
- name: Build executable | |
shell: bash | |
run: | | |
docker run \ | |
--rm \ | |
--platform=linux/arm/v7 \ | |
-v "${src_path}":/src \ | |
eeems/nuitka-arm-builder:bullseye-3.11 \ | |
bash -ec "$script" | |
env: | |
src_path: ${{ github.workspace }} | |
script: | | |
echo "[info] Installing build dependencies" | |
apt update | |
apt install -y \ | |
libfuse-dev | |
cd /src | |
source /opt/lib/nuitka/bin/activate | |
./github-make-executable.sh | |
- name: Upload Compilation Report | |
uses: actions/upload-artifact@v4 | |
if: runner.debug == '1' | |
with: | |
name: ${{ matrix.os }}-compilation-report | |
path: compilation-report.xml | |
if-no-files-found: warn | |
- name: Upload executable | |
uses: actions/upload-artifact@v4 | |
with: | |
name: remarkable | |
path: dist/codexctl.bin | |
if-no-files-found: error | |
test_device: | |
name: Test for reMarkable ${{ matrix.fw_version }} | |
needs: [device] | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
fw_version: | |
- '2.15.1' | |
- '3.3.2' | |
# - '3.9.3' | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
path: artifacts | |
name: remarkable | |
- uses: Eeems-Org/run-in-remarkable-action@v1 | |
with: | |
path: artifacts | |
fw_version: ${{ matrix.fw_version }} | |
run: | | |
chmod +x ./codexctl.bin | |
./codexctl.bin download --hardware rm2 --out /tmp toltec | |
release: | |
name: Release | |
needs: [remote,device,test_device] | |
runs-on: ubuntu-latest | |
if: github.ref == 'refs/heads/main' | |
permissions: | |
contents: write | |
steps: | |
- name: Set current date as env variable | |
run: | | |
echo "NAME=$(date +'%Y-%m-%d %H:%M')" >> $GITHUB_ENV | |
echo "TAG=$(date +%s)" >> $GITHUB_ENV | |
- uses: actions/download-artifact@v4 | |
with: | |
path: artifacts | |
- name: Rename artifacts | |
run: | | |
ls artifacts | while read artifact; do | |
pushd artifacts/${artifact} | |
zip -r ../${artifact}.zip . | |
popd | |
done | |
- uses: ncipollo/release-action@v1 | |
with: | |
artifacts: "artifacts/*.zip" | |
name: ${{ env.NAME }} | |
tag: ${{ env.TAG }} | |
commit: ${{ github.sha }} | |
generateReleaseNotes: true | |
makeLatest: true |