Skip to content

Commit

Permalink
Updated fsbuild, added macOS10.9 target (#115)
Browse files Browse the repository at this point in the history
* Updated fsbuild, added macOS10.9 target

* Correct bundle.sh for stable branch

* Install appdmg

* macOS: Sign with both SHA-1 and SHA-256 hashes

* macOS10.9 - add pyobjc

* Updated workflow

* More build fixes

* Separate workflows

* Don't specify Python 3.9

* Updated version
  • Loading branch information
FrodeSolheim authored Jun 5, 2021
1 parent a54ca85 commit f454e4f
Show file tree
Hide file tree
Showing 23 changed files with 1,906 additions and 724 deletions.
92 changes: 92 additions & 0 deletions .github/workflows/linux.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
name: Linux
on:
push:
branches:
- master
- dev
- stable
pull_request:
branches:
- master
- dev
- stable
jobs:
x86-64:
runs-on: ubuntu-18.04
steps:

- name: Install deb packages
run: >-
sudo apt install
dos2unix
gettext
- uses: actions/checkout@v2
with:
fetch-depth: 0

- name: Set up Python 3.9
uses: actions/setup-python@v2
with:
python-version: 3.9

- name: Install dependencies
run: |
python -m pip install --upgrade pip pipenv
- name: Run pipenv install
run: |
pipenv install --deploy
- name: Download pyinstaller source
run: |
wget https://github.com/pyinstaller/pyinstaller/releases/download/v4.2/PyInstaller-4.2.tar.gz
echo "f5c0eeb2aa663cce9a5404292c0195011fa500a6501c873a466b2e8cad3c950c *PyInstaller-4.2.tar.gz" > SHA256SUMS
shasum -c SHA256SUMS
tar xf PyInstaller-4.2.tar.gz
- name: Compile new bootloader for pyinstaller
run: |
cd pyinstaller-4.2/bootloader
CC="gcc -no-pie" ./waf all
- name: Replace pyinstaller with custom version
run: |
pipenv uninstall pyinstaller
pipenv install `pwd`/pyinstaller-4.2
- name: Update version
run: |
fsbuild/version --update --auto
- name: Bootstrap
run: fsbuild/bootstrap

- name: Build
run: |
pipenv run fsbuild/build
- name: Bundle
run: |
pipenv run fsbuild/bundle
- name: Archive
run: |
fsbuild/archive
- uses: actions/upload-artifact@v2
with:
name: Linux_x86-64
path: fsbuild/_dist/*

- name: Upload build to Dropbox folder
if: >-
github.ref == 'refs/heads/master' ||
github.ref == 'refs/heads/dev' ||
github.ref == 'refs/heads/stable'
run: |
python3 -m pip install dropbox
fsbuild/upload
env:
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
DROPBOX_ACCESS_TOKEN: ${{ secrets.DROPBOX_ACCESS_TOKEN }}
137 changes: 137 additions & 0 deletions .github/workflows/macos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,137 @@
name: macOS
on:
push:
branches:
- master
- dev
- stable
pull_request:
branches:
- master
- dev
- stable
jobs:
x86-64:
runs-on: macos-10.15
steps:

- name: Install brew packages
run: |
brew install dos2unix
- uses: actions/checkout@v2
with:
fetch-depth: 0

- name: Check Python version
run: |
which python3
python3 --version
which python3.9
python3.9 --version
- name: Download Python
run: |
wget https://www.python.org/ftp/python/3.9.5/python-3.9.5-macosx10.9.pkg
echo "f65931e47676f8e835f70d4fc3cac0cb2ee9cd7393af4b90cc7f207d23437b75 *python-3.9.5-macosx10.9.pkg" > SHA256SUMS
shasum -c SHA256SUMS
- name: Install Python
run: |
sudo installer -pkg python-3.9.5-macosx10.9.pkg -target /
- name: Add Python to PATH
run: |
echo /Library/Frameworks/Python.framework/Versions/3.9/bin >> $GITHUB_PATH
- name: Install Python dependencies
run: |
python3 -m pip install --upgrade pip pipenv dmgbuild
- name: Install Node dependencies
run: |
npm install -g appdmg
- name: Run pipenv install
run: |
pipenv install --deploy
- name: Update version
run: |
fsbuild/version --update --auto
- name: Bootstrap
run: fsbuild/bootstrap

- name: Build
run: |
pipenv run fsbuild/build
- name: Bundle
run: |
fsbuild/bundle
- name: Prepare signing certificate
run: |
echo $SIGNING_CERTIFICATE_P12_DATA | base64 --decode > certificate.p12
security create-keychain -p $KEYCHAIN_PASSWORD build.keychain
security default-keychain -s build.keychain
security unlock-keychain -p $KEYCHAIN_PASSWORD build.keychain
security import certificate.p12 -k build.keychain -P $SIGNING_CERTIFICATE_PASSWORD -T /usr/bin/codesign
security set-key-partition-list -S apple-tool:,apple: -s -k $KEYCHAIN_PASSWORD build.keychain
env:
KEYCHAIN_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
SIGNING_CERTIFICATE_P12_DATA: ${{ secrets.MACOS_CERTIFICATE_P12_DATA }}
SIGNING_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}

- name: Sign
run: fsbuild/sign

- name: Notarize
run: fsbuild/notarize
env:
NOTARIZATION_PASSWORD: ${{ secrets.MACOS_NOTARIZATION_PASSWORD }}
NOTARIZATION_PROVIDER: ${{ secrets.MACOS_NOTARIZATION_PROVIDER }}
NOTARIZATION_USERNAME: ${{ secrets.MACOS_NOTARIZATION_USERNAME }}

- name: Archive
run: fsbuild/archive

- name: Build DMG
run: fsbuild/dmg --build

- name: Unlock keychain again
run: |
echo $SIGNING_CERTIFICATE_P12_DATA | base64 --decode > certificate.p12
security unlock-keychain -p $KEYCHAIN_PASSWORD build.keychain
env:
KEYCHAIN_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
SIGNING_CERTIFICATE_P12_DATA: ${{ secrets.MACOS_CERTIFICATE_P12_DATA }}
SIGNING_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}

- name: Sign DMG
run: fsbuild/dmg --sign

- name: Notarize DMG
run: fsbuild/dmg --notarize
env:
NOTARIZATION_PASSWORD: ${{ secrets.MACOS_NOTARIZATION_PASSWORD }}
NOTARIZATION_PROVIDER: ${{ secrets.MACOS_NOTARIZATION_PROVIDER }}
NOTARIZATION_USERNAME: ${{ secrets.MACOS_NOTARIZATION_USERNAME }}

- uses: actions/upload-artifact@v2
with:
name: macos_x86-64
path: fsbuild/_dist/*

- name: Upload build to Dropbox folder
if: >-
github.ref == 'refs/heads/master' ||
github.ref == 'refs/heads/dev' ||
github.ref == 'refs/heads/stable'
run: |
python3 -m pip install dropbox
fsbuild/upload
env:
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
DROPBOX_ACCESS_TOKEN: ${{ secrets.DROPBOX_ACCESS_TOKEN }}
136 changes: 136 additions & 0 deletions .github/workflows/macos10.9.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
name: macOS10.9
on:
push:
branches:
- master
- dev
- stable
pull_request:
branches:
- master
- dev
- stable
jobs:
x86-64:
runs-on: macos-10.15
env:
SYSTEM_OS_DIST: macOS10.9
steps:

- name: Install brew packages
run: |
brew install dos2unix
- uses: actions/checkout@v2
with:
fetch-depth: 0

- name: Download Python
run: |
wget https://www.python.org/ftp/python/3.7.9/python-3.7.9-macosx10.9.pkg
echo "bf54a14eef23467991e8c7a88c7307762e484c024a94ec1ee292ac1db3d41fc9 *python-3.7.9-macosx10.9.pkg" > SHA256SUMS
shasum -c SHA256SUMS
- name: Install Python
run: |
sudo installer -pkg python-3.7.9-macosx10.9.pkg -target /
- name: Add Python to PATH
run: |
echo /Library/Frameworks/Python.framework/Versions/3.7/bin >> $GITHUB_PATH
- name: Install dependencies
run: |
python3 -m pip install --upgrade pip pipenv dmgbuild
- name: Modifications for macOS 10.9
run: |
cp fsbuild/macOS10.9/* .
- name: Install Node dependencies
run: |
npm install -g appdmg
- name: Run pipenv install
run: |
pipenv install --deploy
- name: Update version
run: |
fsbuild/version --update --auto
- name: Bootstrap
run: fsbuild/bootstrap

- name: Build
run: |
pipenv run fsbuild/build
- name: Bundle
run: |
fsbuild/bundle
- name: Prepare signing certificate
run: |
echo $SIGNING_CERTIFICATE_P12_DATA | base64 --decode > certificate.p12
security create-keychain -p $KEYCHAIN_PASSWORD build.keychain
security default-keychain -s build.keychain
security unlock-keychain -p $KEYCHAIN_PASSWORD build.keychain
security import certificate.p12 -k build.keychain -P $SIGNING_CERTIFICATE_PASSWORD -T /usr/bin/codesign
security set-key-partition-list -S apple-tool:,apple: -s -k $KEYCHAIN_PASSWORD build.keychain
env:
KEYCHAIN_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
SIGNING_CERTIFICATE_P12_DATA: ${{ secrets.MACOS_CERTIFICATE_P12_DATA }}
SIGNING_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}

- name: Sign
run: fsbuild/sign

- name: Notarize
run: fsbuild/notarize
env:
NOTARIZATION_PASSWORD: ${{ secrets.MACOS_NOTARIZATION_PASSWORD }}
NOTARIZATION_PROVIDER: ${{ secrets.MACOS_NOTARIZATION_PROVIDER }}
NOTARIZATION_USERNAME: ${{ secrets.MACOS_NOTARIZATION_USERNAME }}

- name: Archive
run: fsbuild/archive

- name: Build DMG
run: fsbuild/dmg --build

- name: Unlock keychain again
run: |
echo $SIGNING_CERTIFICATE_P12_DATA | base64 --decode > certificate.p12
security unlock-keychain -p $KEYCHAIN_PASSWORD build.keychain
env:
KEYCHAIN_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}
SIGNING_CERTIFICATE_P12_DATA: ${{ secrets.MACOS_CERTIFICATE_P12_DATA }}
SIGNING_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }}

- name: Sign DMG
run: fsbuild/dmg --sign

- name: Notarize DMG
run: fsbuild/dmg --notarize
env:
NOTARIZATION_PASSWORD: ${{ secrets.MACOS_NOTARIZATION_PASSWORD }}
NOTARIZATION_PROVIDER: ${{ secrets.MACOS_NOTARIZATION_PROVIDER }}
NOTARIZATION_USERNAME: ${{ secrets.MACOS_NOTARIZATION_USERNAME }}

- uses: actions/upload-artifact@v2
with:
name: macos_x86-64
path: fsbuild/_dist/*

- name: Upload build to Dropbox folder
if: >-
github.ref == 'refs/heads/master' ||
github.ref == 'refs/heads/dev' ||
github.ref == 'refs/heads/stable'
run: |
python3 -m pip install dropbox
fsbuild/upload
env:
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
DROPBOX_ACCESS_TOKEN: ${{ secrets.DROPBOX_ACCESS_TOKEN }}
Loading

0 comments on commit f454e4f

Please sign in to comment.