Skip to content

rust runtime and connectors: phase one #3356

rust runtime and connectors: phase one

rust runtime and connectors: phase one #3356

Workflow file for this run

name: CI
# Controls when the action will run. Triggers the workflow on push
# or pull request events, but only for the primary branch.
on:
push:
branches: [master]
pull_request:
branches: [master]
env:
CARGO_TERM_COLOR: always
CARGO_CACHE_VERSION: 0.8.2
RUSTFLAGS: "-C link-arg=-fuse-ld=lld"
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
gnu-binaries:
runs-on: ubuntu-2004-large
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
submodules: true
lfs: true
- uses: actions/setup-go@v2
with:
go-version: "1.19"
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
default: true
toolchain: 1.71.1
- name: Install Protoc
uses: arduino/setup-protoc@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Google Cloud SDK
uses: google-github-actions/setup-gcloud@v0
with:
project_id: ${{ secrets.GCP_PROJECT_ID }}
service_account_key: ${{ secrets.GCP_SA_KEY }}
export_default_credentials: true
- uses: supabase/setup-cli@v1
- run: supabase start
- name: SQL tests
run: ./supabase/run_sql_tests.sh
- run: make extra-ci-runner-setup
- run: make print-versions
- uses: Swatinem/rust-cache@v2
- name: Cache/Restore Go dependencies.
uses: actions/cache@v2
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
- run: make install-tools
- run: go mod download
- run: make rust-gnu-test
- run: make linux-gnu-binaries
- name: Ensure that we didn't dirty the tree.
run: git clean --force -d && git diff --exit-code || exit 1
- name: Upload Binaries
uses: actions/upload-artifact@v2
with:
name: linux-gnu-binaries
path: |
.build/package/bin/*
target/x86_64-unknown-linux-gnu/release/libbindings.a
crates/bindings/flow_bindings.h
target/x86_64-unknown-linux-gnu/release/librocksdb-exp/
musl-binaries:
runs-on: ubuntu-2004-large
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
submodules: true
- name: Install Rust
uses: actions-rs/toolchain@v1
with:
toolchain: 1.71.1
default: true
target: x86_64-unknown-linux-musl
- name: Install Protoc
uses: arduino/setup-protoc@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- run: make extra-ci-runner-setup
- run: make print-versions
- uses: Swatinem/rust-cache@v2
- run: go mod download
- run: make rust-musl-test
- run: make linux-musl-binaries
- name: Upload Binaries
uses: actions/upload-artifact@v2
with:
name: linux-musl-binaries
path: |
.build/package/bin/*
assembly:
runs-on: ubuntu-2004-large
needs: [gnu-binaries, musl-binaries]
services:
postgres:
image: postgres:latest
env:
POSTGRES_DB: flow
POSTGRES_USER: flow
POSTGRES_PASSWORD: flow
ports:
- 5432:5432
# Set health checks to wait until postgres has started
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
submodules: true
- name: Install Protoc
uses: arduino/setup-protoc@v1
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/setup-go@v2
with:
go-version: "1.19"
- name: Cache/Restore Go dependencies.
uses: actions/cache@v2
with:
path: ~/go/pkg/mod
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }}
- run: make extra-ci-runner-setup
- run: make print-versions
- name: Set up Google Cloud SDK
uses: google-github-actions/setup-gcloud@v0
with:
project_id: ${{ secrets.GCP_PROJECT_ID }}
service_account_key: ${{ secrets.GCP_SA_KEY }}
export_default_credentials: true
- name: Login to GitHub container registry
run: |
echo "${{ secrets.GITHUB_TOKEN }}" | \
docker login --username ${{ github.actor }} --password-stdin ghcr.io
- name: Download gnu-linux-binaries
uses: actions/download-artifact@v2
with:
name: linux-gnu-binaries
path: linux-gnu-binaries
- name: Move linux-gnu-binaries to PKGBIN
run: |
mkdir -p .build/package/bin && \
mv linux-gnu-binaries/.build/package/bin/* .build/package/bin && \
mkdir -p target/x86_64-unknown-linux-gnu/release && \
mv -f linux-gnu-binaries/target/x86_64-unknown-linux-gnu/release/* target/x86_64-unknown-linux-gnu/release/ && \
mv -f linux-gnu-binaries/crates/bindings/flow_bindings.h crates/bindings/
- name: Download linux-musl-binaries
uses: actions/download-artifact@v2
with:
name: linux-musl-binaries
path: linux-musl-binaries
- name: Move linux-musl-binaries to PKGBIN
run: |
mkdir -p .build/package/bin && \
mv linux-musl-binaries/* .build/package/bin
# Downloaded artifacts lose their prior permission settings
- name: Adjust binaries permissions
run: |
chmod +x .build/package/bin/*
- name: Add PKGDIR/bin to PATH
run: echo "$GITHUB_WORKSPACE/.build/package/bin" >> $GITHUB_PATH
- name: make catalog-test
run: |
make catalog-test SKIP_BUILD=true
- name: make go-test-ci
run: |
make go-test-ci SKIP_BUILD=true
- name: make end-to-end-test
run: |
make end-to-end-test SKIP_BUILD=true
- name: make package (tar only)
run: |
make /home/runner/work/flow/flow/.build/package/flow-x86-linux.tar.gz
- name: Ensure that we didn't dirty the tree.
run: git clean --force -d && git diff --exit-code || exit 1
- run: make docker-image
- run: make docker-push
- if: ${{ github.ref == 'refs/heads/master' }}
run: make docker-push-dev
- if: ${{ github.ref == 'refs/heads/master' }}
name: Upload release assets
uses: softprops/action-gh-release@v1
with:
body: |
This is the latest development build, which gets updated on every successful build of the master branch.
target_commitish: ${{ github.sha }}
draft: false
prerelease: true
tag_name: dev
generate_release_notes: false
files: .build/package/flow-x86-linux.tar.gz