Feat/restore preamble #2419
Workflow file for this run
This file contains 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: Soroban RPC | |
defaults: | |
run: | |
shell: bash | |
on: | |
push: | |
branches: [main, release/**] | |
pull_request: | |
jobs: | |
test: | |
name: Unit tests | |
strategy: | |
matrix: | |
os: [ubuntu-20.04] | |
go: [1.20.1] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
# For pull requests, build and test the PR head not a merge of the PR with the destination. | |
ref: ${{ github.event.pull_request.head.sha || github.ref }} | |
# We need to full history for git-restore-mtime to know what modification dates to use. | |
# Otherwise, the Go test cache will fail (due to the modification time of fixtures changing). | |
fetch-depth: "0" | |
- uses: ./.github/actions/setup-go | |
with: | |
go-version: ${{ matrix.go }} | |
- name: Build soroban contract fixtures | |
run: | | |
rustup update | |
rustup target add wasm32-unknown-unknown | |
make build-test-wasms | |
- run: make build-libpreflight | |
- run: go test -race -cover -timeout 25m -v ./cmd/soroban-rpc/... | |
build: | |
name: Build | |
strategy: | |
matrix: | |
include: | |
- os: ubuntu-latest | |
rust_target: x86_64-unknown-linux-gnu | |
go_arch: amd64 | |
- os: ubuntu-latest | |
rust_target: aarch64-unknown-linux-gnu | |
go_arch: arm64 | |
- os: macos-latest | |
rust_target: x86_64-apple-darwin | |
go_arch: amd64 | |
- os: macos-latest | |
rust_target: aarch64-apple-darwin | |
go_arch: arm64 | |
- os: windows-latest | |
rust_target: x86_64-pc-windows-gnu | |
go_arch: amd64 | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v3 | |
# we cannot use our own ./.github/actions/setup-go action | |
# because it uses apt-get and some OSs (e.g. windows) don't have it | |
- uses: actions/setup-go@v3 | |
with: | |
go-version: 1.20.1 | |
- run: | | |
rustup target add ${{ matrix.rust_target }} | |
rustup update | |
# On windows, make sure we have the same compiler (linker) used by rust. | |
# This is important since the symbols names won't match otherwise. | |
- if: matrix.os == 'windows-latest' | |
name: Install the same mingw gcc compiler used by rust | |
run: | | |
C:/msys64/usr/bin/pacman.exe -S mingw-w64-x86_64-gcc --noconfirm | |
echo "CC=C:/msys64/mingw64/bin/gcc.exe" >> $GITHUB_ENV | |
echo "C:/msys64/mingw64/bin" >> $GITHUB_PATH | |
# Use cross-compiler for linux aarch64 | |
- if: matrix.rust_target == 'aarch64-unknown-linux-gnu' | |
name: Install aarch64 cross-compilation toolchain | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y gcc-10-aarch64-linux-gnu | |
echo 'CC=aarch64-linux-gnu-gcc-10' >> $GITHUB_ENV | |
- name: Build libpreflight | |
run: make build-libpreflight | |
env: | |
CARGO_BUILD_TARGET: ${{ matrix.rust_target }} | |
- name: Build Soroban RPC reproducible build | |
run: | | |
go build -trimpath -buildvcs=false ./cmd/soroban-rpc | |
ls -lh soroban-rpc | |
file soroban-rpc | |
env: | |
CGO_ENABLED: 1 | |
GOARCH: ${{ matrix.go_arch }} | |
integration: | |
name: Integration tests | |
strategy: | |
matrix: | |
os: [ubuntu-20.04] | |
go: [1.20.1] | |
env: | |
SOROBAN_RPC_INTEGRATION_TESTS_ENABLED: true | |
SOROBAN_RPC_INTEGRATION_TESTS_CAPTIVE_CORE_BIN: /usr/bin/stellar-core | |
PROTOCOL_20_CORE_DEBIAN_PKG_VERSION: 19.13.1-1469.76fed6ead.focal~soroban | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
# For pull requests, build and test the PR head not a merge of the PR with the destination. | |
ref: ${{ github.event.pull_request.head.sha || github.ref }} | |
# We need to full history for git-restore-mtime to know what modification dates to use. | |
# Otherwise, the Go test cache will fail (due to the modification time of fixtures changing). | |
fetch-depth: "0" | |
- uses: ./.github/actions/setup-go | |
with: | |
go-version: ${{ matrix.go }} | |
- name: Build soroban contract fixtures | |
run: | | |
rustup update | |
rustup target add wasm32-unknown-unknown | |
make build_rust | |
make build-test-wasms | |
- name: Install Captive Core | |
run: | | |
# Workaround for https://github.com/actions/virtual-environments/issues/5245, | |
# libc++1-8 won't be installed if another version is installed (but apt won't give you a helpful | |
# message about why the installation fails) | |
sudo apt-get remove -y libc++1-10 libc++abi1-10 || true | |
sudo wget -qO - https://apt.stellar.org/SDF.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=true sudo apt-key add - | |
sudo bash -c 'echo "deb https://apt.stellar.org focal unstable" > /etc/apt/sources.list.d/SDF-unstable.list' | |
sudo apt-get update && sudo apt-get install -y stellar-core="$PROTOCOL_20_CORE_DEBIAN_PKG_VERSION" | |
echo "Using stellar core version $(stellar-core version)" | |
# Docker-compose's remote contexts on Ubuntu 20 started failing with an OpenSSL versioning error. | |
# See https://stackoverflow.com/questions/66579446/error-executing-docker-compose-building-webserver-unable-to-prepare-context-un | |
- name: Work around Docker Compose problem | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y ca-certificates curl gnupg | |
# Install docker apt repo | |
sudo install -m 0755 -d /etc/apt/keyrings | |
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg | |
sudo chmod a+r /etc/apt/keyrings/docker.gpg | |
echo \ | |
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ | |
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ | |
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null | |
# Install docker-compose v2 from apt repo | |
sudo apt-get update | |
sudo apt-get remove -y moby-compose | |
sudo apt-get install -y docker-compose-plugin | |
echo "Docker Compose Version:" | |
docker-compose version | |
- name: Build libpreflight | |
run: make build-libpreflight | |
- name: Run Soroban RPC Integration Tests | |
run: | | |
go test -race -timeout 25m -v ./cmd/soroban-rpc/internal/test/... |