Add workflow for updating VS Code

For now it is manually triggered.
This commit is contained in:
Asher
2026-05-07 10:42:07 -08:00
parent 9527b7879f
commit 58491f317f
2 changed files with 46 additions and 7 deletions

36
.github/workflows/update.yaml vendored Normal file
View File

@@ -0,0 +1,36 @@
name: Update code-server
on:
workflow_dispatch:
inputs:
version:
type: string
required: true
jobs:
update:
runs-on: ubuntu-latest
env:
VERSION: ${{ inputs.version }}
GH_TOKEN: ${{ secrets.HOMEBREW_GITHUB_API_TOKEN }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6
with:
node-version-file: .node-version
- run: ./ci/build/update-vscode.sh
- name: Open PR
run: |
git config --global user.name cdrci
git config --global user.email opensource@coder.com
git checkout -b update/${{ env.VERSION }}
git add .
git commit -m "Update VS Code to ${{ env.VERSION }}"
git push -u origin $(git branch --show)
gh pr create --repo coder/code-server-aur \
--title "Update VS Code to ${{ env.VERSION }}" \
--body-file .cache/checklist \
--draft

View File

@@ -17,10 +17,10 @@ function remove_patches() {
function update_vscode() { function update_vscode() {
pushd lib/vscode pushd lib/vscode
if ! git checkout "$VERSION" ; then if ! git checkout "$target_vscode_version" ; then
echo "$VERSION does not exist locally, fetching..." echo "$target_vscode_version does not exist locally, fetching..."
git fetch --all --prune git fetch --all --prune
git checkout "$VERSION" git checkout "$target_vscode_version"
fi fi
popd popd
} }
@@ -110,12 +110,12 @@ function run() {
function add_changelog() { function add_changelog() {
local file=CHANGELOG.md local file=CHANGELOG.md
if grep "Code $VERSION" "$file" ; then if grep "Code $target_vscode_version" "$file" ; then
echo "Changelog for $VERSION already exists" echo "Changelog for $target_vscode_version already exists"
else else
# TODO: This is not exactly robust. In particular, it needs to handle if # TODO: This is not exactly robust. In particular, it needs to handle if
# there is already a "changed" section. # there is already a "changed" section.
sed -i.bak "s/## Unreleased/## Unreleased\n\nCode v$VERSION\n\n### Changed\n\n- Update to Code $VERSION/" "$file" sed -i.bak "s/## Unreleased/## Unreleased\n\nCode v$target_vscode_version\n\n### Changed\n\n- Update to Code $target_vscode_version/" "$file"
fi fi
} }
@@ -127,6 +127,9 @@ function main() {
local target_node_version local target_node_version
target_node_version=$(grep target lib/vscode/remote/.npmrc | awk -F= '{print $2}' | tr -d '"') target_node_version=$(grep target lib/vscode/remote/.npmrc | awk -F= '{print $2}' | tr -d '"')
local target_vscode_version
target_vscode_version="${VERSION#v}"
declare -a steps declare -a steps
# Removing patches only needs to be done locally; in CI we start from a fresh # Removing patches only needs to be done locally; in CI we start from a fresh
# clone each time. # clone each time.
@@ -135,7 +138,7 @@ function main() {
fi fi
steps+=( steps+=(
"Update VS Code to $VERSION" "update_vscode" "Update VS Code to $target_vscode_version" "update_vscode"
"Refresh VS Code patches" "refresh_patches" "Refresh VS Code patches" "refresh_patches"
"Set Node version to $target_node_version" "update_node" "Set Node version to $target_node_version" "update_node"
"Update CSP webview hash" "update_csp" "Update CSP webview hash" "update_csp"