Publish code-server #111
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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.9 | |
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: heyhusen/archlinux-package-action@v2.2.1 | |
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 deb artifacts | |
uses: robinraju/release-downloader@v1.9 | |
with: | |
repository: "coder/code-server" | |
tag: v${{ env.VERSION }} | |
fileName: "*.deb" | |
out-file-path: "release-packages" | |
- 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" | |
- name: Publish to Docker | |
run: ./ci/steps/docker-buildx-push.sh | |
env: | |
VERSION: ${{ env.VERSION }} | |
GITHUB_TOKEN: ${{ github.token }} |