Repository: slaclab/pydm (language: python)

Issue:
MAINT: Migrate to github actions
### Context

This PR removes the azure pipelines files, and replaces them with workflows for github actions. The intent is to keep the majority of the current functionality intact, but get to a state where maintenance and future updates are now much easier. There are some changes:

- The test suite now runs against multiple versions of pyqt as was suggested in #999 
   5.12.3 is the one with designer support, 5.15.7 is the latest from conda-forge
- Switched from conda to mamba to reduce solve time for testing and documentation building
- Moved to trusted publishing for uploading to PyPI. This recently came out of beta and is now recommended as best practice (https://docs.pypi.org/trusted-publishers/)

The one workflow I haven't migrated over yet is the one that uploads to the pydm tag in anaconda. I'm not sure if we still want to maintain these separate tags with pydm available on conda-forge

https://anaconda.org/pydm-tag/pydm/files
https://anaconda.org/pydm-dev/pydm/files

### Testing

All new files were tested on my fork.

This PR will kick off the new workflow for running tests.

The documentation job was tested here, though just uploading the built docs locally rather than pushing to gh-pages:
https://github.com/jbellister-slac/pydm/actions/runs/5449701997

The PyPI job was tested here against the test PyPI repository:
https://github.com/jbellister-slac/pydm/actions/runs/5470029942


Discussion / hints:

Fix patch:
diff --git a/.github/workflows/publish-to-pypi.yml b/.github/workflows/publish-to-pypi.yml
index f25376d95..d2a45964d 100644
--- a/.github/workflows/publish-to-pypi.yml
+++ b/.github/workflows/publish-to-pypi.yml
@@ -1,5 +1,5 @@
 # This workflow will run when a new release is published and upload it to PyPI using trusted publishing.
-# Done in two separate build and publish jobs per suggested best practice for limiting token usage.
+# Done in two separate build and publish jobs per suggested best practice for limiting scope of token usage.
 
 name: Publish - PyPI
 
@@ -10,6 +10,7 @@ on:
 
 jobs:
   build:
+    if: ${{ github.repository == 'slaclab/pydm' }}
     name: Build new release
     runs-on: ubuntu-latest
 
@@ -37,6 +38,7 @@ jobs:
         retention-days: 1
 
   publish:
+    if: ${{ github.repository == 'slaclab/pydm' }}
     name: Publish release to PyPI
     runs-on: ubuntu-latest
     permissions:


Test patch:
diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml
index 5fcc405cd..622aef86c 100644
--- a/.github/workflows/run-tests.yml
+++ b/.github/workflows/run-tests.yml
@@ -14,6 +14,7 @@ permissions:
 
 jobs:
   build:
+    if: ${{ github.repository == 'slaclab/pydm' }}
     runs-on: ${{ matrix.os }}
     strategy:
       fail-fast: false
@@ -37,12 +38,12 @@ jobs:
     - name: Install python packages
       shell: bash -el {0}
       run: |
+        # Note the pinning of zipp here is because versions 3.16.0+ do not support python 3.7. Specifying zipp can be entirely removed (will be pulled in by flake8) if pydm drops support for 3.7
         if [ "$RUNNER_OS" == "Windows" ]; then
-          mamba install flake8 pyqt=${{ matrix.pyqt-version }} 
-          mamba install --file requirements.txt 
-          mamba install --file windows-dev-requirements.txt
+          mamba install flake8 zipp=3.15.0 pyqt=${{ matrix.pyqt-version }}
+          mamba install --file requirements.txt --file windows-dev-requirements.txt
         else
-          mamba install flake8 pyqt=${{ matrix.pyqt-version }} $(cat requirements.txt dev-requirements.txt)
+          mamba install flake8 zipp=3.15.0 pyqt=${{ matrix.pyqt-version }} $(cat requirements.txt dev-requirements.txt)
         fi
     - name: Install packages for testing a pyqt app on linux
       shell: bash -el {0}