blob: 88314fb43573cd840ef0e7cc5e40da090262fa5b (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
name: Update Ferdium package on winget
on:
workflow_dispatch:
inputs:
message:
description: "Channel to update"
required: false
release:
types: [published]
env:
REPO_URL: https://api.github.com/repos/ferdium/ferdium-app/releases
jobs:
manual_winget_update:
runs-on: windows-latest
name: "Manual winget update: ${{ github.event.inputs.message }}"
if: ${{ github.event_name == 'workflow_dispatch' }}
steps:
- name: "Install winget"
# cf https://github.com/actions/virtual-environments/issues/910#issuecomment-1009640391
# TODO: update urls to get more updated version
run: |
$ErrorActionPreference = 'Stop'
iwr $(iwr 'https://store.rg-adguard.net/api/GetFiles' -Method 'POST' -ContentType 'application/x-www-form-urlencoded' -Body 'type=PackageFamilyName&url=Microsoft.VCLibs.140.00_8wekyb3d8bbwe&ring=RP&lang=en-US' -UseBasicParsing | Foreach-Object Links | Where-Object outerHTML -match 'Microsoft.VCLibs.140.00_.+_x64__8wekyb3d8bbwe.appx' | Foreach-Object href) -OutFile $env:TEMP\vclibs.appx
iwr $(iwr 'https://store.rg-adguard.net/api/GetFiles' -Method 'POST' -ContentType 'application/x-www-form-urlencoded' -Body 'type=PackageFamilyName&url=Microsoft.VCLibs.140.00.UWPDesktop_8wekyb3d8bbwe&ring=RP&lang=en-US' -UseBasicParsing | Foreach-Object Links | Where-Object outerHTML -match 'Microsoft.VCLibs.140.00.UWPDesktop_.+_x64__8wekyb3d8bbwe.appx' | Foreach-Object href) -OutFile $env:TEMP\vclibsuwp.appx
iwr 'https://github.com/microsoft/winget-cli/releases/download/v1.1.12653/Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle' -OutFile $env:TEMP\winget.msixbundle
iwr 'https://github.com/microsoft/winget-cli/releases/download/v1.1.12653/9c0fe2ce7f8e410eb4a8f417de74517e_License1.xml' -Outfile $env:TEMP\winget.license
Add-AppxProvisionedPackage -Online -PackagePath $env:TEMP\winget.msixbundle -LicensePath $env:TEMP\winget.license -DependencyPackagePath @("$env:TEMP\vclibs.appx", "$env:TEMP\vclibsuwp.appx")
- name: "Verify winget"
run: |
winget --info
- name: "Get release tag"
run: |
if ("${{ contains(github.event.inputs.message, '[nightly]') }}" -eq $True) {
$preRel = $True
$tagInc = "nightly"
$package = "Ferdium.Ferdium.Nightly"
}
elseif ("${{ contains(github.event.inputs.message, '[beta]') }}" -eq $True) {
$preRel = $True
$tagInc = "beta"
$package = "Ferdium.Ferdium.Beta"
}
else
{
$preRel = $False
$tagInc = ""
$package = "Ferdium.Ferdium"
}
$release=Invoke-RestMethod -Uri '${{ env.REPO_URL }}'
$lastCorrectTag = $release | Where-Object -Property prerelease -eq $preRel | Where-Object -Property tag_name -match $tagInc | Select -First 1 | Select -ExpandProperty tag_name
$lastVersion = $($lastCorrectTag.Trim('v'))
echo "last_tag=$lastCorrectTag" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
echo "last_version=$lastVersion" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
echo "PACKAGE_NAME=$package" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
- name: "Verify if version already exist on winget"
run: |
$lastVersion = '${{ env.last_version }}'
$versions = winget show --id '${{ env.PACKAGE_NAME }}' --versions --accept-source-agreements
if ( $versions.Contains('${{ env.last_version }}') ) {
echo "version_exists='true'" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
}
- name: "Publish update"
if: ${{ env.version_exists != 'true' }}
run: |
$release=Invoke-RestMethod -Uri '${{ env.REPO_URL }}'
$assets = $release | Where-Object -Property tag_name -match '${{ env.last_tag }}' | Select -First 1 | Select -ExpandProperty assets
$urlSetup64 = $assets | Where-Object -Property name -CLike '*-win-AutoSetup*-x64.exe' | Select -ExpandProperty browser_download_url
$urlSetup86 = $assets | Where-Object -Property name -CLike '*-win-AutoSetup*-ia32.exe' | Select -ExpandProperty browser_download_url
$urlSetupArm = $assets | Where-Object -Property name -CLike '*-win-AutoSetup*-arm64.exe' | Select -ExpandProperty browser_download_url
$installerUrls = "'$urlSetup64|x64' '$urlSetup86|x86' '$urlSetupArm|arm64'"
Write-Host "urls to use: $installerUrls"
$package = '${{ env.PACKAGE_NAME }}'
$ghToken = '${{ secrets.FERDIUM_WINGET_PAT }}'
iwr https://aka.ms/wingetcreate/latest -OutFile wingetcreate.exe
# TODO: remove -o and add -s
$command = ".\wingetcreate.exe update $package -v '${{ env.last_version }}' -u $installerUrls -t $ghToken -o .\"
Write-Host $command
Invoke-Expression $command
winget_release:
name: "Update winget after publish: ${{ github.event.inputs.message }}"
if: ${{ github.event_name == 'release' }}
runs-on: windows-latest
steps:
- name: Check release type
run: |
PRERELEASE_VERSION="${{ github.event.release.prerelease == 'true' }}"
if [[ $PRERELEASE_VERSION == "true" && ${{ contains(github.event.release.tag_name, 'nightly') }} ]]; then
# use the nightly version
PACKAGE_NAME="Ferdium.Ferdium.Nightly"
elif [[ $PRERELEASE_VERSION == "true" && ${{ contains(github.event.release.tag_name, 'beta') }} ]]; then
PACKAGE_NAME="Ferdium.Ferdium.Beta"
else
PACKAGE_NAME="Ferdium.Ferdium"
fi
echo "Using package $PACKAGE_NAME with pre-release $PRERELEASE_VERSION"
echo "PACKAGE_NAME=$PACKAGE_NAME" >> $GITHUB_ENV
shell: bash
- name: Send update to winget
run: |
iwr https://aka.ms/wingetcreate/latest -OutFile wingetcreate.exe
$ghobject = Get-Content '${{ github.event_path }}' | ConvertFrom-Json
$assets = $ghobject.release.assets
$urlSetup64 = $assets | Where-Object -Property name -CLike '*-win-AutoSetup*-x64.exe' | Select -ExpandProperty browser_download_url
$urlSetup86 = $assets | Where-Object -Property name -CLike '*-win-AutoSetup*-ia32.exe' | Select -ExpandProperty browser_download_url
$urlSetupArm = $assets | Where-Object -Property name -CLike '*-win-AutoSetup*-arm64.exe' | Select -ExpandProperty browser_download_url
$installerUrls = "'$urlSetup64|x64' '$urlSetup86|x86' '$urlSetupArm|arm64'"
Write-Host "urls to use: $installerUrls"
$version = $ghobject.release.tag_name
$package = '${{ env.PACKAGE_NAME }}'
$ghToken = '${{ secrets.FERDIUM_WINGET_PAT }}'
# TODO: remove -o and add -s
$command = ".\wingetcreate.exe update $package -v $($version.Trim('v')) -u $installerUrls -t $ghToken -o .\"
Write-Host $command
Invoke-Command $command
|