v15.9.0 #31
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: Build release | |
on: | |
pull_request: | |
types: [closed] | |
branches: | |
- 'master' | |
workflow_dispatch: | |
env: | |
PYTHON_VERSION: '3.10' | |
jobs: | |
windows: | |
name: Windows | |
runs-on: windows-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up variables | |
id: vars | |
run: | | |
Add-Content $env:GITHUB_OUTPUT "sha_short=$(git rev-parse --short HEAD)" | |
- name: Append git revision to project version | |
run: | | |
(Get-Content version.py) ` | |
-Replace '^__version__\s*=\s*"[^"]+', "`$0.${{steps.vars.outputs.sha_short}}" |` | |
Out-File version.py | |
# Ensure Python version | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{env.PYTHON_VERSION}} | |
- name: Install project dependencies | |
run: | | |
python3 -m pip install wheel | |
python3 -m pip install -r requirements.txt | |
- name: Install UPX | |
run: | | |
Invoke-WebRequest -Uri https://github.com/upx/upx/releases/download/v4.0.2/upx-4.0.2-win64.zip -OutFile (Join-Path $env:Temp upx.zip) | |
Expand-Archive -LiteralPath (Join-Path $env:Temp upx.zip) -DestinationPath $env:Temp | |
Move-Item -Path (Join-Path $env:Temp upx-*) -Destination (Join-Path $env:Temp upx) | |
Add-Content $env:GITHUB_PATH (Join-Path $env:Temp upx) | |
- name: Install PyInstaller | |
run: | | |
python3 -m pip install pyinstaller | |
- name: Create portable executable | |
run: | | |
pyinstaller build.spec | |
- name: Create release folder | |
run: | | |
$FolderName = 'Twitch Drops Miner' | |
New-Item $FolderName -ItemType Directory | |
Copy-Item dist\*.exe $FolderName | |
Copy-Item manual.txt $FolderName | |
Compress-Archive -Path $FolderName -DestinationPath Twitch.Drops.Miner.Windows.zip | |
- name: Upload build artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
if-no-files-found: error | |
name: Twitch.Drops.Miner.Windows | |
path: Twitch.Drops.Miner.Windows.zip | |
linux-pyinstaller: | |
name: Linux (PyInstaller) | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up variables | |
id: vars | |
run: | | |
echo "sha_short=$(git rev-parse --short HEAD)" >> "${GITHUB_OUTPUT}" | |
- name: Append git revision to project version | |
run: | | |
sed -ri "s/^__version__\s*=\s*\"[^\"]+/\0.${{ steps.vars.outputs.sha_short }}/" version.py | |
# NOTE: We're only use a custom version of Python here because truststore requires at least Python 3.10, but Ubuntu 20.04 has Python 3.8. | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{env.PYTHON_VERSION}} | |
- name: Install system dependencies | |
run: | | |
sudo apt update | |
sudo apt install gir1.2-appindicator3-0.1 libgirepository1.0-dev python3-tk | |
- name: Install project dependencies | |
run: | | |
python3 -m pip install wheel | |
python3 -m pip install -r requirements.txt | |
- name: Install PyInstaller | |
run: | | |
python3 -m pip install pyinstaller | |
# NOTE: Remove this step if/once libxft gets updated to 2.3.5 or newer on Ubuntu 20.04, which currently has 2.3.3. | |
- name: Build a recent version of libXft | |
run: | | |
mkdir -p /tmp/libXft | |
cd /tmp/libXft | |
curl -L https://xorg.freedesktop.org/releases/individual/lib/libXft-2.3.8.tar.xz -o libXft.tar.xz | |
tar xvf libXft.tar.xz | |
cd libXft-* | |
./configure --prefix=/tmp/libXft --sysconfdir=/etc --disable-static | |
make | |
make install-strip | |
- name: Create portable executable | |
run: | | |
LD_LIBRARY_PATH=/tmp/libXft/lib xvfb-run --auto-servernum pyinstaller build.spec | |
- name: Show PyInstaller warnings | |
run: | | |
cat build/build/warn-build.txt || true | |
- name: Create release folder | |
run: | | |
folder='Twitch Drops Miner' | |
mkdir "${folder}" | |
cp manual.txt dist/* "${folder}" | |
7z a Twitch.Drops.Miner.Linux.PyInstaller.zip "${folder}" | |
- name: Upload build artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
if-no-files-found: error | |
name: Twitch.Drops.Miner.Linux.PyInstaller | |
path: Twitch.Drops.Miner.Linux.PyInstaller.zip | |
linux-appimage: | |
name: Linux (AppImage) | |
runs-on: ubuntu-22.04 | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Set up variables | |
id: vars | |
run: | | |
echo "app_version=$(python3 -c 'from version import __version__ as v; print(v)')" >> "${GITHUB_OUTPUT}" | |
echo "sha_short=$(git rev-parse --short HEAD)" >> "${GITHUB_OUTPUT}" | |
- name: Append git revision to project version | |
run: | | |
sed -ri "s/^__version__\s*=\s*\"[^\"]+/\0.${{steps.vars.outputs.sha_short}}/" version.py | |
- name: Install system dependencies | |
run: | | |
sudo apt update | |
sudo apt install libgirepository1.0-dev python3-testresources | |
- name: Download AppImage Builder | |
run: | | |
curl -L https://github.com/AppImageCrafters/appimage-builder/releases/download/v1.1.0/appimage-builder-1.1.0-x86_64.AppImage -o appimage-builder | |
chmod +x appimage-builder | |
- name: Create AppImage | |
env: | |
APPIMAGE_EXTRACT_AND_RUN: 1 | |
APP_VERSION: ${{steps.vars.outputs.app_version}}.${{steps.vars.outputs.sha_short}} | |
PYTHON_VERSION: ${{env.PYTHON_VERSION}} | |
run: | | |
./appimage-builder --recipe appimage/AppImageBuilder.yml | |
- name: Create release folder | |
run: | | |
folder='Twitch Drops Miner' | |
mkdir "${folder}" | |
cp *.AppImage manual.txt "${folder}" | |
7z a Twitch.Drops.Miner.Linux.AppImage.zip "${folder}" | |
- name: Upload build artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
if-no-files-found: error | |
name: Twitch.Drops.Miner.Linux.AppImage | |
path: Twitch.Drops.Miner.Linux.AppImage.zip | |
update_releases_page: | |
name: Upload builds to Releases | |
#NOTEif: github.event.pull_request.merged == true | |
needs: | |
- windows | |
- linux-pyinstaller | |
- linux-appimage | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v3 | |
- name: Get next version | |
uses: reecetech/[email protected] | |
id: version | |
with: | |
scheme: semver | |
increment: minor | |
- name: Set up variables | |
id: vars | |
run: | | |
echo "date_now=$(date --rfc-3339=seconds)" >> "${GITHUB_OUTPUT}" | |
echo "sha_short=$(git rev-parse --short HEAD)" >> "${GITHUB_OUTPUT}" | |
- name: Download build artifacts from previous jobs | |
uses: actions/download-artifact@v4 | |
with: | |
path: artifacts | |
- name: Read patch notes from file | |
id: patch_notes | |
uses: juliangruber/[email protected] | |
with: | |
path: ./patch_notes.txt | |
- name: Upload builds to Releases | |
uses: ncipollo/release-action@v1 | |
with: | |
allowUpdates: true | |
artifactErrorsFailBuild: true | |
artifacts: artifacts/*/* | |
body: | | |
# ⚠️ Please help with translation as tracked in #2 (Indonesian) and channel points as tracked in #23 ! | |
*** | |
**This is an automatically generated updated version of the application, that includes the latest master branch changes.** | |
**This build should be stable, but if you encounter anything, please report any issues you find.** | |
- Last build date: `${{ steps.vars.outputs.date_now }}` | |
- Reference commit: ${{ github.sha }} | |
*** | |
## Patch notes: | |
${{ steps.patch_notes.outputs.content }} | |
name: ${{ steps.version.outputs.v-version }} - Updated tested build (${{ steps.vars.outputs.sha_short }}) | |
prerelease: false | |
removeArtifacts: true | |
tag: ${{ steps.version.outputs.v-version }} |