diff --git a/.github/workflows/release-hook-on-closed.yml b/.github/workflows/release-hook-on-closed.yml new file mode 100644 index 0000000..812a35a --- /dev/null +++ b/.github/workflows/release-hook-on-closed.yml @@ -0,0 +1,34 @@ +name: "[release hook] Process release" + +on: + pull_request: + types: [closed] + +permissions: + contents: write # required for creating releases + pull-requests: write # required for updating label on PR, posting comments + issues: write # required for creating new issues on failed releases + +jobs: + release-process-request: + if: ${{ github.repository == 'dazuma/ractor-wrapper' }} + env: + ruby_version: "4.0" + runs-on: ubuntu-latest + steps: + - name: Install Ruby ${{ env.ruby_version }} + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ env.ruby_version }} + - name: Checkout repo + uses: actions/checkout@v5 + - name: Install Toys + run: "gem install --no-document toys" + - name: Process release request + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GEM_HOST_API_KEY: ${{ secrets.RUBYGEMS_API_KEY }} + run: | + toys release _onclosed --verbose \ + "--event-path=${{ github.event_path }}" \ + < /dev/null diff --git a/.github/workflows/release-hook-on-push.yml b/.github/workflows/release-hook-on-push.yml new file mode 100644 index 0000000..421b1f0 --- /dev/null +++ b/.github/workflows/release-hook-on-push.yml @@ -0,0 +1,32 @@ +name: "[release hook] Update open releases" + +on: + push: + branches: + - main + +permissions: + contents: write # required for pushing changes + pull-requests: write # required for updating open release PRs + +jobs: + release-update-open-requests: + if: ${{ github.repository == 'dazuma/ractor-wrapper' }} + env: + ruby_version: "4.0" + runs-on: ubuntu-latest + steps: + - name: Install Ruby ${{ env.ruby_version }} + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ env.ruby_version }} + - name: Checkout repo + uses: actions/checkout@v5 + - name: Install Toys + run: "gem install --no-document toys" + - name: Update open releases + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + toys release _onpush --verbose \ + < /dev/null diff --git a/.github/workflows/release-perform.yml b/.github/workflows/release-perform.yml new file mode 100644 index 0000000..7d33ec6 --- /dev/null +++ b/.github/workflows/release-perform.yml @@ -0,0 +1,46 @@ +name: Force release + +on: + workflow_dispatch: + inputs: + name: + description: Component to release + required: true + version: + description: Version to release + required: true + flags: + description: Extra flags to pass to the release script + required: false + default: "" + +permissions: + contents: write # required for creating releases + pull-requests: write # required for updating label on PR, posting comments + issues: write # required for creating new issues on failed releases + +jobs: + release-perform: + if: ${{ github.repository == 'dazuma/ractor-wrapper' }} + env: + ruby_version: "4.0" + runs-on: ubuntu-latest + steps: + - name: Install Ruby ${{ env.ruby_version }} + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ env.ruby_version }} + - name: Checkout repo + uses: actions/checkout@v5 + - name: Install Toys + run: "gem install --no-document toys" + - name: Perform release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GEM_HOST_API_KEY: ${{ secrets.RUBYGEMS_API_KEY }} + run: | + toys release perform --yes --verbose \ + "--release-ref=${{ github.sha }}" \ + ${{ github.event.inputs.flags }} \ + "${{ github.event.inputs.name }}" "${{ github.event.inputs.version }}" \ + < /dev/null diff --git a/.github/workflows/release-request.yml b/.github/workflows/release-request.yml new file mode 100644 index 0000000..77b865c --- /dev/null +++ b/.github/workflows/release-request.yml @@ -0,0 +1,37 @@ +name: Open release request + +on: + workflow_dispatch: + inputs: + names: + description: Components to release (leave blank to release all components) + required: false + default: "" + +permissions: + contents: write # required for pushing changes + pull-requests: write # required for creating release PRs + +jobs: + release-request: + if: ${{ github.repository == 'dazuma/ractor-wrapper' }} + env: + ruby_version: "4.0" + runs-on: ubuntu-latest + steps: + - name: Install Ruby ${{ env.ruby_version }} + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ env.ruby_version }} + - name: Checkout repo + uses: actions/checkout@v5 + - name: Install Toys + run: "gem install --no-document toys" + - name: Open release pull request + env: + GITHUB_TOKEN: ${{ secrets.TOYS_RELEASE_REQUEST_TOKEN || secrets.GITHUB_TOKEN }} + run: | + toys release request --yes --verbose \ + "--target-branch=${{ github.ref }}" \ + ${{ github.event.inputs.names }} \ + < /dev/null diff --git a/.github/workflows/release-retry.yml b/.github/workflows/release-retry.yml new file mode 100644 index 0000000..b9bb1ae --- /dev/null +++ b/.github/workflows/release-retry.yml @@ -0,0 +1,42 @@ +name: Retry release + +on: + workflow_dispatch: + inputs: + release_pr: + description: Release PR number + required: true + flags: + description: Extra flags to pass to the release script + required: false + default: "" + +permissions: + contents: write # required for creating releases + pull-requests: write # required for updating label on PR, posting comments + issues: write # required for creating new issues on failed releases + +jobs: + release-retry: + if: ${{ github.repository == 'dazuma/ractor-wrapper' }} + env: + ruby_version: "4.0" + runs-on: ubuntu-latest + steps: + - name: Install Ruby ${{ env.ruby_version }} + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ env.ruby_version }} + - name: Checkout repo + uses: actions/checkout@v5 + - name: Install Toys + run: "gem install --no-document toys" + - name: Retry release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GEM_HOST_API_KEY: ${{ secrets.RUBYGEMS_API_KEY }} + run: | + toys release retry --yes --verbose \ + ${{ github.event.inputs.flags }} \ + "${{ github.event.inputs.release_pr }}" \ + < /dev/null diff --git a/.toys/.data/releases.yml b/.toys/.data/releases.yml new file mode 100644 index 0000000..94518c1 --- /dev/null +++ b/.toys/.data/releases.yml @@ -0,0 +1,8 @@ +repo: dazuma/ractor-wrapper +git_user_name: Daniel Azuma +git_user_email: dazuma@gmail.com + +gems: + - name: ractor-wrapper + directory: . + gh_pages_directory: gem diff --git a/.toys/release.rb b/.toys/release.rb new file mode 100644 index 0000000..9579e06 --- /dev/null +++ b/.toys/release.rb @@ -0,0 +1,3 @@ +# frozen_string_literal: true + +load_gem "toys-release"