-
Notifications
You must be signed in to change notification settings - Fork 6k
tui: set up for publishing via github actions #8020
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 6 commits
201134b
0bc942e
6c7f051
b25aca4
9b12b5a
82643dc
0a573d6
d0aaea0
7c79f0c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,115 @@ | ||
| name: Build Native Packages | ||
|
|
||
| on: | ||
| workflow_call: | ||
| outputs: | ||
| artifact-name: | ||
| description: "Name of the artifact containing all native binaries" | ||
| value: ${{ jobs.collect.outputs.artifact-name }} | ||
| workflow_dispatch: | ||
| push: | ||
| branches: | ||
| - main | ||
| paths: | ||
| - 'crates/goose-acp/**' | ||
| - 'ui/acp/**' | ||
| - '.github/workflows/build-native-packages.yml' | ||
| pull_request: | ||
| paths: | ||
| - 'crates/goose-acp/**' | ||
| - 'ui/acp/**' | ||
| - '.github/workflows/build-native-packages.yml' | ||
|
|
||
| jobs: | ||
| build-matrix: | ||
| name: Build ${{ matrix.platform }} | ||
| runs-on: ${{ matrix.os }} | ||
| strategy: | ||
| fail-fast: false | ||
| matrix: | ||
| include: | ||
| - platform: darwin-arm64 | ||
| os: macos-14 | ||
| target: aarch64-apple-darwin | ||
| - platform: darwin-x64 | ||
| os: macos-13 | ||
| target: x86_64-apple-darwin | ||
| - platform: linux-arm64 | ||
| os: ubuntu-24.04-arm | ||
| target: aarch64-unknown-linux-gnu | ||
| - platform: linux-x64 | ||
| os: ubuntu-latest | ||
| target: x86_64-unknown-linux-gnu | ||
| - platform: win32-x64 | ||
| os: windows-latest | ||
| target: x86_64-pc-windows-msvc | ||
|
|
||
| steps: | ||
| - name: Checkout | ||
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | ||
|
|
||
| - name: Setup Rust | ||
| uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable | ||
| with: | ||
| targets: ${{ matrix.target }} | ||
|
|
||
| - name: Install cross-compilation tools (Linux ARM64) | ||
| if: matrix.platform == 'linux-arm64' | ||
| run: | | ||
| sudo apt-get update | ||
| sudo apt-get install -y gcc-aarch64-linux-gnu | ||
|
|
||
| - name: Setup Rust cache | ||
| uses: Swatinem/rust-cache@42dc69e1aa15d09112580998cf2ef0119e2e91ae # v2 | ||
| with: | ||
| key: ${{ matrix.platform }} | ||
|
|
||
| - name: Build goose-acp-server | ||
| run: cargo build --release --target ${{ matrix.target }} --bin goose-acp-server | ||
|
jamadeo marked this conversation as resolved.
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
These native packages are consumed by Useful? React with 👍 / 👎. |
||
|
|
||
| - name: Prepare artifact (Unix) | ||
| if: runner.os != 'Windows' | ||
| run: | | ||
| mkdir -p artifact/bin | ||
| cp target/${{ matrix.target }}/release/goose-acp-server artifact/bin/ | ||
| chmod +x artifact/bin/goose-acp-server | ||
|
|
||
| - name: Prepare artifact (Windows) | ||
| if: runner.os == 'Windows' | ||
| run: | | ||
| mkdir -p artifact/bin | ||
| cp target/${{ matrix.target }}/release/goose-acp-server.exe artifact/bin/ | ||
|
Comment on lines
+81
to
+82
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
GitHub’s Actions docs say Useful? React with 👍 / 👎.
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. sounds like it could be true? |
||
|
|
||
| - name: Upload artifact | ||
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 | ||
| with: | ||
| name: goose-acp-server-${{ matrix.platform }} | ||
| path: artifact/bin/ | ||
| if-no-files-found: error | ||
| retention-days: 7 | ||
|
|
||
| collect: | ||
| name: Collect all binaries | ||
| runs-on: ubuntu-latest | ||
| needs: build-matrix | ||
| outputs: | ||
| artifact-name: native-binaries-all | ||
|
|
||
| steps: | ||
| - name: Download all artifacts | ||
| uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 | ||
| with: | ||
| path: native-binaries | ||
|
|
||
| - name: List downloaded artifacts | ||
| run: | | ||
| echo "Downloaded artifacts:" | ||
| ls -R native-binaries/ | ||
|
|
||
| - name: Upload combined artifact | ||
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 | ||
| with: | ||
| name: native-binaries-all | ||
| path: native-binaries/ | ||
| if-no-files-found: error | ||
| retention-days: 7 | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,90 @@ | ||
| name: Publish to npm | ||
|
|
||
| on: | ||
| push: | ||
| branches: | ||
| - main | ||
|
|
||
| concurrency: ${{ github.workflow }}-${{ github.ref }} | ||
|
|
||
| permissions: | ||
| contents: write | ||
| pull-requests: write | ||
| id-token: write # Required for npm provenance | ||
|
|
||
| jobs: | ||
| build-native: | ||
| name: Build native binaries | ||
| uses: ./.github/workflows/build-native-packages.yml | ||
|
|
||
| release: | ||
| name: Release | ||
| runs-on: ubuntu-latest | ||
| needs: build-native | ||
| steps: | ||
| - name: Checkout | ||
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4 | ||
|
|
||
| - name: Setup Node.js | ||
| uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 | ||
| with: | ||
| node-version: '20' | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
If this workflow is switched to the repo's actual workspace manager, the install will still fail under the Node version pinned here: the newly added Useful? React with 👍 / 👎. |
||
| registry-url: 'https://registry.npmjs.org' | ||
|
|
||
| - name: Setup Rust | ||
| uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # stable | ||
|
|
||
| - name: Setup Rust cache | ||
| uses: Swatinem/rust-cache@42dc69e1aa15d09112580998cf2ef0119e2e91ae # v2 | ||
|
|
||
| - name: Download native binaries | ||
| uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4 | ||
| with: | ||
| name: ${{ needs.build-native.outputs.artifact-name }} | ||
| path: native-binaries | ||
|
|
||
| - name: Copy binaries to package directories | ||
| run: | | ||
| for platform_dir in native-binaries/goose-acp-server-*; do | ||
| platform=$(basename "$platform_dir") | ||
| pkg_dir="ui/goose-acp-server/${platform}" | ||
|
|
||
| echo "Copying binaries for ${platform}..." | ||
| mkdir -p "${pkg_dir}/bin" | ||
| cp -v "${platform_dir}/bin/"* "${pkg_dir}/bin/" | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Useful? React with 👍 / 👎. |
||
| chmod +x "${pkg_dir}/bin/"* | ||
| done | ||
|
|
||
| - name: Install dependencies | ||
| run: | | ||
| cd ui | ||
| npm ci | ||
|
Comment on lines
+58
to
+61
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
This release job now installs Useful? React with 👍 / 👎. |
||
|
|
||
| - name: Build packages | ||
| run: | | ||
| cd ui/acp | ||
| npm run build | ||
|
|
||
| cd ../text | ||
| npm run build | ||
|
|
||
| - name: Create Release Pull Request or Publish to npm | ||
| id: changesets | ||
| uses: changesets/action@6d3568c53fbe1db6c1f9ab1c7fbf9092bc18627f # v1 | ||
| with: | ||
| publish: npm run release | ||
| version: npm run version | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
When this job runs in the “open/update release PR” path, Useful? React with 👍 / 👎. |
||
| commit: 'chore: version packages' | ||
| title: 'chore: version packages' | ||
| cwd: ui | ||
| env: | ||
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
| NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} | ||
| NPM_CONFIG_PROVENANCE: true | ||
|
|
||
| - name: Summary | ||
| if: steps.changesets.outputs.published == 'true' | ||
| run: | | ||
| echo "## Published Packages" >> $GITHUB_STEP_SUMMARY | ||
| echo "" >> $GITHUB_STEP_SUMMARY | ||
| echo '${{ steps.changesets.outputs.publishedPackages }}' | jq -r '.[] | "- \(.name)@\(.version)"' >> $GITHUB_STEP_SUMMARY | ||
|
|
||
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Uh oh!
There was an error while loading. Please reload this page.