-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #227 from EasyScience/develop
Qt6 to master
- Loading branch information
Showing
273 changed files
with
13,071 additions
and
2,614 deletions.
There are no files selected for viewing
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
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 |
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
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 |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -46,6 +46,7 @@ settings.ini* | |
.ci/ | ||
.idea/ | ||
.vscode/ | ||
ci/ | ||
|
||
#Snap | ||
*.snap |
Oops, something went wrong.