diff --git a/.github/workflows/new-upstream-release.yml b/.github/workflows/new-upstream-release.yml index c29d6b0..2d992a7 100644 --- a/.github/workflows/new-upstream-release.yml +++ b/.github/workflows/new-upstream-release.yml @@ -170,3 +170,71 @@ jobs: SLACK_TITLE: New commits on latest release branch SLACK_MESSAGE: 'Start preparing for a new recovery release :exclamation:' + start-automatic-release-on-release: + name: Check and start automatic release + runs-on: ubuntu-latest + steps: + - uses: actions/setup-node@v3 + with: + node-version: 16 + - run: npm init --yes + - run: npm install semver + + - name: Check for new release branch + id: new-release + uses: actions/github-script@v6 + with: + result-encoding: string + script: | + const semver = require('semver'); + + let microsoftRelease = undefined; + try { + const { data: latestRelease } = await github.rest.repos.getLatestRelease({ + owner: 'microsoft', + repo: 'vscode' + }); + + const releaseTag = latestRelease.tag_name; + microsoftRelease = releaseTag; + console.log(microsoftRelease); + } catch (e) { + console.error(e); + return false; + } + + let gitpodRelease = undefined; + try { + const { data: latestRelease } = await github.rest.repos.getLatestRelease({ + owner: 'gitpod-io', + repo: 'openvscode-server', + }); + const releaseTag = latestRelease.tag_name; + gitpodRelease = releaseTag.split('-v')[1]; + } catch (e) { + console.log(e); + } + + const releaseBranch = `release/${semver.major(microsoftRelease)}.${semver.minor(microsoftRelease)}`; + + if (gitpodRelease && semver.eq(microsoftRelease, gitpodRelease)) { + return false; + } + + const { data: branchData } = await github.rest.repos.getBranch({ + owner: 'microsoft', + repo: 'vscode', + branch: releaseBranch + }); + + await github.rest.repos.createDispatchEvent({ + owner: 'gitpod-io', + repo: 'openvscode-releases', + event_type: 'release', + client_payload: { + quality: 'stable', + commit: branchData.commit.sha, + }, + }); + + return true; \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8cbf6d3..7055d51 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -17,13 +17,16 @@ on: description: 'Create GitHub and DockerHub Release' type: boolean required: true + repository_dispatch: + types: [release] + workflow_run: workflows: ["OpenVSCode Server Rebase"] types: [completed] env: - QUALITY: ${{ github.event.inputs.quality || 'insider' }} - RELEASE_COMMIT: ${{ github.event.inputs.commit || 'main' }} + QUALITY: ${{ github.event.inputs.quality || github.event.client_payload.quality || 'insider' }} + RELEASE_COMMIT: ${{ github.event.inputs.commit || github.event.client_payload.commit || 'main' }} jobs: build-dependencies: