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: 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@v3 - name: Get version id: version run: echo "::set-output name=version::$(jq -r .version package.json)" - name: Download artifact uses: dawidd6/action-download-artifact@v2 id: download with: branch: release/v${{ steps.version.outputs.version }} workflow: ci.yaml workflow_conclusion: completed name: "npm-package" path: release-npm-package - name: Publish npm package and tag with "latest" run: yarn publish:npm env: 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@v3 - name: Configure git run: | git config --global user.name cdrci git config --global user.email opensource@coder.com - name: Bump code-server homebrew version env: 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@v3 with: fetch-depth: 0 path: "./code-server" - name: Get code-server version id: version run: | pushd code-server echo "::set-output name=version::$(jq -r .version package.json)" popd - name: Checkout code-server-aur repo uses: actions/checkout@v3 with: repository: "cdrci/code-server-aur" token: ${{ secrets.HOMEBREW_GITHUB_API_TOKEN }} - name: Configure git run: | git config --global user.name cdrci git config --global user.email opensource@coder.com - name: Validate package uses: hapakaien/archlinux-package-action@v2 with: pkgver: ${{ steps.version.outputs.version }} updpkgsums: true srcinfo: true - name: Open PR # We need to git push -u otherwise gh will prompt # asking where to push the branch. run: | git checkout -b update-version-${{ steps.version.outputs.version }} git add . git commit -m "chore: updating version to ${{ steps.version.outputs.version }}" git push -u origin $(git branch --show) gh pr create --repo coder/code-server-aur --title "chore: bump version to ${{ steps.version.outputs.version }}" --body "PR opened by @$GITHUB_ACTOR" --assignee $GITHUB_ACTOR docker: runs-on: ubuntu-20.04 steps: - name: Checkout code-server uses: actions/checkout@v3 - name: Set up QEMU uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Login to Docker Hub uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Login to GHCR uses: docker/login-action@v2 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Get version id: version run: echo "::set-output name=version::$(jq -r .version package.json)" - name: Download release artifacts uses: robinraju/release-downloader@v1.4 with: repository: "coder/code-server" tag: v${{ steps.version.outputs.version }} fileName: "*.deb" out-file-path: "release-packages" - name: Publish to Docker run: yarn publish:docker env: GITHUB_TOKEN: ${{ github.token }}