Skip to content

Commit

Permalink
Merge branch 'main' into support-classic-accounts-trustlines
Browse files Browse the repository at this point in the history
  • Loading branch information
janewang authored Jan 10, 2025
2 parents e442793 + b6bd255 commit 9efc9e3
Show file tree
Hide file tree
Showing 171 changed files with 5,453 additions and 2,733 deletions.
79 changes: 73 additions & 6 deletions .github/workflows/binaries.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,17 +27,15 @@ jobs:
crate:
- name: stellar-cli
binary: stellar
- name: soroban-cli
binary: soroban
sys:
- os: ubuntu-20.04 # Use 20.04 to get an older version of glibc for increased compat
target: x86_64-unknown-linux-gnu
- os: ubuntu-20.04 # Use 20.04 to get an older version of glibc for increased compat
target: aarch64-unknown-linux-gnu
- os: macos-14
target: x86_64-apple-darwin
- os: macos-12
target: aarch64-apple-darwin
- os: macos-14
target: x86_64-apple-darwin
- os: windows-latest
target: x86_64-pc-windows-msvc
ext: .exe
Expand All @@ -46,41 +44,51 @@ jobs:
- uses: actions/checkout@v4
- run: rustup update
- run: rustup target add ${{ matrix.sys.target }}

- if: matrix.sys.target == 'aarch64-unknown-linux-gnu'
run: sudo apt-get update && sudo apt-get -y install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu libudev-dev
run: sudo apt-get update && sudo apt-get -y install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu libudev-dev libdbus-1-dev

- name: Setup vars
run: |
version="$(cargo metadata --format-version 1 --no-deps | jq -r '.packages[] | select(.name == "stellar-cli") | .version')"
echo "VERSION=${version}" >> $GITHUB_ENV
echo "NAME=${{ matrix.crate.name }}-${version}-${{ matrix.sys.target }}" >> $GITHUB_ENV
- name: Package (release only)
if: github.event_name == 'release'
run: cargo package --no-verify --package ${{ matrix.crate.name }}

- name: Package Extract (release only)
if: github.event_name == 'release'
run: |
cd target/package
tar xvfz ${{ matrix.crate.name }}-$VERSION.crate
echo "BUILD_WORKING_DIR=target/package/${{ matrix.crate.name }}-$VERSION" >> $GITHUB_ENV
- name: Build
env:
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc
working-directory: ${{ env.BUILD_WORKING_DIR }}
run: sudo apt-get update && sudo apt-get -y install libdbus-1-dev
run: cargo build --target-dir="$GITHUB_WORKSPACE/target" --package ${{ matrix.crate.name }} --features opt --release --target ${{ matrix.sys.target }}

- name: Build provenance for attestation (release only)
if: github.event_name == 'release'
uses: actions/attest-build-provenance@v1
with:
subject-path: target/${{ matrix.sys.target }}/release/${{ matrix.crate.binary }}${{ matrix.sys.ext }}

- name: Compress
run: |
cd target/${{ matrix.sys.target }}/release
tar czvf $NAME.tar.gz ${{ matrix.crate.binary }}${{ matrix.sys.ext }}
- name: Upload to Artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ env.NAME }}
name: ${{ env.NAME }}.tar.gz
path: 'target/${{ matrix.sys.target }}/release/${{ env.NAME }}.tar.gz'

- name: Upload to Release (release only)
if: github.event_name == 'release'
uses: actions/github-script@v7
Expand All @@ -94,3 +102,62 @@ jobs:
name: '${{ env.NAME }}.tar.gz',
data: fs.readFileSync('target/${{ matrix.sys.target }}/release/${{ env.NAME }}.tar.gz'),
});
installer:
needs: build
runs-on: windows-latest

steps:
- uses: actions/checkout@v4

- name: Setup vars
run: |
version="$(cargo metadata --format-version 1 --no-deps | jq -r '.packages[] | select(.name == "stellar-cli") | .version')"
installer_basename="stellar-cli-installer-${version}-x86_64-pc-windows-msvc"
echo "VERSION=${version}" >> $GITHUB_ENV
echo "STELLAR_CLI_INSTALLER_BASENAME=${installer_basename}" >> $GITHUB_ENV
echo "STELLAR_CLI_INSTALLER=${installer_basename}.exe" >> $GITHUB_ENV
echo "ARTIFACT_NAME=stellar-cli-${version}-x86_64-pc-windows-msvc.tar.gz" >> $GITHUB_ENV
- name: Download Artifact
uses: actions/download-artifact@v4
with:
name: ${{ env.ARTIFACT_NAME }}

- name: Uncompress Artifact
run: tar xvf ${{ env.ARTIFACT_NAME }}

- name: Build Installer
shell: powershell
run: |
$Env:Path += ";C:\Users\$Env:UserName\AppData\Local\Programs\Inno Setup 6"
$Env:STELLAR_CLI_VERSION = "${{ env.VERSION }}"
ISCC.exe installer.iss
mv Output/stellar-installer.exe ${{ env.STELLAR_CLI_INSTALLER }}
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: ${{ env.STELLAR_CLI_INSTALLER }}
path: ${{ env.STELLAR_CLI_INSTALLER }}

- name: Build provenance for attestation (release only)
if: github.event_name == 'release'
uses: actions/attest-build-provenance@v1
with:
subject-path: ${{ env.STELLAR_CLI_INSTALLER }}

- name: Upload to Release (release only)
if: github.event_name == 'release'
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
await github.rest.repos.uploadReleaseAsset({
owner: context.repo.owner,
repo: context.repo.repo,
release_id: ${{ github.event.release.id }},
name: '${{ env.STELLAR_CLI_INSTALLER }}',
data: fs.readFileSync('${{ env.STELLAR_CLI_INSTALLER }}'),
});
6 changes: 5 additions & 1 deletion .github/workflows/bindings-ts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,14 @@ jobs:
NETWORK: local
ENABLE_SOROBAN_RPC: true
options: >-
--health-cmd "curl --no-progress-meter --fail-with-body -X POST \"http://localhost:8000/soroban/rpc\" -H 'Content-Type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":8675309,\"method\":\"getNetwork\"}' && curl --no-progress-meter \"http://localhost:8000/friendbot\" | grep '\"invalid_field\": \"addr\"'"
--health-cmd "curl --no-progress-meter --fail-with-body -X POST \"http://localhost:8000/rpc\" -H 'Content-Type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":8675309,\"method\":\"getNetwork\"}' && curl --no-progress-meter \"http://localhost:8000/friendbot\" | grep '\"invalid_field\": \"addr\"'"
--health-interval 10s
--health-timeout 5s
--health-retries 50
steps:
- uses: actions/setup-node@v4
with:
node-version: '22.x'
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
Expand All @@ -35,6 +38,7 @@ jobs:
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- run: rustup update
- run: sudo apt install -y libdbus-1-dev
- run: cargo build
- run: rustup target add wasm32-unknown-unknown
- run: make build-test-wasms
Expand Down
36 changes: 18 additions & 18 deletions .github/workflows/rpc-tests.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

name: RPC Tests
on:
push:
Expand All @@ -15,32 +14,33 @@ jobs:
runs-on: ubuntu-22.04
services:
rpc:
image: stellar/quickstart:v438-testing
image: stellar/quickstart:testing
ports:
- 8000:8000
env:
ENABLE_LOGS: true
ENABLE_SOROBAN_DIAGNOSTIC_EVENTS: true
NETWORK: local
PROTOCOL_VERSION: 22
options: >-
--health-cmd "curl --no-progress-meter --fail-with-body -X POST \"http://localhost:8000/soroban/rpc\" -H 'Content-Type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":8675309,\"method\":\"getNetwork\"}' && curl --no-progress-meter \"http://localhost:8000/friendbot\" | grep '\"invalid_field\": \"addr\"'"
--health-interval 10s
--health-timeout 5s
--health-retries 50
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- run: rustup update
- run: cargo build
- run: rustup target add wasm32-unknown-unknown
- run: make build-test-wasms
- run: SOROBAN_PORT=8000 cargo test --features it --package soroban-test --test it -- integration

- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
- run: rustup update
- run: sudo apt install -y libdbus-1-dev
- run: cargo build
- run: rustup target add wasm32-unknown-unknown
- run: make build-test-wasms
- run: SOROBAN_PORT=8000 cargo test --features it --package soroban-test --test it -- integration
52 changes: 32 additions & 20 deletions .github/workflows/rust.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:

complete:
if: always()
needs: [fmt, check-generated-full-help-docs, build-and-test, publish-dry-run]
needs: [fmt, cargo-deny, check-generated-full-help-docs, build-and-test, publish-dry-run]
runs-on: ubuntu-latest
steps:
- if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')
Expand All @@ -30,12 +30,26 @@ jobs:
- run: rustup update
- run: cargo fmt --all --check

cargo-deny:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
check: [advisories, bans, licenses, sources]
continue-on-error: ${{ matrix.check == 'advisories' }}
steps:
- uses: actions/checkout@v3
- uses: EmbarkStudios/cargo-deny-action@b01e7a8cfb1f496c52d77361e84c1840d8246393
with:
command: check ${{ matrix.check }}

check-generated-full-help-docs:
runs-on: ubuntu-latest-16-cores
steps:
- uses: actions/checkout@v4
- uses: stellar/actions/rust-cache@main
- run: rustup update
- run: sudo apt install -y libdbus-1-dev
- run: make generate-full-help-doc
- run: git add -N . && git diff HEAD --exit-code

Expand All @@ -44,18 +58,18 @@ jobs:
fail-fast: false
matrix:
rust: [msrv, latest]
include:
sys:
- os: ubuntu-latest-16-cores
target: x86_64-unknown-linux-gnu
- os: ubuntu-latest-16-cores
- os: ubuntu-jammy-16-cores-arm64
target: aarch64-unknown-linux-gnu
- os: macos-latest
target: x86_64-apple-darwin
- os: macos-latest
target: aarch64-apple-darwin
- os: windows-latest-8-cores
target: x86_64-pc-windows-msvc
runs-on: ${{ matrix.os }}
runs-on: ${{ matrix.sys.os }}
env:
CI_TESTS: true
steps:
Expand All @@ -74,18 +88,15 @@ jobs:
run: echo RUSTFLAGS='-Dwarnings -Dclippy::all -Dclippy::pedantic' >> $GITHUB_ENV
- run: rustup update
- run: cargo version
- run: rustup target add ${{ matrix.target }}
- run: rustup target add ${{ matrix.sys.target }}
- run: rustup target add wasm32-unknown-unknown
- if: matrix.target == 'aarch64-unknown-linux-gnu'
run: sudo apt-get update && sudo apt-get -y install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
- run: cargo clippy --all-targets --target ${{ matrix.target }}
- run: make build-test
- if: startsWith(matrix.target, 'x86_64')
# specify directories explicitly (otherwise it will fail with missing symbols)
run: |
for I in cmd/soroban-cli cmd/crates/* cmd/crates/soroban-test/tests/fixtures/test-wasms/hello_world ; do
cargo test --target ${{ matrix.target }} --manifest-path $I/Cargo.toml
done
- if: runner.os == 'Linux'
run: sudo apt-get update && sudo apt-get -y install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu libudev-dev libdbus-1-dev
- run: cargo clippy --all-targets --target ${{ matrix.sys.target }}
- run: make test
env:
CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER: aarch64-linux-gnu-gcc
CARGO_BUILD_TARGET: ${{ matrix.sys.target }}

publish-dry-run:
if: github.event_name == 'push' || startsWith(github.head_ref, 'release/')
Expand All @@ -96,11 +107,12 @@ jobs:
- os: ubuntu-latest-16-cores
target: x86_64-unknown-linux-gnu
cargo-hack-feature-options: --feature-powerset
additional-deb-packages: libudev-dev
# - os: ubuntu-latest-16-cores
# target: aarch64-unknown-linux-gnu
# cargo-hack-feature-options: --feature-powerset
# additional-deb-packages: libudev-dev libssl-dev
additional-deb-packages: libudev-dev libdbus-1-dev
# TODO: add back ARM support
#- os: ubuntu-latest-16-cores
# target: aarch64-unknown-linux-gnu
# cargo-hack-feature-options: --feature-powerset
# additional-deb-packages: libudev-dev libssl-dev
- os: macos-latest
target: x86_64-apple-darwin
cargo-hack-feature-options: --feature-powerset
Expand Down
23 changes: 23 additions & 0 deletions .github/workflows/stale.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: 'Stale Issues / PRs'

on:
workflow_dispatch:
schedule:
- cron: '0 18 * * *' # approx 9:30am daily

jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v9
with:
debug-only: false
days-before-stale: 30
days-before-close: 30
stale-issue-message: 'This issue is stale because it has been assigned for 30 days with no activity. It will be closed in 30 days unless the stale label is removed, and the assignee is removed or updated.'
stale-pr-message: 'This pull request is stale because it has been open for 30 days with no activity. It will be closed in 30 days unless the stale label is removed.'
stale-issue-label: stale
stale-pr-label: stale
remove-stale-when-updated: true
delete-branch: true
include-only-assigned: true
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@ test_snapshots
.vscode/settings.json
.idea
local.sh
.stellar
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ changes quickly.

## Setting up development environment

There are 2 ways to being developing stellar-cli:
There are 2 ways to begin developing stellar-cli:

### Installing all required dependencies

Expand Down
Loading

0 comments on commit 9efc9e3

Please sign in to comment.