Skip to content

Release Latest

Release Latest #25

Workflow file for this run

name: Release Latest
on: [workflow_dispatch]
jobs:
GetVersion:
runs-on: ubuntu-latest
outputs:
VersionNumber: ${{ steps.get_version_number.outputs.VersionNumber }}
VersionNumberSpaceless: ${{ steps.get_version_number.outputs.VersionNumberSpaceless }}
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Get version number
id: get_version_number
run: |
# Capture the output of the script
OUTPUT=$(python src/utils/readini.py assets/Version.ini Release VersionNumber)
# Extract the VersionNumber and VersionNumberSpaceless from the output
VERSION_NUMBER=$(echo "$OUTPUT" | grep 'VersionNumber=' | cut -d '=' -f 2)
VERSION_NUMBER_SPACED=$(echo "$OUTPUT" | grep 'VersionNumberSpaceless=' | cut -d '=' -f 2)
# Print extracted values for debugging
echo "Extracted VERSION_NUMBER: $VERSION_NUMBER"
echo "Extracted VERSION_NUMBER_SPACED: $VERSION_NUMBER_SPACED"
# Set the outputs for the job
echo "VersionNumber=$VERSION_NUMBER" >> $GITHUB_OUTPUT
echo "VersionNumberSpaceless=$VERSION_NUMBER_SPACED" >> $GITHUB_OUTPUT
BuildExecutable:
runs-on: windows-latest
needs: [GetVersion]
env:
VersionTag: v${{needs.GetVersion.outputs.VersionNumber}}
VersionTagSpaceless: v${{needs.GetVersion.outputs.VersionNumberSpaceless}}
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install poetry
uses: abatilo/actions-poetry@v2
- name: Install dependencies
run: poetry install
- name: Freeze Installer
run: poetry run pyinstaller build-signed.spec
- name: Upload build
uses: actions/upload-artifact@v4
with:
name: InitialBuild
path: dist
retention-days: 1
SignExecutable:
runs-on: self-hosted
needs: [BuildExecutable]
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: InitialBuild
path: dist
- name: Sign Executable
run: signtool sign /tr http://timestamp.digicert.com /td sha256 /fd sha256 /a .\dist\facecommander\facecommander.exe
- name: Upload build
uses: actions/upload-artifact@v4
with:
name: SignedBuild
path: dist
retention-days: 1
BuildInstaller:
runs-on: windows-latest
needs: [SignExecutable]
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: SignedBuild
path: dist
- name: Build Installer
run: iscc installer.iss
- name: Upload installer
uses: actions/upload-artifact@v4
with:
name: UnsignedInstaller
path: Output
retention-days: 1
SignInstaller:
runs-on: self-hosted
needs: [BuildInstaller, GetVersion]
env:
VersionTag: v${{needs.GetVersion.outputs.VersionNumber}}
VersionTagSpaceless: v${{needs.GetVersion.outputs.VersionNumberSpaceless}}
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: UnsignedInstaller
path: Output
- name: Sign Installer
run: signtool sign /tr http://timestamp.digicert.com /td sha256 /fd sha256 /a ./Output/FaceCommander-Installer-${{env.VersionTag}}.exe
- name: Upload build
uses: actions/upload-artifact@v4
with:
name: SignedInstaller
path: Output
retention-days: 1
Release:
runs-on: self-hosted
needs: [SignInstaller, GetVersion]
env:
VersionTag: v${{needs.GetVersion.outputs.VersionNumber}}
VersionTagSpaceless: v${{needs.GetVersion.outputs.VersionNumberSpaceless}}
steps:
- name: Create tag
uses: actions/github-script@v7
with:
script: |
github.rest.git.createRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: "refs/tags/${{ env.VersionTagSpaceless }}",
sha: context.sha
})
- uses: actions/download-artifact@v4
with:
name: SignedInstaller
path: Output
- name: Release
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ env.VersionTagSpaceless }}
name: ${{ env.VersionTag }}
draft: false
prerelease: false
fail_on_unmatched_files: true
files: |
Output/FaceCommander-Installer-${{ env.VersionTag }}.exe