chore: bump version to 0.1.18 #30
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Release | |
| on: | |
| push: | |
| tags: | |
| - "v*" | |
| env: | |
| MIX_ENV: prod | |
| ELIXIR_VERSION: "1.19" | |
| OTP_VERSION: "28.3.1" | |
| permissions: | |
| contents: write | |
| jobs: | |
| # --------------------------------------------------------------------------- | |
| # Extract version from the pushed tag | |
| # --------------------------------------------------------------------------- | |
| prepare: | |
| runs-on: ubuntu-latest | |
| outputs: | |
| version: ${{ steps.meta.outputs.version }} | |
| steps: | |
| - name: Extract version from tag | |
| id: meta | |
| run: | | |
| VERSION="${GITHUB_REF_NAME#v}" | |
| echo "version=$VERSION" >> "$GITHUB_OUTPUT" | |
| echo "Releasing version: $VERSION" | |
| # --------------------------------------------------------------------------- | |
| # Build OTP releases on each native platform | |
| # --------------------------------------------------------------------------- | |
| build-binary: | |
| needs: prepare | |
| strategy: | |
| matrix: | |
| include: | |
| - runner: macos-14 | |
| target: darwin-arm64 | |
| tarball: opal-server-darwin-arm64.tar.gz | |
| - runner: macos-15-intel | |
| target: darwin-x64 | |
| tarball: opal-server-darwin-x64.tar.gz | |
| - runner: ubuntu-latest | |
| target: linux-x64 | |
| tarball: opal-server-linux-x64.tar.gz | |
| - runner: ubuntu-24.04-arm | |
| target: linux-arm64 | |
| tarball: opal-server-linux-arm64.tar.gz | |
| - runner: windows-2022 | |
| target: win32-x64 | |
| tarball: opal-server-win32-x64.tar.gz | |
| runs-on: ${{ matrix.runner }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: erlef/setup-beam@v1 | |
| with: | |
| elixir-version: ${{ env.ELIXIR_VERSION }} | |
| otp-version: ${{ env.OTP_VERSION }} | |
| - name: Install deps | |
| run: cd opal && mix deps.get --only prod | |
| - name: Build release (${{ matrix.target }}) | |
| run: cd opal && mix release opal_server --overwrite | |
| - name: Package release tarball | |
| shell: bash | |
| run: | | |
| cd opal/_build/prod/rel/opal_server | |
| tar -czf ../../../../${{ matrix.tarball }} . | |
| - name: Upload tarball | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ matrix.tarball }} | |
| path: opal/${{ matrix.tarball }} | |
| retention-days: 1 | |
| # --------------------------------------------------------------------------- | |
| # Build CLI TypeScript package | |
| # --------------------------------------------------------------------------- | |
| build-cli: | |
| needs: prepare | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: jdx/mise-action@v3 | |
| - name: Install deps | |
| run: | | |
| cd opal && mix deps.get | |
| cd ../cli && pnpm install --frozen-lockfile | |
| - name: Codegen + Build | |
| run: mise run build | |
| - name: Upload CLI dist | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: cli-dist | |
| path: | | |
| cli/dist | |
| cli/package.json | |
| retention-days: 1 | |
| # --------------------------------------------------------------------------- | |
| # Assemble and publish | |
| # --------------------------------------------------------------------------- | |
| publish: | |
| needs: [prepare, build-binary, build-cli] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: erlef/setup-beam@v1 | |
| with: | |
| elixir-version: ${{ env.ELIXIR_VERSION }} | |
| otp-version: ${{ env.OTP_VERSION }} | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 22 | |
| registry-url: https://registry.npmjs.org | |
| - name: Download all artifacts | |
| uses: actions/download-artifact@v4 | |
| with: | |
| path: artifacts | |
| - name: Assemble npm package | |
| run: | | |
| # CLI dist | |
| cp -r artifacts/cli-dist/dist cli/dist | |
| # OTP release tarballs | |
| mkdir -p cli/releases | |
| cp artifacts/opal-server-darwin-arm64.tar.gz/opal-server-darwin-arm64.tar.gz cli/releases/ | |
| cp artifacts/opal-server-darwin-x64.tar.gz/opal-server-darwin-x64.tar.gz cli/releases/ | |
| cp artifacts/opal-server-linux-x64.tar.gz/opal-server-linux-x64.tar.gz cli/releases/ | |
| cp artifacts/opal-server-linux-arm64.tar.gz/opal-server-linux-arm64.tar.gz cli/releases/ | |
| cp artifacts/opal-server-win32-x64.tar.gz/opal-server-win32-x64.tar.gz cli/releases/ | |
| echo "==> Package contents:" | |
| ls -lh cli/releases/ | |
| - name: Publish to npm | |
| run: cd cli && npm publish --access public | |
| env: | |
| NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | |
| - name: Install Elixir deps | |
| run: cd opal && mix deps.get | |
| env: | |
| MIX_ENV: dev | |
| - name: Publish to Hex | |
| run: cd opal && mix hex.publish --yes | |
| env: | |
| MIX_ENV: dev | |
| HEX_API_KEY: ${{ secrets.HEX_API_KEY }} | |
| - name: Upload tarballs to GitHub Release | |
| uses: softprops/action-gh-release@v2 | |
| with: | |
| tag_name: v${{ needs.prepare.outputs.version }} | |
| files: | | |
| artifacts/opal-server-darwin-arm64.tar.gz/* | |
| artifacts/opal-server-darwin-x64.tar.gz/* | |
| artifacts/opal-server-linux-x64.tar.gz/* | |
| artifacts/opal-server-linux-arm64.tar.gz/* | |
| artifacts/opal-server-win32-x64.tar.gz/* |