From 13780c8b1eab0aebc70c774e87922df4f9710636 Mon Sep 17 00:00:00 2001 From: Prudhvi Godithi Date: Mon, 17 Jul 2023 15:46:01 -0700 Subject: [PATCH] Automate release issue Signed-off-by: Prudhvi Godithi --- .../component_release_template.md | 6 +- .github/workflows/os-release-issues.yml | 68 +++++++++++-------- .github/workflows/osd-release-issues.yml | 46 +++++++------ 3 files changed, 66 insertions(+), 54 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/component_release_template.md b/.github/ISSUE_TEMPLATE/component_release_template.md index 849bdd57ce..02a01df03b 100644 --- a/.github/ISSUE_TEMPLATE/component_release_template.md +++ b/.github/ISSUE_TEMPLATE/component_release_template.md @@ -32,11 +32,11 @@ If including changes in this release, increment the version on `{{RELEASE_VERSIO - [ ] Assign this issue to a release owner. - [ ] Finalize scope and feature set and update [the Public Roadmap](https://github.com/orgs/opensearch-project/projects/1). - [ ] All the tasks in this issue have been reviewed by the release owner. -- [ ] Create, update, triage and label all features and issues targeted for this release with `v__REPLACE_MAJOR_MINOR_PATCH__`. +- [ ] Create, update, triage and label all features and issues targeted for this release with `v{{RELEASE_VERSION}}`. ### CI/CD -- [ ] All code changes for `__{REPLACE_MAJOR_MINOR_PATCH}__` are complete. +- [ ] All code changes for `{{RELEASE_VERSION}}` are complete. - [ ] Ensure working and passing CI. - [ ] Check that this repo is included in the [distribution manifest](https://github.com/opensearch-project/opensearch-build/blob/main/manifests/{{RELEASE_VERSION}}). @@ -45,7 +45,7 @@ If including changes in this release, increment the version on `{{RELEASE_VERSIO - [ ] Update to the `{{RELEASE_VERSION}}` release branch in the [distribution manifest](https://github.com/opensearch-project/opensearch-build/blob/main/manifests/{{RELEASE_VERSION}}). - [ ] Increment the version on the parent branch to the next development iteration. - [ ] Gather, review and publish release notes following the [rules](https://github.com/opensearch-project/opensearch-plugins/blob/main/RELEASE_NOTES.md) and back port it to the release branch.[git-release-notes](https://github.com/ariatemplates/git-release-notes) may be used to generate release notes from your commit history. -- [ ] Confirm that all changes for `__{REPLACE_MAJOR_MINOR_PATCH}__` have been merged. +- [ ] Confirm that all changes for `{{RELEASE_VERSION}}` have been merged. - [ ] Add this repo to the [manifest](https://github.com/opensearch-project/opensearch-build/blob/main/manifests/) for the next developer iteration. ### Release Testing diff --git a/.github/workflows/os-release-issues.yml b/.github/workflows/os-release-issues.yml index df35c0c243..3ba759a29c 100644 --- a/.github/workflows/os-release-issues.yml +++ b/.github/workflows/os-release-issues.yml @@ -24,7 +24,7 @@ jobs: steps: - uses: actions/checkout@v3 with: - repository: prudhvigodithi/opensearch-build + repository: opensearch-project/opensearch-build ref: main - id: set-matrix # produces a list of major versions, e.g. ["1.4.0","2.10.0","2.6.0","2.7.0","2.8.0","2.9.0","3.0.0"] @@ -37,66 +37,76 @@ jobs: matrix: entry: - {repo: OpenSearch} + - {repo: alerting} + - {repo: anomaly-detection} + - {repo: asynchronous-search} + - {repo: common-utils} + - {repo: cross-cluster-replication} + - {repo: geospatial} + - {repo: index-management} - {repo: job-scheduler} + - {repo: k-NN} + - {repo: neural-search} + - {repo: ml-commons} + - {repo: notifications} + - {repo: observability} + - {repo: performance-analyzer} + - {repo: performance-analyzer-rca} + - {repo: reporting} + - {repo: security} + - {repo: security-analytics} + - {repo: sql} release_version: ${{ fromJson(needs.list-manifest-versions.outputs.matrix) }} - steps: - #- name: GitHub App token - # id: github_app_token - # uses: tibdex/github-app-token@v1.6.0 - # with: - # app_id: ${{ secrets.APP_ID }} - # private_key: ${{ secrets.APP_PRIVATE_KEY }} - # installation_id: 22958780 - + - name: GitHub App token + id: github_app_token + uses: tibdex/github-app-token@v1.6.0 + with: + app_id: ${{ secrets.APP_ID }} + private_key: ${{ secrets.APP_PRIVATE_KEY }} + installation_id: 22958780 - name: Checkout uses: actions/checkout@v3 - - name: Check if build repo release issue exists id: check_if_build_repo_issue_exists uses: actions-cool/issues-helper@v3 with: actions: 'find-issues' - repo: prudhvigodithi/opensearch-build - # token: ${{ steps.github_app_token.outputs.token }} - token: ${{ secrets.PAT }} + repo: opensearch-project/opensearch-build + token: ${{ steps.github_app_token.outputs.token }} + issue-state: 'open' title-includes: '[RELEASE] Release version ${{ matrix.release_version }}' - - name: Check out plugin repo uses: actions/checkout@v3 with: path: plugin-repo - repository: prudhvigodithi/${{ matrix.entry.repo }} - + repository: opensearch-project/${{ matrix.entry.repo }} - name: Check if plugin repo release issue exists if: steps.check_if_build_repo_issue_exists.outputs.issues != '[]' id: check_if_plugin_repo_issue_exists uses: actions-cool/issues-helper@v3 with: actions: 'find-issues' - repo: prudhvigodithi/${{ matrix.entry.repo }} - # token: ${{ steps.github_app_token.outputs.token }} - token: ${{ secrets.PAT }} + repo: opensearch-project/${{ matrix.entry.repo }} + token: ${{ steps.github_app_token.outputs.token }} + issue-state: 'open' title-includes: '[RELEASE] Release version ${{ matrix.release_version }}' - - - name: Replace placeholders + - name: Replace Placeholders if: steps.check_if_plugin_repo_issue_exists.outputs.issues == '[]' run: | # Read the file contents and replace the placeholders file_path="../opensearch-build/.github/ISSUE_TEMPLATE/component_release_template.md" RELEASE_VERSION="${{ matrix.release_version }}" - RELEASE_ISSUE_NUMBER =$(echo "${{ steps.check_if_plugin_repo_issue_exists.outputs.issueNumbers }}" | grep -oE '[0-9]+' | head -n1) - RELEASE_ISSUE="https://github.com/prudhvigodithi/opensearch-build/issues/$RELEASE_ISSUE_NUMBER" + RELEASE_ISSUE_NUMBER=$(echo '${{ steps.check_if_build_repo_issue_exists.outputs.issues }}' | jq '.[0].number') + RELEASE_ISSUE="https://github.com/opensearch-project/opensearch-build/issues/${RELEASE_ISSUE_NUMBER}" RELEASE_VERSION_X=$(echo "${{ matrix.release_version }}" | awk -F'.' '{print $1}').x sed -e "s|{{RELEASE_VERSION}}|${RELEASE_VERSION}|g" -e "s|{{RELEASE_ISSUE}}|${RELEASE_ISSUE}|g" -e "s|{{RELEASE_VERSION_X}}|${RELEASE_VERSION_X}|g" "$file_path" > "$file_path.tmp" && mv "$file_path.tmp" "$file_path" - - - name: Create Issue From File + - name: Create component release issue from file if: steps.check_if_plugin_repo_issue_exists.outputs.issues == '[]' uses: peter-evans/create-issue-from-file@v4 with: title: '[RELEASE] Release version ${{ matrix.release_version }}' content-filepath: ../opensearch-build/.github/ISSUE_TEMPLATE/component_release_template.md labels: 'v${{ matrix.release_version }}' - # token: ${{ steps.github_app_token.outputs.token }} - token: ${{ secrets.PAT }} - repository: prudhvigodithi/${{ matrix.entry.repo }} + token: ${{ steps.github_app_token.outputs.token }} + repository: opensearch-project/${{ matrix.entry.repo }} diff --git a/.github/workflows/osd-release-issues.yml b/.github/workflows/osd-release-issues.yml index 6566314f05..511a7ebc1c 100644 --- a/.github/workflows/osd-release-issues.yml +++ b/.github/workflows/osd-release-issues.yml @@ -62,40 +62,42 @@ jobs: installation_id: 22958780 - name: Checkout uses: actions/checkout@v3 - - uses: dblock/create-a-github-issue@v3.0.0 - env: - GITHUB_TOKEN: ${{ steps.github_app_token.outputs.token }} - VERSION: ${{ matrix.release_version }} - id: build-repo-release-issue + - name: Check if build repo release issue exists + id: check_if_build_repo_issue_exists + uses: actions-cool/issues-helper@v3 with: - search_existing: all - update_existing: false - filename: .github/ISSUE_TEMPLATE/release_template.md - - name: Check out build repo - uses: actions/checkout@v3 + actions: 'find-issues' + repo: opensearch-project/opensearch-build + token: ${{ steps.github_app_token.outputs.token }} + issue-state: 'open' + title-includes: '[RELEASE] Release version ${{ matrix.release_version }}' - name: Check out plugin repo uses: actions/checkout@v3 with: path: plugin-repo repository: opensearch-project/${{ matrix.entry.repo }} - - name: Replace placeholders - run: | - # Read the file contents and replace the placeholders - file_path="../opensearch-build/.github/ISSUE_TEMPLATE/component_release_template.md" - RELEASE_VERSION="${{ matrix.release_version }}" - RELEASE_ISSUE="${{ steps.build-repo-release-issue.outputs.url }}" - RELEASE_VERSION_X=$(echo "${{ steps.build-repo-release-issue.outputs.url }}" | awk -F'.' '{print $1}').x - sed -e "s|{{RELEASE_VERSION}}|${RELEASE_VERSION}|g" -e "s|{{RELEASE_ISSUE}}|${RELEASE_ISSUE}|g" -e "s|{{RELEASE_VERSION_X}}|${RELEASE_VERSION_X}|g" "$file_path" > "$file_path.tmp" && mv "$file_path.tmp" "$file_path" - - name: Check if issue exists - id: check_if_issue_exists + - name: Check if plugin repo release issue exists + if: steps.check_if_build_repo_issue_exists.outputs.issues != '[]' + id: check_if_plugin_repo_issue_exists uses: actions-cool/issues-helper@v3 with: actions: 'find-issues' repo: opensearch-project/${{ matrix.entry.repo }} token: ${{ steps.github_app_token.outputs.token }} + issue-state: 'open' title-includes: '[RELEASE] Release version ${{ matrix.release_version }}' - - name: Create Issue From File - if: steps.check_if_issue_exists.outputs.issues == '[]' + - name: Replace Placeholders + if: steps.check_if_plugin_repo_issue_exists.outputs.issues == '[]' + run: | + # Read the file contents and replace the placeholders + file_path="../opensearch-build/.github/ISSUE_TEMPLATE/component_release_template.md" + RELEASE_VERSION="${{ matrix.release_version }}" + RELEASE_ISSUE_NUMBER=$(echo '${{ steps.check_if_build_repo_issue_exists.outputs.issues }}' | jq '.[0].number') + RELEASE_ISSUE="https://github.com/opensearch-project/opensearch-build/issues/${RELEASE_ISSUE_NUMBER}" + RELEASE_VERSION_X=$(echo "${{ matrix.release_version }}" | awk -F'.' '{print $1}').x + sed -e "s|{{RELEASE_VERSION}}|${RELEASE_VERSION}|g" -e "s|{{RELEASE_ISSUE}}|${RELEASE_ISSUE}|g" -e "s|{{RELEASE_VERSION_X}}|${RELEASE_VERSION_X}|g" "$file_path" > "$file_path.tmp" && mv "$file_path.tmp" "$file_path" + - name: Create component release issue from file + if: steps.check_if_plugin_repo_issue_exists.outputs.issues == '[]' uses: peter-evans/create-issue-from-file@v4 with: title: '[RELEASE] Release version ${{ matrix.release_version }}'