From 6f563795b3c46aa579cfdaec0be3edf50e0eaf76 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Tue, 14 Oct 2025 17:03:55 -0700 Subject: [PATCH 1/4] Add gem publishing workflow --- .github/workflows/publish-gem.yml | 41 +++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 .github/workflows/publish-gem.yml diff --git a/.github/workflows/publish-gem.yml b/.github/workflows/publish-gem.yml new file mode 100644 index 0000000000..1c0864dd8a --- /dev/null +++ b/.github/workflows/publish-gem.yml @@ -0,0 +1,41 @@ +name: Publish gem to rubygems.org + +on: + push: + tags: + - 'v*' + +permissions: + contents: read + +jobs: + push: + if: github.repository == 'ruby/prism' + runs-on: ubuntu-latest + + environment: + name: rubygems.org + url: https://rubygems.org/gems/prism + + permissions: + contents: write + id-token: write + + steps: + - name: Harden Runner + uses: step-security/harden-runner@v2 + with: + egress-policy: audit + + - uses: actions/checkout@v4 + + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: "3.4" + + - name: Install dependencies + run: bundle install --jobs 4 --retry 3 + + - name: Publish to RubyGems + uses: rubygems/release-gem@v1 From 2b91919521ae671820fc4a2bc7918e263a71d9fe Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Tue, 14 Oct 2025 17:09:49 -0700 Subject: [PATCH 2/4] Add crates.io publishing workflow --- .github/workflows/publish-crate.yml | 32 +++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 .github/workflows/publish-crate.yml diff --git a/.github/workflows/publish-crate.yml b/.github/workflows/publish-crate.yml new file mode 100644 index 0000000000..3397b72553 --- /dev/null +++ b/.github/workflows/publish-crate.yml @@ -0,0 +1,32 @@ +name: Publish to crates.io +on: + push: + tags: ['v*'] # Triggers when pushing tags starting with 'v' +jobs: + publish: + if: github.repository == 'ruby/prism' + runs-on: ubuntu-latest + environment: release # Optional: for enhanced security + permissions: + id-token: write # Required for OIDC token exchange + steps: + - name: Harden Runner + uses: step-security/harden-runner@v2 + with: + egress-policy: audit + - uses: actions/checkout@v5 + + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby }} + + - name: Install dependencies + run: bundle install --jobs 4 --retry 3 + + - uses: rust-lang/crates-io-auth-action@v1 + id: auth + + - run: bundle exec rake cargo:publish:real + env: + CARGO_REGISTRY_TOKEN: ${{ steps.auth.outputs.token }} From 64f3c2ad366cd5ec6a5f17464687ee6806899600 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Tue, 14 Oct 2025 17:17:54 -0700 Subject: [PATCH 3/4] Add npm publishing workflow --- .github/workflows/publish-npm.yml | 47 +++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 .github/workflows/publish-npm.yml diff --git a/.github/workflows/publish-npm.yml b/.github/workflows/publish-npm.yml new file mode 100644 index 0000000000..0bfc4123bf --- /dev/null +++ b/.github/workflows/publish-npm.yml @@ -0,0 +1,47 @@ +name: Publish to npmjs.com +on: + push: + tags: ['v*'] # Triggers when pushing tags starting with 'v' +jobs: + publish: + if: github.repository == 'ruby/prism' + runs-on: ubuntu-latest + environment: release # Optional: for enhanced security + permissions: + id-token: write # Required for OIDC token exchange + steps: + - name: Harden Runner + uses: step-security/harden-runner@v2 + with: + egress-policy: audit + - uses: actions/checkout@v5 + + - name: Set up Ruby + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby }} + + - name: Set up node + uses: actions/setup-node@v4 + with: + node-version: '20' + registry-url: 'https://registry.npmjs.org' + + - name: Install dependencies + run: bundle install --jobs 4 --retry 3 + + - name: rake templates + run: bundle exec rake templates + + - name: Set up WASI-SDK + run: | + wget https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-25/wasi-sdk-25.0-x86_64-linux.tar.gz + tar xvf wasi-sdk-25.0-x86_64-linux.tar.gz + + - name: Build the project + run: make wasm WASI_SDK_PATH=$(pwd)/wasi-sdk-25.0-x86_64-linux + + - name: Update npm + run: npm install -g npm@latest + + - run: npm publish From f224797da298ad73e657965a80b5f9450f61cda2 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Wed, 15 Oct 2025 13:51:31 -0700 Subject: [PATCH 4/4] use bundler cache instead of bundle install --- .github/workflows/publish-crate.yml | 6 ++---- .github/workflows/publish-gem.yml | 4 +--- .github/workflows/publish-npm.yml | 6 ++---- 3 files changed, 5 insertions(+), 11 deletions(-) diff --git a/.github/workflows/publish-crate.yml b/.github/workflows/publish-crate.yml index 3397b72553..5d8aa2289e 100644 --- a/.github/workflows/publish-crate.yml +++ b/.github/workflows/publish-crate.yml @@ -19,10 +19,8 @@ jobs: - name: Set up Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: ${{ matrix.ruby }} - - - name: Install dependencies - run: bundle install --jobs 4 --retry 3 + ruby-version: "3.4" + bundler-cache: true - uses: rust-lang/crates-io-auth-action@v1 id: auth diff --git a/.github/workflows/publish-gem.yml b/.github/workflows/publish-gem.yml index 1c0864dd8a..c64a65b66a 100644 --- a/.github/workflows/publish-gem.yml +++ b/.github/workflows/publish-gem.yml @@ -33,9 +33,7 @@ jobs: uses: ruby/setup-ruby@v1 with: ruby-version: "3.4" - - - name: Install dependencies - run: bundle install --jobs 4 --retry 3 + bundler-cache: true - name: Publish to RubyGems uses: rubygems/release-gem@v1 diff --git a/.github/workflows/publish-npm.yml b/.github/workflows/publish-npm.yml index 0bfc4123bf..9e498684ef 100644 --- a/.github/workflows/publish-npm.yml +++ b/.github/workflows/publish-npm.yml @@ -19,7 +19,8 @@ jobs: - name: Set up Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: ${{ matrix.ruby }} + ruby-version: "3.4" + bundler-cache: true - name: Set up node uses: actions/setup-node@v4 @@ -27,9 +28,6 @@ jobs: node-version: '20' registry-url: 'https://registry.npmjs.org' - - name: Install dependencies - run: bundle install --jobs 4 --retry 3 - - name: rake templates run: bundle exec rake templates