2022-08-19 23:40:00 +08:00
name : Publish code-server
2020-05-08 15:08:30 +08:00
on :
2021-03-26 08:33:18 +08:00
# Shows the manual trigger in GitHub UI
# helpful as a back-up in case the GitHub Actions Workflow fails
workflow_dispatch :
2022-11-09 06:45:01 +08:00
inputs :
version :
description : The version to publish (include "v", i.e. "v4.9.1").
type : string
required : true
2021-03-26 08:33:18 +08:00
2020-05-08 15:08:30 +08:00
release :
2021-11-02 01:06:10 +08:00
types : [ released]
2020-05-08 15:08:30 +08:00
2022-03-02 07:03:39 +08:00
# 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' }}
2020-05-08 15:08:30 +08:00
jobs :
2021-04-17 03:47:24 +08:00
# NOTE: this job requires curl, jq and yarn
# All of them are included in ubuntu-latest.
2020-05-08 15:08:30 +08:00
npm :
runs-on : ubuntu-latest
steps :
2022-08-19 23:40:00 +08:00
- name : Checkout code-server
2023-10-05 07:50:11 +08:00
uses : actions/checkout@v4
2021-04-17 03:47:24 +08:00
2023-11-15 05:45:56 +08:00
- name : Install Node.js
2023-11-15 02:23:05 +08:00
uses : actions/setup-node@v4
2023-03-04 15:23:21 +08:00
with :
2023-11-15 05:45:56 +08:00
node-version-file : .node-version
2023-03-04 15:23:21 +08:00
cache : "yarn"
2022-11-02 01:16:30 +08:00
- name : Download npm package from release artifacts
2024-02-02 09:37:57 +08:00
uses : robinraju/release-downloader@v1.9
2022-02-04 04:54:36 +08:00
with :
2022-11-02 01:16:30 +08:00
repository : "coder/code-server"
2022-11-09 06:45:01 +08:00
tag : ${{ github.event.inputs.version || github.ref_name }}
2022-11-02 01:16:30 +08:00
fileName : "package.tar.gz"
out-file-path : "release-npm-package"
2022-02-04 04:54:36 +08:00
2022-11-09 06:45:01 +08:00
# 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
2022-01-25 06:33:42 +08:00
- name : Publish npm package and tag with "latest"
2022-01-22 07:28:56 +08:00
run : yarn publish:npm
2020-05-16 22:55:46 +08:00
env :
2022-11-09 06:45:01 +08:00
VERSION : ${{ env.VERSION }}
2020-05-16 22:55:46 +08:00
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN : ${{ secrets.NPM_TOKEN }}
2022-02-04 04:54:36 +08:00
NPM_ENVIRONMENT : "production"
2020-05-08 15:08:30 +08:00
2021-04-01 05:55:43 +08:00
homebrew :
needs : npm
2022-03-30 07:58:34 +08:00
runs-on : ubuntu-latest
2021-04-01 05:55:43 +08:00
steps :
2021-05-26 05:18:04 +08:00
# 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
2022-03-22 07:57:36 +08:00
- name : Checkout code-server
2023-10-05 07:50:11 +08:00
uses : actions/checkout@v4
2022-03-22 07:57:36 +08:00
2021-04-01 05:55:43 +08:00
- name : Configure git
run : |
2022-05-07 06:31:03 +08:00
git config --global user.name cdrci
git config --global user.email opensource@coder.com
2022-03-22 07:57:36 +08:00
2022-11-09 06:45:01 +08:00
# 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
2021-04-01 05:55:43 +08:00
- name : Bump code-server homebrew version
env :
2022-11-09 06:45:01 +08:00
VERSION : ${{ env.VERSION }}
2021-04-01 05:55:43 +08:00
HOMEBREW_GITHUB_API_TOKEN : ${{secrets.HOMEBREW_GITHUB_API_TOKEN}}
2022-11-09 06:45:01 +08:00
2021-04-01 05:55:43 +08:00
run : ./ci/steps/brew-bump.sh
2022-08-19 00:22:09 +08:00
aur :
needs : npm
runs-on : ubuntu-latest
timeout-minutes : 10
env :
GH_TOKEN : ${{ secrets.HOMEBREW_GITHUB_API_TOKEN }}
2022-11-09 06:45:01 +08:00
2022-08-19 00:22:09 +08:00
steps :
# We need to checkout code-server so we can get the version
- name : Checkout code-server
2023-10-05 07:50:11 +08:00
uses : actions/checkout@v4
2022-08-19 00:22:09 +08:00
with :
fetch-depth : 0
path : "./code-server"
- name : Checkout code-server-aur repo
2023-10-05 07:50:11 +08:00
uses : actions/checkout@v4
2022-08-19 00:22:09 +08:00
with :
repository : "cdrci/code-server-aur"
token : ${{ secrets.HOMEBREW_GITHUB_API_TOKEN }}
2022-09-10 06:50:21 +08:00
ref : "master"
2022-08-19 00:22:09 +08:00
2022-10-29 01:44:00 +08:00
- name : Merge in master
run : |
git remote add upstream https://github.com/coder/code-server-aur.git
git fetch upstream
git merge upstream/master
2022-08-19 00:22:09 +08:00
- name : Configure git
run : |
git config --global user.name cdrci
git config --global user.email opensource@coder.com
2022-11-09 06:45:01 +08:00
# 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
2022-08-19 00:22:09 +08:00
- name : Validate package
2024-03-07 07:10:57 +08:00
uses : heyhusen/archlinux-package-action@v2.2.1
2022-12-13 05:24:06 +08:00
env :
VERSION : ${{ env.VERSION }}
2022-08-19 00:22:09 +08:00
with :
2022-11-09 06:45:01 +08:00
pkgver : ${{ env.VERSION }}
2022-08-19 00:22:09 +08:00
updpkgsums : true
srcinfo : true
- name : Open PR
# We need to git push -u otherwise gh will prompt
# asking where to push the branch.
2022-12-23 03:58:20 +08:00
env :
VERSION : ${{ env.VERSION }}
2022-08-19 00:22:09 +08:00
run : |
2022-12-23 03:58:20 +08:00
git checkout -b update-version-${{ env.VERSION }}
2023-03-04 15:23:21 +08:00
git add .
2022-12-23 03:58:20 +08:00
git commit -m "chore: updating version to ${{ env.VERSION }}"
2022-08-19 00:22:09 +08:00
git push -u origin $(git branch --show)
2022-12-23 03:58:20 +08:00
gh pr create --repo coder/code-server-aur --title "chore: bump version to ${{ env.VERSION }}" --body "PR opened by @$GITHUB_ACTOR" --assignee $GITHUB_ACTOR
2022-08-19 23:40:00 +08:00
docker :
runs-on : ubuntu-20.04
steps :
- name : Checkout code-server
2023-10-05 07:50:11 +08:00
uses : actions/checkout@v4
2022-08-19 23:40:00 +08:00
- name : Set up QEMU
2023-11-15 02:25:33 +08:00
uses : docker/setup-qemu-action@v3
2022-08-19 23:40:00 +08:00
- name : Set up Docker Buildx
2023-10-12 07:51:24 +08:00
uses : docker/setup-buildx-action@v3
2022-08-19 23:40:00 +08:00
- name : Login to Docker Hub
2023-11-15 02:21:54 +08:00
uses : docker/login-action@v3
2022-08-19 23:40:00 +08:00
with :
username : ${{ secrets.DOCKER_USERNAME }}
password : ${{ secrets.DOCKER_PASSWORD }}
- name : Login to GHCR
2023-11-15 02:21:54 +08:00
uses : docker/login-action@v3
2022-08-19 23:40:00 +08:00
with :
registry : ghcr.io
username : ${{ github.actor }}
password : ${{ secrets.GITHUB_TOKEN }}
2022-11-09 06:45:01 +08:00
# 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
2022-08-19 23:40:00 +08:00
2024-02-09 05:31:50 +08:00
- name : Download deb artifacts
2024-02-02 09:37:57 +08:00
uses : robinraju/release-downloader@v1.9
2022-08-19 23:40:00 +08:00
with :
repository : "coder/code-server"
2022-11-09 06:45:01 +08:00
tag : v${{ env.VERSION }}
2022-08-19 23:40:00 +08:00
fileName : "*.deb"
out-file-path : "release-packages"
2024-02-09 05:31:50 +08:00
- name : Download rpm artifacts
uses : robinraju/release-downloader@v1.9
with :
repository : "coder/code-server"
tag : v${{ env.VERSION }}
fileName : "*.rpm"
out-file-path : "release-packages"
2022-08-19 23:40:00 +08:00
- name : Publish to Docker
2023-03-04 15:23:21 +08:00
run : ./ci/steps/docker-buildx-push.sh
2022-08-19 23:40:00 +08:00
env :
2022-11-09 06:45:01 +08:00
VERSION : ${{ env.VERSION }}
2022-08-19 23:40:00 +08:00
GITHUB_TOKEN : ${{ github.token }}