Nightly release #407
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: Nightly release | |
on: | |
schedule: | |
- cron: '0 0 * * *' | |
jobs: | |
test: | |
name: Test | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
- name: Install stable toolchain | |
uses: dtolnay/rust-toolchain@stable | |
- name: Run cargo test | |
run: | | |
(&>/dev/null cargo run -- start --log trace --user root --pass root memory &) | |
cargo test --workspace --features protocol-ws,protocol-http,kv-rocksdb | |
lint: | |
name: Lint | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
- name: Install stable toolchain | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
targets: wasm32-unknown-unknown | |
components: rustfmt, clippy | |
- name: Run cargo check | |
run: cargo check --workspace | |
- name: Run cargo fmt | |
run: cargo fmt --all -- --check | |
- name: Run cargo clippy | |
run: cargo clippy -- -W warnings | |
- name: Run WebAssembly check | |
run: cargo check --features kv-mem,kv-indxdb,protocol-ws,protocol-http --target wasm32-unknown-unknown --package surrealdb | |
build: | |
name: Build ${{ matrix.arch }} | |
needs: [test, lint] | |
strategy: | |
matrix: | |
include: | |
- arch: x86_64-apple-darwin | |
os: macos-11 | |
file: surreal-nightly.darwin-amd64 | |
opts: --features storage-tikv | |
- arch: aarch64-apple-darwin | |
os: macos-11 | |
file: surreal-nightly.darwin-arm64 | |
opts: --features storage-tikv | |
- arch: x86_64-unknown-linux-gnu | |
os: ubuntu-20.04 | |
file: surreal-nightly.linux-amd64 | |
opts: --features storage-tikv | |
- arch: aarch64-unknown-linux-gnu | |
os: ubuntu-20.04 | |
file: surreal-nightly.linux-arm64 | |
opts: --features storage-tikv | |
- arch: x86_64-pc-windows-msvc | |
os: windows-latest | |
file: surreal-nightly.windows-amd64 | |
opts: | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
- name: Prepare environment | |
if: contains(matrix.arch, 'windows') && endsWith(matrix.arch, '-gnu') | |
run: echo "C:\msys64\usr\bin;$Env:Path" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 | |
- name: Install dependencies | |
if: contains(matrix.arch, 'windows') && endsWith(matrix.arch, '-msvc') | |
run: | | |
vcpkg integrate install | |
vcpkg install openssl:x64-windows-static | |
- name: Install dependencies | |
if: contains(matrix.arch, 'apple') && endsWith(matrix.arch, '-darwin') | |
run: | | |
brew install protobuf | |
- name: Install dependencies | |
if: contains(matrix.arch, 'linux') && endsWith(matrix.arch, '-gnu') | |
run: | | |
sudo apt-get -y update | |
sudo apt-get -y install musl-tools qemu-user libc6-dev-arm64-cross | |
sudo apt-get -y install g++-aarch64-linux-gnu gcc-aarch64-linux-gnu | |
sudo apt-get -y install protobuf-compiler | |
- name: Install FoundationDB | |
if: contains(matrix.arch, 'linux') && startsWith(matrix.arch, 'x86_64') | |
run: | | |
curl -sLO https://github.com/apple/foundationdb/releases/download/6.3.23/foundationdb-clients_6.3.23-1_amd64.deb | |
sudo dpkg -i --force-architecture foundationdb-clients_6.3.23-1_amd64.deb | |
rm -rf foundationdb-clients_6.3.23-1_amd64.deb | |
- name: Install stable toolchain | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
targets: ${{ matrix.arch }} | |
- name: Output package versions | |
run: go version ; cargo version ; rustc --version ; cmake --version ; gcc --version ; g++ --version ; perl -v | |
- name: Run cargo build | |
run: cargo build ${{ matrix.opts }} --release --locked --target ${{ matrix.arch }} | |
env: | |
BINDGEN_EXTRA_CLANG_ARGS_aarch64-unknown-linux-gnu: "-I/usr/aarch64-linux-gnu/include/" | |
- name: Configure AWS | |
uses: aws-actions/configure-aws-credentials@v1-node16 | |
with: | |
aws-region: us-east-2 | |
aws-access-key-id: ${{ secrets.AMAZON_ACCESS_KEY }} | |
aws-secret-access-key: ${{ secrets.AMAZON_SECRET_KEY }} | |
- name: Package binaries | |
if: ${{ !contains(matrix.arch, 'windows') }} | |
shell: bash | |
run: | | |
cd target/${{ matrix.arch }}/release | |
chmod +x surreal | |
tar -zcvf ${{ matrix.file }}.tgz surreal | |
echo $(shasum -a 256 ${{ matrix.file }}.tgz | cut -f1 -d' ') > ${{ matrix.file }}.txt | |
aws s3 cp --cache-control 'no-store' ${{ matrix.file }}.tgz s3://download.surrealdb.com/nightly/ | |
aws s3 cp --cache-control 'no-store' ${{ matrix.file }}.txt s3://download.surrealdb.com/nightly/ | |
cd - | |
- name: Package binaries | |
if: ${{ contains(matrix.arch, 'windows') }} | |
shell: bash | |
run: | | |
cd target/${{ matrix.arch }}/release | |
cp surreal.exe ${{ matrix.file }}.exe | |
echo $(shasum -a 256 ${{ matrix.file }}.exe | cut -f1 -d' ') > ${{ matrix.file }}.txt | |
aws s3 cp --cache-control 'no-store' ${{ matrix.file }}.exe s3://download.surrealdb.com/nightly/ | |
aws s3 cp --cache-control 'no-store' ${{ matrix.file }}.txt s3://download.surrealdb.com/nightly/ | |
cd - | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ matrix.file }} | |
path: | | |
target/${{ matrix.arch }}/release/surreal | |
target/${{ matrix.arch }}/release/${{ matrix.file }}.tgz | |
target/${{ matrix.arch }}/release/${{ matrix.file }}.txt | |
target/${{ matrix.arch }}/release/${{ matrix.file }}.exe | |
package: | |
name: Package macOS | |
needs: [build] | |
runs-on: macos-11 | |
steps: | |
- name: Download amd64 binary | |
uses: actions/download-artifact@v3 | |
with: | |
name: surreal-nightly.darwin-amd64 | |
path: amd64 | |
- name: Download arm64 binary | |
uses: actions/download-artifact@v3 | |
with: | |
name: surreal-nightly.darwin-arm64 | |
path: arm64 | |
- name: Configure AWS | |
uses: aws-actions/configure-aws-credentials@v1-node16 | |
with: | |
aws-region: us-east-2 | |
aws-access-key-id: ${{ secrets.AMAZON_ACCESS_KEY }} | |
aws-secret-access-key: ${{ secrets.AMAZON_SECRET_KEY }} | |
- name: Package universal binary | |
shell: bash | |
run: | | |
FILE="surreal-nightly.darwin-universal" | |
lipo -create -output surreal amd64/surreal arm64/surreal | |
chmod +x surreal | |
tar -zcvf $FILE.tgz surreal | |
echo $(shasum -a 256 $FILE.tgz | cut -f1 -d' ') > $FILE.txt | |
aws s3 cp --cache-control 'no-store' $FILE.tgz s3://download.surrealdb.com/nightly/ | |
aws s3 cp --cache-control 'no-store' $FILE.txt s3://download.surrealdb.com/nightly/ | |
deploy: | |
name: Deploy | |
needs: [package] | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
- name: Configure AWS | |
uses: aws-actions/configure-aws-credentials@v1-node16 | |
with: | |
aws-region: us-east-2 | |
aws-access-key-id: ${{ secrets.AMAZON_ACCESS_KEY }} | |
aws-secret-access-key: ${{ secrets.AMAZON_SECRET_KEY }} | |
- name: Download artifacts | |
uses: actions/download-artifact@v3 | |
- name: Distribute binaries | |
shell: bash | |
run: | | |
regions=("af-south-1" "ap-east-1" "ap-south-1" "ap-southeast-1" "ap-southeast-2" "ca-central-1" "eu-central-1" "eu-west-2" "me-south-1" "sa-east-1" "us-west-2") | |
for region in ${regions[@]}; do | |
aws s3 sync --delete --storage-class INTELLIGENT_TIERING --source-region eu-west-2 --region ${region} s3://download.surrealdb.com s3://download.${region}.surrealdb.com | |
done | |
docker: | |
name: Docker | |
needs: [build] | |
runs-on: ubuntu-20.04 | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
- name: Download amd64 binary | |
uses: actions/download-artifact@v3 | |
with: | |
name: surreal-nightly.linux-amd64 | |
path: amd64 | |
- name: Download arm64 binary | |
uses: actions/download-artifact@v3 | |
with: | |
name: surreal-nightly.linux-arm64 | |
path: arm64 | |
- name: Set file permissions | |
shell: bash | |
run: | | |
chmod +x amd64/surreal arm64/surreal | |
- name: Configure DockerHub | |
uses: docker/login-action@v2 | |
with: | |
username: ${{ secrets.DOCKER_USER }} | |
password: ${{ secrets.DOCKER_PASS }} | |
- name: Set up QEMU | |
uses: docker/setup-qemu-action@v2 | |
- name: Set up Buildx | |
uses: docker/setup-buildx-action@v2 | |
- name: Configure tag | |
shell: bash | |
run: | | |
VERSION=nightly | |
echo "VERSION=${VERSION:1}" >> $GITHUB_ENV | |
- name: Build and Push | |
uses: docker/build-push-action@v3 | |
with: | |
context: . | |
push: true | |
platforms: linux/amd64,linux/arm64 | |
tags: surrealdb/surrealdb:nightly |