Skip to content

Commit

Permalink
Merge pull request #227 from EasyScience/develop
Browse files Browse the repository at this point in the history
Qt6 to master
  • Loading branch information
andped10 authored Nov 28, 2024
2 parents 5c4d19d + b6987ee commit c5d1ebe
Show file tree
Hide file tree
Showing 273 changed files with 13,071 additions and 2,614 deletions.
239 changes: 239 additions & 0 deletions .github/workflows/installer.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,239 @@
name: Build Installer

on:
push:
branches:
- "**"
pull_request:
branches:
- "**"

jobs:
build-installer:
timeout-minutes: 80

runs-on: ${{ matrix.os }}

strategy:
fail-fast: false
matrix:
os: [ubuntu-22.04, ubuntu-24.04, windows-2022, macos-13, macos-14]

steps:
- name: Check-out repository
uses: actions/checkout@v4

- name: Set up Python environment
uses: actions/setup-python@v5
with:
python-version: 3.11

- name: Upgrade package installer for Python
run: python -m pip install --upgrade pip

- name: Install Python dependences
run: |
python -m pip install flit
flit install --only-deps # Install the dependencies, but not the EasyReflectometryApp package itself
- name: Add extra info to pyproject.toml
run: python utils.py --update

- name: Declare env variables on push only
if: github.event_name == 'push'
shell: bash
run: echo "BRANCH_NAME=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV

- name: Declare env variables on pull_request only
if: github.event_name == 'pull_request'
shell: bash
run: echo "BRANCH_NAME=$GITHUB_HEAD_REF" >> $GITHUB_ENV

- name: Declare env variables on push and pull_request
shell: bash
run: |
echo "MATRIX_OS=${{ matrix.os }}" >> $GITHUB_ENV
echo "RUNNER_OS=${{ runner.os }}" >> $GITHUB_ENV
echo "RUNNER_ARCH=${{ runner.arch }}" >> $GITHUB_ENV
echo "TEMP_ARTIFACT_SUFFIX=$(python utils.py --get release.app_name)" >> $GITHUB_ENV
echo "APP_NAME=$(python utils.py --get release.app_name)" >> $GITHUB_ENV
echo "PACKAGE_NAME=$(python utils.py --get project.name)" >> $GITHUB_ENV
echo "PACKAGE_PATH=$GITHUB_WORKSPACE/$(python utils.py --get project.name)" >> $GITHUB_ENV
echo "PACKAGE_VERSION=$(python utils.py --get project.version)" >> $GITHUB_ENV
echo "RELEASE_TAG=$(python utils.py --get ci.app.info.release_tag)" >> $GITHUB_ENV
echo "RELEASE_TITLE=$(python utils.py --get ci.app.info.release_title)" >> $GITHUB_ENV
echo "SCRIPTS_PATH=$(python utils.py --get ci.project.subdirs.scripts)" >> $GITHUB_ENV
echo "DISTRIBUTION_PATH=$(python utils.py --get ci.project.subdirs.distribution)" >> $GITHUB_ENV
echo "DOWNLOAD_PATH=$(python utils.py --get ci.project.subdirs.download)" >> $GITHUB_ENV
echo "QTIFW_PATH=$(python utils.py --get ci.qtifw.setup.installation_path.${{ runner.os }})" >> $GITHUB_ENV
echo "PYTHON_PACKAGES_PATH=$(python utils.py --get ci.cache.python_packages_path)" >> $GITHUB_ENV
echo "GIT_INSTALL_URL=git+$GITHUB_SERVER_URL/$GITHUB_REPOSITORY@${{ env.BRANCH_NAME }}" >> $GITHUB_ENV
- name: Declare dependent env variables on push and pull_request
shell: bash
run: |
echo "SETUP_EXE_PATH=$(python ${{ env.SCRIPTS_PATH }}/Config.py ${{ env.BRANCH_NAME }} ${{ matrix.os }} setup_exe_path)" >> $GITHUB_ENV
- name: Install needed libraries (Linux)
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xfixes0 libxcb-shape0 libxcb-cursor0
- name: Create freezed python app bundle with PyInstaller
run: python ${{ env.SCRIPTS_PATH }}/FreezeApp.py

- name: Create offline app installer from freezed app bundle with QtIFW
run: >
python ${{ env.SCRIPTS_PATH }}/MakeInstaller.py
${{ env.BRANCH_NAME }} ${{ matrix.os }}
# - name: Sign, notarize and staple offline app installer (macOS)
# if: |
# runner.os == 'macOS' && github.event_name == 'push' &&
# (env.BRANCH_NAME == 'master' || env.BRANCH_NAME == 'develop')
# run: >
# python ${{ env.SCRIPTS_PATH }}/SignAppInstaller.py
# ${{ env.BRANCH_NAME }} ${{ matrix.os }}
# ${{ secrets.APPLE_CERT_DATA }} ${{ secrets.APPLE_CERT_PASSWORD }}
# ${{ secrets.APPLE_NOTARY_USER }} ${{ secrets.APPLE_NOTARY_PASSWORD }}

# - name: Sign offline app installer (Windows)
# if: |
# runner.os == 'Windows' && github.event_name == 'push' &&
# (env.BRANCH_NAME == 'master' || env.BRANCH_NAME == 'develop')
# uses: lando/code-sign-action@v2
# with:
# file: ${{ env.SETUP_EXE_PATH }}
# certificate-data: ${{ secrets.WINDOZE_CERT_DATA }}
# certificate-password: ${{ secrets.WINDOZE_CERT_PASSWORD }}
# keylocker-host: ${{ secrets.KEYLOCKER_HOST }}
# keylocker-api-key: ${{ secrets.KEYLOCKER_API_KEY }}
# keylocker-cert-sha1-hash: ${{ secrets.KEYLOCKER_CERT_SHA1_HASH }}

- name: Create zip archive of offline app installer for distribution
run: >
python ${{ env.SCRIPTS_PATH }}/ZipAppInstaller.py
${{ env.BRANCH_NAME }} ${{ matrix.os }}
- name: Upload double-zipped offline app installer for the next job step
uses: actions/upload-artifact@v4
with:
name: zipped-app-installer_${{ matrix.os }}-${{ runner.arch }} # zip of another zip
path: ${{ env.DISTRIBUTION_PATH }}/*.zip
compression-level: 0 # no compression
if-no-files-found: error
retention-days: 10

- name: Upload zipped offline app installer to GitHub releases (non-master branch)
if: github.event_name == 'push' && env.BRANCH_NAME != 'master'
uses: ncipollo/release-action@v1
with:
draft: true
prerelease: true
allowUpdates: true
replacesArtifacts: true
token: ${{ secrets.GITHUB_TOKEN }}
artifacts: "${{ env.DISTRIBUTION_PATH }}/*.zip"
tag: ${{ env.BRANCH_NAME }}
name: ${{ env.BRANCH_NAME }}
bodyFile: "RELEASE.md"

- name: Upload zipped offline app installer to GitHub releases (master branch)
if: github.event_name == 'push' && env.BRANCH_NAME == 'master'
uses: ncipollo/release-action@v1
with:
draft: true
prerelease: true
allowUpdates: true
replacesArtifacts: true
token: ${{ secrets.GITHUB_TOKEN }}
artifacts: "${{ env.DISTRIBUTION_PATH }}/*.zip"
tag: ${{ env.RELEASE_TAG }}
name: ${{ env.RELEASE_TITLE }}
bodyFile: "RELEASE.md"


test-installer:
needs: build-installer

timeout-minutes: 15

runs-on: ${{ matrix.os }}

strategy:
fail-fast: false
matrix:
os: [ubuntu-22.04, ubuntu-24.04, windows-2022, macos-13, macos-14]

steps:
- name: Check-out repository
uses: actions/checkout@v4

- name: Set up Python environment
uses: actions/setup-python@v5
with:
python-version: 3.11

- name: Upgrade package installer for Python
run: python -m pip install --upgrade pip

- name: Install Python dependences
run: |
python -m pip install toml
python -m pip install requests
- name: Declare env variables on push only
if: github.event_name == 'push'
shell: bash
run: echo "BRANCH_NAME=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV

- name: Declare env variables on pull_request only
if: github.event_name == 'pull_request'
shell: bash
run: echo "BRANCH_NAME=$GITHUB_HEAD_REF" >> $GITHUB_ENV

- name: Add extra info to pyproject.toml
run: python utils.py --update

- name: Declare env variables on push and pull_request
shell: bash
run: |
echo "SCRIPTS_PATH=$(python utils.py --get ci.project.subdirs.scripts)" >> $GITHUB_ENV
- name: Set up screen (Linux)
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install libxcb-xinerama0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xfixes0 libxcb-shape0 libxcb-cursor0
sudo apt-get install libpulse-mainloop-glib0
sudo apt-get install libxkbcommon-x11-0
sudo apt-get install libegl1-mesa-dev
Xvfb :0 -screen 0 1920x1080x24 -ac &
echo "DISPLAY=:0" >> $GITHUB_ENV
- name: Download zipped offline app installer from from the previous job step
uses: actions/download-artifact@v4
with:
name: zipped-app-installer_${{ matrix.os }}-${{ runner.arch }} # zip of another zip

- name: Unzip archive with offline app installer for distribution
run: >
python ${{ env.SCRIPTS_PATH }}/UnzipAppInstaller.py
${{ env.BRANCH_NAME }} ${{ matrix.os }}
- name: Make dir for .desktop file (Linux)
if: runner.os == 'Linux'
run: mkdir -p ~/.local/share/applications/

- name: Install app
run: >
python ${{ env.SCRIPTS_PATH }}/InstallApp.py
${{ env.BRANCH_NAME }} ${{ matrix.os }}
- name: Check app installation is done
run: python ${{ env.SCRIPTS_PATH }}/CheckAppExists.py

- name: Run app in testmode and quit (macOS & Linux)
if: runner.os != 'Windows' # disabled because it can't exit app and one can't see what is going on there (no GitHub logging)...
run: python ${{ env.SCRIPTS_PATH }}/RunApp.py --testmode
82 changes: 82 additions & 0 deletions .github/workflows/snapcraft.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
name: Build Snap Image

on:
workflow_dispatch:
# push:
# branches:
# - "**"
# pull_request:
# branches:
# - "**"

jobs:
build_snap:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: snapcore/action-build@v1
id: snapcraft
- uses: actions/upload-artifact@v3
with:
name: snap
path: ${{ steps.snapcraft.outputs.snap }}

install_test:
runs-on: ubuntu-latest
needs: build_snap
steps:
- uses: actions/download-artifact@v3
with:
name: snap
path: .
- name: Install snap
run: |
sudo snap install --dangerous *.snap
- name: Set up screen dependencies (Linux)
run: |
sudo apt-get -o Acquire::Retries=3 update
sudo apt-get -o Acquire::Retries=3 install libxcb-xinerama0
sudo apt-get -o Acquire::Retries=3 install libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xfixes0
sudo apt-get -o Acquire::Retries=3 install libpulse-mainloop-glib0
sudo apt-get -o Acquire::Retries=3 install libxkbcommon-x11-0
Xvfb :0 -screen 0 1920x1080x24 -ac &
echo "DISPLAY=:0" >> $GITHUB_ENV
- name: Run snap
run: |
snap run easyreflectometry &
sleep 60
upload_snap:
runs-on: ubuntu-latest
needs: install_test
steps:
- uses: actions/download-artifact@v3
with:
name: snap
path: .

- name: Get branch names
id: branch-name
uses: tj-actions/branch-names@v6

- name: Get snap filename
run: |
echo "SNAP_FILENAME=$(ls *.snap)" >> $GITHUB_ENV
- name: Publish Develop Branch to snapcraft beta
if: steps.branch-name.outputs.current_branch == 'develop'
uses: snapcore/action-publish@v1
env:
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.STORE_LOGIN }}
with:
snap: ${{ env.SNAP_FILENAME }}
release: beta

#- name: Publish Master Branch to snapcraft stable
# if: steps.branch-name.outputs.current_branch == 'master'
# uses: snapcore/action-publish@v1
# env:
# SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.STORE_LOGIN }}
# with:
# snap: ${{ env.SNAP_FILENAME }}
# release: stable
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ settings.ini*
.ci/
.idea/
.vscode/
ci/

#Snap
*.snap
Loading

0 comments on commit c5d1ebe

Please sign in to comment.