da254c39ee
This should make it much easier to update. Also use 18.15.0 specifically since that is what VS Code ships with. Additionally, it fixes the post-install script being skipped due to a Yarn v1 bug that happens when Yarn installs node-gyp, which it does because 18.18 onward stopped bundling node-gyp.
199 lines
6.1 KiB
YAML
199 lines
6.1 KiB
YAML
name: Publish code-server
|
|
|
|
on:
|
|
# Shows the manual trigger in GitHub UI
|
|
# helpful as a back-up in case the GitHub Actions Workflow fails
|
|
workflow_dispatch:
|
|
inputs:
|
|
version:
|
|
description: The version to publish (include "v", i.e. "v4.9.1").
|
|
type: string
|
|
required: true
|
|
|
|
release:
|
|
types: [released]
|
|
|
|
# Cancel in-progress runs for pull requests when developers push
|
|
# additional changes, and serialize builds in branches.
|
|
# https://docs.github.com/en/actions/using-jobs/using-concurrency#example-using-concurrency-to-cancel-any-in-progress-job-or-run
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
|
|
|
|
jobs:
|
|
# NOTE: this job requires curl, jq and yarn
|
|
# All of them are included in ubuntu-latest.
|
|
npm:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout code-server
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install Node.js
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version-file: .node-version
|
|
cache: "yarn"
|
|
|
|
- name: Download npm package from release artifacts
|
|
uses: robinraju/release-downloader@v1.8
|
|
with:
|
|
repository: "coder/code-server"
|
|
tag: ${{ github.event.inputs.version || github.ref_name }}
|
|
fileName: "package.tar.gz"
|
|
out-file-path: "release-npm-package"
|
|
|
|
# NOTE@jsjoeio - we do this so we can strip out the v
|
|
# i.e. v4.9.1 -> 4.9.1
|
|
- name: Get and set VERSION
|
|
run: |
|
|
TAG="${{ github.event.inputs.version || github.ref_name }}"
|
|
echo "VERSION=${TAG#v}" >> $GITHUB_ENV
|
|
|
|
- name: Publish npm package and tag with "latest"
|
|
run: yarn publish:npm
|
|
env:
|
|
VERSION: ${{ env.VERSION }}
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
NPM_ENVIRONMENT: "production"
|
|
|
|
homebrew:
|
|
needs: npm
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
# Ensure things are up to date
|
|
# Suggested by homebrew maintainers
|
|
# https://github.com/Homebrew/discussions/discussions/1532#discussioncomment-782633
|
|
- name: Set up Homebrew
|
|
id: set-up-homebrew
|
|
uses: Homebrew/actions/setup-homebrew@master
|
|
|
|
- name: Checkout code-server
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Configure git
|
|
run: |
|
|
git config --global user.name cdrci
|
|
git config --global user.email opensource@coder.com
|
|
|
|
# NOTE@jsjoeio - we do this so we can strip out the v
|
|
# i.e. v4.9.1 -> 4.9.1
|
|
- name: Get and set VERSION
|
|
run: |
|
|
TAG="${{ github.event.inputs.version || github.ref_name }}"
|
|
echo "VERSION=${TAG#v}" >> $GITHUB_ENV
|
|
|
|
- name: Bump code-server homebrew version
|
|
env:
|
|
VERSION: ${{ env.VERSION }}
|
|
HOMEBREW_GITHUB_API_TOKEN: ${{secrets.HOMEBREW_GITHUB_API_TOKEN}}
|
|
|
|
run: ./ci/steps/brew-bump.sh
|
|
|
|
aur:
|
|
needs: npm
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
env:
|
|
GH_TOKEN: ${{ secrets.HOMEBREW_GITHUB_API_TOKEN }}
|
|
|
|
steps:
|
|
# We need to checkout code-server so we can get the version
|
|
- name: Checkout code-server
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
path: "./code-server"
|
|
|
|
- name: Checkout code-server-aur repo
|
|
uses: actions/checkout@v4
|
|
with:
|
|
repository: "cdrci/code-server-aur"
|
|
token: ${{ secrets.HOMEBREW_GITHUB_API_TOKEN }}
|
|
ref: "master"
|
|
|
|
- name: Merge in master
|
|
run: |
|
|
git remote add upstream https://github.com/coder/code-server-aur.git
|
|
git fetch upstream
|
|
git merge upstream/master
|
|
|
|
- name: Configure git
|
|
run: |
|
|
git config --global user.name cdrci
|
|
git config --global user.email opensource@coder.com
|
|
|
|
# NOTE@jsjoeio - we do this so we can strip out the v
|
|
# i.e. v4.9.1 -> 4.9.1
|
|
- name: Get and set VERSION
|
|
run: |
|
|
TAG="${{ github.event.inputs.version || github.ref_name }}"
|
|
echo "VERSION=${TAG#v}" >> $GITHUB_ENV
|
|
|
|
- name: Validate package
|
|
uses: hapakaien/archlinux-package-action@v2
|
|
env:
|
|
VERSION: ${{ env.VERSION }}
|
|
with:
|
|
pkgver: ${{ env.VERSION }}
|
|
updpkgsums: true
|
|
srcinfo: true
|
|
|
|
- name: Open PR
|
|
# We need to git push -u otherwise gh will prompt
|
|
# asking where to push the branch.
|
|
env:
|
|
VERSION: ${{ env.VERSION }}
|
|
run: |
|
|
git checkout -b update-version-${{ env.VERSION }}
|
|
git add .
|
|
git commit -m "chore: updating version to ${{ env.VERSION }}"
|
|
git push -u origin $(git branch --show)
|
|
gh pr create --repo coder/code-server-aur --title "chore: bump version to ${{ env.VERSION }}" --body "PR opened by @$GITHUB_ACTOR" --assignee $GITHUB_ACTOR
|
|
docker:
|
|
runs-on: ubuntu-20.04
|
|
steps:
|
|
- name: Checkout code-server
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up QEMU
|
|
uses: docker/setup-qemu-action@v3
|
|
|
|
- name: Set up Docker Buildx
|
|
uses: docker/setup-buildx-action@v3
|
|
|
|
- name: Login to Docker Hub
|
|
uses: docker/login-action@v3
|
|
with:
|
|
username: ${{ secrets.DOCKER_USERNAME }}
|
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
|
|
- name: Login to GHCR
|
|
uses: docker/login-action@v3
|
|
with:
|
|
registry: ghcr.io
|
|
username: ${{ github.actor }}
|
|
password: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
# NOTE@jsjoeio - we do this so we can strip out the v
|
|
# i.e. v4.9.1 -> 4.9.1
|
|
- name: Get and set VERSION
|
|
run: |
|
|
TAG="${{ github.event.inputs.version || github.ref_name }}"
|
|
echo "VERSION=${TAG#v}" >> $GITHUB_ENV
|
|
|
|
- name: Download release artifacts
|
|
uses: robinraju/release-downloader@v1.8
|
|
with:
|
|
repository: "coder/code-server"
|
|
tag: v${{ env.VERSION }}
|
|
fileName: "*.deb"
|
|
out-file-path: "release-packages"
|
|
|
|
- name: Publish to Docker
|
|
run: ./ci/steps/docker-buildx-push.sh
|
|
env:
|
|
VERSION: ${{ env.VERSION }}
|
|
GITHUB_TOKEN: ${{ github.token }}
|