diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index b80b6740..1005418f 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1 @@ -* @ds-ms +* @Azure/aksatlanta \ No newline at end of file diff --git a/.github/workflows/release-pr.yml b/.github/workflows/release-pr.yml new file mode 100644 index 00000000..1b781e69 --- /dev/null +++ b/.github/workflows/release-pr.yml @@ -0,0 +1,55 @@ +name: "Create release PR" + +on: + workflow_dispatch: + inputs: + release: + description: "Define release version (ex: v1, v2, v3)" + required: true + +jobs: + createPullRequest: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Check if remote branch exists + env: + BRANCH: releases/${{ github.event.inputs.release }} + run: | + echo "##[set-output name=exists;]$(echo $(if [[ -z $(git ls-remote --heads origin ${BRANCH}) ]]; then echo false; else echo true; fi;))" + id: extract-branch-status + # these two only need to occur if the branch exists + - name: Checkout proper branch + if: ${{ steps.extract-branch-status.outputs.exists == 'true' }} + env: + BRANCH: releases/${{ github.event.inputs.release }} + run: git checkout ${BRANCH} + - name: Reset promotion branch + if: ${{ steps.extract-branch-status.outputs.exists == 'true' }} + run: | + git fetch origin master:master + git reset --hard master + - name: Install packages + run: | + rm -rf node_modules/ + npm install --no-bin-links + npm run build + - name: Remove node_modules from gitignore + run: | + sed -i '/node_modules/d' ./.gitignore + - name: Create branch + uses: peterjgrainger/action-create-branch@v2.0.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + branch: releases/${{ github.event.inputs.release }} + - name: Create pull request + uses: peter-evans/create-pull-request@v3 + with: + token: ${{ secrets.GITHUB_TOKEN }} + commit-message: Add node modules and new code for release + title: ${{ github.event.inputs.release }} new release + base: releases/${{ github.event.inputs.release }} + branch: create-release \ No newline at end of file diff --git a/.github/workflows/tag-and-release.yml b/.github/workflows/tag-and-release.yml new file mode 100644 index 00000000..d301a52b --- /dev/null +++ b/.github/workflows/tag-and-release.yml @@ -0,0 +1,77 @@ +name: "Tag and create release draft" + +on: + push: + branches: + - releases/* + +jobs: + gh_tagged_release: + runs-on: "ubuntu-latest" + + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Test release + run: | + sudo npm install n + sudo n latest + npm test + - name: Get branch ending + run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF##*/} | sed 's:.*/::')" + id: extract-branch + - name: Get tags + run: | + echo "##[set-output name=tags;]$(echo $(git tag))" + id: extract-tags + - name: Get latest tag + uses: actions/github-script@v5 + env: + TAGS: ${{ steps.extract-tags.outputs.tags }} + BRANCH: ${{ steps.extract-branch.outputs.branch }} + with: + script: | + const tags = process.env["TAGS"] + .split(" ") + .map((x) => x.trim()); + const branch = process.env["BRANCH"]; + const splitTag = (x) => + x + .substring(branch.length + 1) + .split(".") + .map((x) => Number(x)); + function compareTags(nums1, nums2, position = 0) { + if (nums1.length < position && nums2.length < position) return nums2; + const num1 = splitTag(nums1)[position] || 0; + const num2 = splitTag(nums2)[position] || 0; + if (num1 === num2) return compareTags(nums1, nums2, position + 1); + else if (num1 > num2) return nums1; + else return nums2; + } + const branchTags = tags.filter((tag) => tag.startsWith(branch)); + if (branchTags.length < 1) return branch + ".-1" + return branchTags.reduce((prev, curr) => compareTags(prev, curr)); + result-encoding: string + id: get-latest-tag + - name: Get new tag + uses: actions/github-script@v5 + env: + PREV: ${{ steps.get-latest-tag.outputs.result }} + with: + script: | + let version = process.env["PREV"] + if (!version.includes(".")) version += ".0"; // case of v1 or v2 + const prefix = /^([a-zA-Z]+)/.exec(version)[0]; + const numbers = version.substring(prefix.length); + let split = numbers.split("."); + split[split.length - 1] = parseInt(split[split.length - 1]) + 1; + return prefix + split.join("."); + result-encoding: string + id: get-new-tag + - uses: "marvinpinto/action-automatic-releases@v1.2.1" + with: + title: ${{ steps.get-new-tag.outputs.result }} release + automatic_release_tag: ${{ steps.get-new-tag.outputs.result }} + repo_token: "${{ secrets.GITHUB_TOKEN }}" + draft: true \ No newline at end of file diff --git a/action.yml b/action.yml index e0728254..36870399 100644 --- a/action.yml +++ b/action.yml @@ -5,10 +5,6 @@ inputs: description: 'Version of helm' required: true default: 'latest' - token: - description: 'Github token' - default: ${{ github.token }} - required: true outputs: helm-path: description: 'Path to the cached helm binary'