diff --git a/.github/workflows/backport.yml b/.github/workflows/backport.yml new file mode 100644 index 000000000..746a4a7eb --- /dev/null +++ b/.github/workflows/backport.yml @@ -0,0 +1,52 @@ +--- +name: Backport Assistant Runner + +on: + pull_request_target: + types: + - closed + - labeled + +jobs: + backport: + if: github.event.pull_request.merged + runs-on: ubuntu-latest + container: hashicorpdev/backport-assistant:0.2.3 + steps: + - name: Backport changes to stable-website + run: | + backport-assistant backport -automerge + env: + BACKPORT_LABEL_REGEXP: "backport/(?Pwebsite)" + BACKPORT_TARGET_TEMPLATE: "stable-{{.target}}" + GITHUB_TOKEN: ${{ secrets.ELEVATED_GITHUB_TOKEN }} + - name: Backport changes labeled website to latest release branch + run: | + resp=$(curl -f -s "https://api.github.com/repos/$GITHUB_REPOSITORY/releases?per_page=100") + ret="$?" + if [[ "$ret" -ne 0 ]]; then + echo "The GitHub API returned $ret" + exit $ret + fi + + # find the latest non-rc release + latest_version=$(echo "$resp" | tr '\r\n' ' ' | jq -r '.[] | select(.name|test("^v\\d+\\.\\d+\\.\\d+$")) | .name' | sort -rV | head -n1) + echo "Latest non-rc version: $latest_version" + + # strip leading "v" & + target="${latest_version#v}" + # replace patch version with "x" + target="${target%.*}.x" + + export BACKPORT_TARGET_TEMPLATE="release/$target" + backport-assistant backport + env: + BACKPORT_LABEL_REGEXP: "backport/(?Pwebsite)" + GITHUB_TOKEN: ${{ secrets.ELEVATED_GITHUB_TOKEN }} + - name: Backport changes to targeted release branch + run: | + backport-assistant backport + env: + BACKPORT_LABEL_REGEXP: "backport/(?P\\d+\\.\\d+\\.\\w+)" + BACKPORT_TARGET_TEMPLATE: "release/{{.target}}" + GITHUB_TOKEN: ${{ secrets.ELEVATED_GITHUB_TOKEN }}