m12watanabe1a 2022-11-16
Add release ci
@91addda372c0802d2ec4b13b0fde7e4d318032af
 
.github/workflows/release.yaml (added)
+++ .github/workflows/release.yaml
@@ -0,0 +1,82 @@
+name: Release
+on:
+  workflow_dispatch:
+    inputs:
+      fragment:
+        type: choice
+        description: Semantic version target
+        options:
+          - bug
+          - feature
+          - major
+jobs:
+  release:
+    name: Release
+    runs-on: ubuntu-latest
+    steps:
+      - name: Install dependencies
+        run: |
+          sudo apt-get update && sudo apt-get install xmlstarlet
+      - name: checkout
+        uses: actions/checkout@v3
+      - name: Get current version
+        id: get_current_version
+        run: |
+          current_version=`\
+            find . -name "package.xml" -print -quit \
+            | xargs -n 1 -I{} \
+            xmlstarlet select --template --value-of "//package/version" {}`
+          echo "current_version=$current_version" >> $GITHUB_OUTPUT
+      - name: Bump release version
+        id: bump_version
+        uses: christian-draeger/increment-semantic-version@1.0.3
+        with:
+          current-version: ${{ steps.get_current_version.outputs.current_version }}
+          version-fragment: ${{ github.event.inputs.fragment }}
+      - name: Update package version
+        run: |
+          find . -type f -name package.xml | \
+            xargs -n 1 -I {} \
+            xmlstarlet edit --inplace --pf \
+            --update "//package/version" \
+            --value ${{ steps.bump_version.outputs.next-version }} {}
+      - name: Commit change
+        env:
+          user_name: ${{ github.repository_owner }}
+          user_email: 40206149+m12watanabe1a@users.noreply.github.com
+        run: |
+          git config --local user.name ${{ env.user_name }}
+          git config --local user.email ${{ env.user_email }}
+          git switch -c release/${{ steps.bump_version.outputs.next-version }}
+          git add -A
+          git commit -m "Version upgrade \
+            ${{ steps.get_current_version.outputs.current_version }} \
+            -> \
+            ${{ steps.bump_version.outputs.next-version }}"
+          git push --set-upstream origin release/${{ steps.bump_version.outputs.next-version }}
+      - name: Create Pull Request
+        env:
+          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        run: |
+          gh pr create \
+          --title \
+            "Release ${{ github.event.inputs.fragment }} upgrade \
+            ${{ steps.get_current_version.outputs.current_version }} \
+            -> \
+            ${{ steps.bump_version.outputs.next-version }}" \
+          --base main \
+          --head release/${{ steps.bump_version.outputs.next-version }} \
+          -b "Version has been upgraded from \
+          ${{ steps.get_current_version.outputs.current_version }} \
+          -> \
+          ${{ steps.bump_version.outputs.next-version }}
+          Check the release page: ${{ github.server_url }}/${{ github.repository }}/releases
+          "
+      - name: Create release
+        env:
+          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        run: |
+          gh release create \
+            v${{ steps.bump_version.outputs.next-version }} \
+            -d --generate-notes \
+            --target release/${{ steps.bump_version.outputs.next-version }}
Add a comment
List