# # Copyright (c) 2020 Red Hat, Inc. and others. # This program and the accompanying materials are made available under the # terms of the Eclipse Public License v. 2.0 which is available at # http://www.eclipse.org/legal/epl-2.0. # # This Source Code may also be made available under the following Secondary # Licenses when the conditions for such availability set forth in the Eclipse # Public License v. 2.0 are satisfied: GNU General Public License, version 2 # with the GNU Classpath Exception which is available at # https://www.gnu.org/software/classpath/license.html. # # SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0 # Set milestone on each pull request by using the next minor version # next version is computed using npm version tool on: pull_request_target: branches: [master] types: [closed] jobs: set-milestone: if: github.event.pull_request.merged == true runs-on: ubuntu-22.04 steps: - name: Checkout code uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 - id: compute-milestone run: | export THEIA_CORE_VERSION=$(node -p "require(\"./packages/core/package.json\").version") echo "MILESTONE_NUMBER=$(npx -q semver@7 --increment minor $THEIA_CORE_VERSION)" >> $GITHUB_ENV - id: set uses: actions/github-script@ffc2c79a5b2490bd33e0a41c1de74b877714d736 # v3.2.0 with: github-token: ${{secrets.GITHUB_TOKEN}} script: | // get milestone const milestone = process.env.MILESTONE_NUMBER console.log(`Using milestone with name ${milestone}`) // check if milestone exists ? const issuesGetMilestonesParams = context.repo // search if milestone is already defined const response = await github.issues.listMilestones(issuesGetMilestonesParams) let githubMilestone = response.data.find(milestoneResponse => milestoneResponse.title === milestone) // not defined, create it if (!githubMilestone) { const issuesCreateMilestoneParams = { owner: context.repo.owner, repo:context.repo.repo, title: milestone } const createMilestoneResponse = await github.issues.createMilestone(issuesCreateMilestoneParams) githubMilestone = createMilestoneResponse.data } // Grab the milestone number const milestoneNumber = githubMilestone.number // sets the milestone from the number const issuesUpdateParams = { owner: context.repo.owner, repo: context.repo.repo, milestone: milestoneNumber, issue_number: context.issue.number } await github.issues.update(issuesUpdateParams)