Skip to content
This repository has been archived by the owner on Nov 25, 2024. It is now read-only.

Build Application

Build Application #26

Workflow file for this run

name: Build Application
permissions:
contents: write
actions: write
checks: write
deployments: write
issues: write
packages: write
pull-requests: write
repository-projects: write
security-events: write
statuses: write
on:
push:
branches:
- main
pull_request:
branches:
- main
workflow_dispatch:
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-20.04, macos-12, windows-2019]
steps:
- uses: actions/checkout@v2
- name: Set up Python
uses: actions/setup-python@v2
with:
python-version: '3.11'
- name: Install PyInstaller and Dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
pip install pyinstaller
- name: Build with PyInstaller
run: |
pyinstaller crackle_viewer.spec
- name: Upload Artifacts
uses: actions/upload-artifact@v2
with:
name: ${{ runner.os }}-Executable
path: dist/*
- name: Create or Update Release
id: create_release
uses: actions/github-script@v5
with:
script: |
const release = await github.rest.repos.getReleaseByTag({
owner: context.repo.owner,
repo: context.repo.repo,
tag: 'latest-release'
}).catch(() => null);
let uploadUrl;
if (release) {
console.log(`Updating release: ${release.data.id}`);
const updatedRelease = await github.rest.repos.updateRelease({
owner: context.repo.owner,
repo: context.repo.repo,
release_id: release.data.id,
tag_name: 'latest-release',
name: 'Latest Release',
draft: false,
prerelease: false
});
uploadUrl = updatedRelease.data.upload_url;
} else {
console.log('Creating new release');
const newRelease = await github.rest.repos.createRelease({
owner: context.repo.owner,
repo: context.repo.repo,
tag_name: 'latest-release',
name: 'Latest Release',
draft: false,
prerelease: false
});
uploadUrl = newRelease.data.upload_url;
}
core.setOutput('upload_url', uploadUrl);
// Delete existing assets if they exist
const assets = await github.rest.repos.listReleaseAssets({
owner: context.repo.owner,
repo: context.repo.repo,
release_id: release ? release.data.id : newRelease.data.id,
});
for (const asset of assets.data) {
if (asset.name === '${{ runner.os }}.zip') {
await github.rest.repos.deleteReleaseAsset({
owner: context.repo.owner,
repo: context.repo.repo,
asset_id: asset.id
});
console.log(`Deleted existing asset: ${asset.name}`);
}
}
- name: Zip Executable and Dependencies
shell: pwsh
run: |
$osType = "${{ runner.os }}"
if ($osType -eq "Windows") {
# PowerShell command for Windows
Compress-Archive -Path dist/* -DestinationPath "$osType-Executable.zip"
} else {
# Use PowerShell's native capabilities to handle Linux/macOS zipping if necessary
# Moving to a shell script file if needed
& bash -c "cd dist && zip -r ../$osType-Executable.zip ./* && cd .."
}
- name: Upload Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ${{ runner.os }}-Executable.zip
asset_name: ${{ runner.os }}.zip
asset_content_type: application/zip