Bump Python version #1
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: Linux | |
on: [push, pull_request] | |
jobs: | |
build: | |
runs-on: tla-arm64-ubuntu-runner-01 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
sparse-checkout: .github/workflows/env | |
- name: Read variables from repo | |
run: cat .github/workflows/env >> $GITHUB_ENV | |
- name: Install dependencies | |
run: | | |
export PYVER_MINOR=${PYVER%.*} | |
echo "PYVER_MINOR: $PYVER_MINOR" | |
apt-get update | |
apt-get install -qq curl software-properties-common libnotify-dev libayatana-appindicator3-dev patchelf | |
add-apt-repository -y ppa:git-core/ppa | |
add-apt-repository -y ppa:deadsnakes/ppa | |
apt-get install -qq git python$PYVER_MINOR-dev python$PYVER_MINOR-venv | |
git config --global --add safe.directory "$GITHUB_WORKSPACE" | |
ln -s `which python$PYVER_MINOR` /usr/local/bin/python | |
ln -s `which python$PYVER_MINOR` /usr/local/bin/python3 | |
PYVER_TEMP=`/usr/local/bin/python --version` | |
export PYVERINST=${PYVER_TEMP#* } | |
echo "PYVERINST=$PYVERINST" >> $GITHUB_ENV | |
echo "Installed python version: $PYVERINST" | |
python -m ensurepip --user | |
python -m pip install -U pip pipx | |
- name: Verify Python version | |
if: ${{ env.PYVERINST != env.PYVER }} | |
run: | | |
echo "Python version not compatible" | |
echo "Installed python version: $PYVERINST" | |
echo "Expected: $PYVER" | |
exit 1 | |
- uses: actions/checkout@v4 | |
- name: Check app versions | |
run: | | |
python set-version.py | |
git diff --exit-code | |
- name: Cache helper | |
id: cache-helper | |
uses: actions/cache@v4 | |
with: | |
path: | | |
build/linux/helper | |
assets/licenses/helper.json | |
key: ${{ runner.os }}-py${{ env.PYVER }}-${{ hashFiles('helper/**') }} | |
- name: Build the Helper | |
if: steps.cache-helper.outputs.cache-hit != 'true' | |
run: | | |
apt-get install -qq swig libpcsclite-dev build-essential cmake | |
export PATH=$PATH:$HOME/.local/bin # Needed to ensure pipx/poetry on PATH | |
pipx install poetry | |
./build-helper.sh | |
- name: Install Flutter dependencies | |
run: | | |
apt-get install -qq clang cmake ninja-build pkg-config libgtk-3-dev jq | |
- uses: subosito/flutter-action@v2 | |
with: | |
channel: 'stable' | |
flutter-version: ${{ env.FLUTTER }} | |
- name: Configure Flutter | |
run: | | |
git config --global --add safe.directory $FLUTTER_ROOT | |
flutter config --enable-linux-desktop | |
flutter --version | |
- name: Run lints/tests | |
env: | |
SKIP: ${{ steps.cache-helper.outputs.cache-hit == 'true' && 'mypy,flake8,black,bandit' || ''}} | |
run: | | |
export PATH=$PATH:$HOME/.local/bin # Needed to ensure pip/pre-commit on PATH | |
pipx install pre-commit | |
pre-commit run --all-files | |
flutter test | |
- name: Build the app | |
run: flutter build linux | |
- name: Check generated files | |
run: git diff --exit-code | |
- name: Embedd appindicator | |
run: | | |
patchelf --set-rpath '$ORIGIN' build/linux/x64/release/bundle/lib/libtray_manager_plugin.so | |
cp -L /usr/lib/x86_64-linux-gnu/libayatana-appindicator3.so.1 build/linux/x64/release/bundle/lib/ | |
patchelf --set-rpath '$ORIGIN' build/linux/x64/release/bundle/lib/libayatana-appindicator3.so.1 | |
cp -L /usr/lib/x86_64-linux-gnu/libayatana-indicator3.so.7 build/linux/x64/release/bundle/lib/ | |
patchelf --set-rpath '$ORIGIN' build/linux/x64/release/bundle/lib/libayatana-indicator3.so.7 | |
cp -L /usr/lib/x86_64-linux-gnu/libdbusmenu-glib.so.4 build/linux/x64/release/bundle/lib/ | |
patchelf --set-rpath '$ORIGIN' build/linux/x64/release/bundle/lib/libdbusmenu-glib.so.4 | |
cp -L /usr/lib/x86_64-linux-gnu/libdbusmenu-gtk3.so.4 build/linux/x64/release/bundle/lib/ | |
patchelf --set-rpath '$ORIGIN' build/linux/x64/release/bundle/lib/libdbusmenu-gtk3.so.4 | |
- name: Rename and archive app | |
run: | | |
export REF=$(echo ${GITHUB_REF} | cut -d '/' -f 3) | |
export BASENAME="yubioath-desktop-${REF}-linux" | |
mkdir deploy | |
mv build/linux/x64/release/bundle "build/${BASENAME}" | |
tar -czf deploy/${BASENAME}.tar.gz -C build "${BASENAME}" | |
- name: Upload artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: yubioath-desktop-linux | |
path: deploy |