Add customizable max transition duration for settings changes (#291) #182
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: main | |
on: | |
workflow_dispatch: | |
push: | |
branches: | |
- master | |
tags: | |
- "*" | |
pull_request: | |
branches: | |
- master | |
env: | |
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true | |
DOTNET_NOLOGO: true | |
DOTNET_CLI_TELEMETRY_OPTOUT: true | |
jobs: | |
format: | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
permissions: | |
contents: read | |
steps: | |
- name: Checkout | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
- name: Install .NET | |
uses: actions/setup-dotnet@4d6c8fcf3c8f7a60068d26b594648e99df24cee3 # v4.0.0 | |
with: | |
dotnet-version: 8.0.x | |
- name: Verify formatting | |
run: > | |
dotnet build | |
-t:CSharpierFormat | |
--configuration Release | |
test: | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
permissions: | |
contents: read | |
steps: | |
- name: Checkout | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
- name: Install .NET | |
uses: actions/setup-dotnet@4d6c8fcf3c8f7a60068d26b594648e99df24cee3 # v4.0.0 | |
with: | |
dotnet-version: 8.0.x | |
- name: Run tests | |
run: > | |
dotnet test | |
-p:CSharpier_Bypass=true | |
--configuration Release | |
--logger "GitHubActions;summary.includePassedTests=true;summary.includeSkippedTests=true" | |
--collect:"XPlat Code Coverage" | |
-- | |
RunConfiguration.CollectSourceInformation=true | |
DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=opencover | |
- name: Upload coverage | |
uses: codecov/codecov-action@f30e4959ba63075080d4f7f90cacc18d9f3fafd7 # v4.0.0 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
pack: | |
runs-on: windows-latest | |
timeout-minutes: 10 | |
permissions: | |
actions: write | |
contents: read | |
steps: | |
- name: Checkout | |
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
- name: Install .NET | |
uses: actions/setup-dotnet@4d6c8fcf3c8f7a60068d26b594648e99df24cee3 # v4.0.0 | |
with: | |
dotnet-version: 8.0.x | |
- name: Publish app | |
run: > | |
dotnet publish LightBulb | |
-p:Version=${{ github.ref_type == 'tag' && github.ref_name || format('999.9.9-ci-{0}', github.sha) }} | |
-p:CSharpier_Bypass=true | |
--output LightBulb/bin/publish/ | |
--configuration Release | |
--use-current-runtime | |
- name: Create installer | |
shell: pwsh | |
env: | |
INSTALLER_APP_VERSION: ${{ github.ref_type == 'tag' && github.ref_name || format('999.9.9-ci-{0}', github.sha) }} | |
run: | | |
choco install innosetup --no-progress | |
Copy-Item -Path LightBulb/bin/publish/ -Recurse -Destination Installer/Source/ | |
& "c:\Program Files (x86)\Inno Setup 6\ISCC.exe" Installer/Installer.iss | |
- name: Upload artifacts (portable) | |
uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0 | |
with: | |
name: LightBulb | |
path: LightBulb/bin/publish/ | |
if-no-files-found: error | |
- name: Upload artifacts (installer) | |
uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0 | |
with: | |
name: LightBulb-Installer | |
path: Installer/bin/LightBulb-Installer.exe | |
if-no-files-found: error | |
deploy: | |
if: ${{ github.ref_type == 'tag' }} | |
needs: | |
- format | |
- test | |
- pack | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
permissions: | |
actions: read | |
contents: write | |
steps: | |
- name: Download artifacts (portable) | |
uses: actions/download-artifact@6b208ae046db98c579e8a3aa621ab581ff575935 # v4.1.1 | |
with: | |
name: LightBulb | |
path: LightBulb/ | |
- name: Download artifacts (installer) | |
uses: actions/download-artifact@6b208ae046db98c579e8a3aa621ab581ff575935 # v4.1.1 | |
with: | |
name: LightBulb-Installer | |
- name: Create package (portable) | |
# Change into the artifacts directory to avoid including the directory itself in the zip archive | |
working-directory: LightBulb/ | |
run: zip -r ../LightBulb.zip . | |
- name: Create release | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
run: > | |
gh release create ${{ github.ref_name }} | |
LightBulb.zip | |
LightBulb-Installer.exe | |
--repo ${{ github.event.repository.full_name }} | |
--title ${{ github.ref_name }} | |
--generate-notes | |
--verify-tag | |
notify: | |
needs: deploy | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
permissions: | |
contents: read | |
steps: | |
- name: Notify Discord | |
uses: tyrrrz/action-http-request@64c70c67f5ebc54d4c7ea09cbe3553322778afd5 # 1.1.2 | |
with: | |
url: ${{ secrets.DISCORD_WEBHOOK }} | |
method: POST | |
headers: | | |
Content-Type: application/json; charset=UTF-8 | |
body: | | |
{ | |
"avatar_url": "https://raw.githubusercontent.com/${{ github.event.repository.full_name }}/${{ github.ref_name }}/favicon.png", | |
"content": "[**${{ github.event.repository.name }}**](<${{ github.event.repository.html_url }}>) v${{ github.ref_name }} has been released!" | |
} | |
retry-count: 5 |