Thanks to visit codestin.com
Credit goes to github.com

Skip to content

chore: windows winget package auto update on every release #4761

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
Nov 14, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions .github/workflows/packages.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: Submit Packages
on:
release:
types: [published]

env:
CODER_VERSION: "${{ github.event.release.tag_name }}"

jobs:
winget:
runs-on: windows-latest
steps:
- name: Install wingetcreate
run: |
Invoke-WebRequest https://aka.ms/wingetcreate/latest -OutFile wingetcreate.exe

# the package version is the same as the release tag without the leading
# "v", and with a trailing ".0" (e.g. "v1.2.3" -> "1.2.3.0")
- name: Calculate package version
id: version
run: |
$version = $env:CODER_VERSION -replace "^v", ""
$version += ".0"
echo "::set-output name=version::$version"

- name: Submit updated manifest to winget-pkgs
run: |
$release_assets = gh release view --repo coder/coder "$env:CODER_VERSION" --json assets | `
ConvertFrom-Json

$installer_url = $release_assets.assets | `
Where-Object name -Match ".*_windows_amd64_installer.exe$" | `
Select -ExpandProperty url

echo "Installer URL: $installer_url"

# version should be extracted from the installer
wingetcreate update Coder.Coder `
--submit `
--version "${{ steps.version.outputs.version }}" `
--urls "$installer_url" `
--token "${{ secrets.CDRCI_GITHUB_TOKEN }}"

- name: Comment on PR
run: |
# find the PR that wingetcreate just made
$pr_list = gh pr list --repo microsoft/winget-pkgs --search "author:cdrci Coder.Coder version ${{ steps.version.outputs.version }}" --limit 1 --json number | `
ConvertFrom-Json`
$pr_number = $pr_list[0].number

gh pr comment --repo microsoft/winget-pkgs "$pr_number" --body "🤖 cc: @deansheather"
4 changes: 3 additions & 1 deletion scripts/build_windows_installer.sh
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,9 @@ fi
# Remove the "v" prefix and ensure the version is in the format X.X.X.X for
# makensis.
nsis_version="${version//-*/}"
nsis_version+=".$(date -u +%Y%m%d%H%M)"
# Each component of a version must be a 16 bit integer, so we can't store any
# useful information like build date or commit SHA in the 4th component.
nsis_version+=".0"

# Check dependencies
dependencies makensis
Expand Down
3 changes: 3 additions & 0 deletions scripts/win-installer/installer.nsi
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
# adapted to Coder's needs:
# https://www.conjur.org/blog/building-a-windows-installer-from-a-linux-ci-pipeline/

# Since we only build an AMD64 installer for now, ensure that the generated
# installer matches so wingetcreate can sniff the architecture properly.
CPU amd64
Unicode true

!define APP_NAME "Coder"
Expand Down