Skip to content

Commit

Permalink
Add CLI and connector definition build
Browse files Browse the repository at this point in the history
  • Loading branch information
daniel-chambers committed Mar 14, 2024
1 parent dc07744 commit 0a5c88d
Show file tree
Hide file tree
Showing 3 changed files with 109 additions and 1 deletion.
106 changes: 106 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ on:
push:
branches:
- main
- test-ci/**
tags:
- 'v*'

Expand Down Expand Up @@ -65,3 +66,108 @@ jobs:

- name: Deploy 🚀
run: nix run .#publish-docker-image ${{ github.ref }}

connector-definition:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build connector definition
run: |
set -e pipefail
export DOCKER_IMAGE="ghcr.io/hasura/mongodb-connector:$GITHUB_REF_NAME"
export CLI_VERSION=$GITHUB_REF_NAME
make build
working-directory: ./connector-definition
- uses: actions/upload-artifact@v4
with:
name: connector-definition.tgz
path: ./connector-definition/dist/connector-definition.tgz
compression-level: 0 # Already compressed

build-cli-binaries:
name: build the CLI binaries
strategy:
matrix:
include:
- runner: ubuntu-latest
target: x86_64-unknown-linux-gnu
- runner: ubuntu-latest
target: aarch64-unknown-linux-gnu
linux-packages: gcc-aarch64-linux-gnu
linker: /usr/bin/aarch64-linux-gnu-gcc
- runner: macos-latest
target: x86_64-apple-darwin
- runner: macos-latest
target: aarch64-apple-darwin
- runner: windows-latest
target: x86_64-pc-windows-msvc
extension: .exe
runs-on: ${{ matrix.runner }}
env:
CARGO_BUILD_TARGET: ${{ matrix.target }}
CARGO_NET_GIT_FETCH_WITH_CLI: "true"
# RUSTFLAGS: "-D warnings" # fail on warnings
defaults:
run:
shell: bash
steps:
- uses: actions/checkout@v4

- name: install protoc
uses: arduino/setup-protoc@v3
with:
version: "25.x"
repo-token: ${{ secrets.GITHUB_TOKEN }}

- name: install tools
run: |
rustup show
rustup target add ${{ matrix.target }}
- name: install other packages required
if: matrix.linux-packages
run: |
sudo apt-get update
sudo apt-get install -y ${{ matrix.linux-packages }}
- uses: Swatinem/rust-cache@v2
with:
shared-key: "build" # share the cache across jobs

- name: build the CLI
run: |
# If we're on a tag, use the tag name as the release version.
if [[ "$GITHUB_REF_TYPE" == 'tag' ]]; then
# Ensure that the version specified in Cargo.toml is the same as the tag (with a 'v' prefix).
CARGO_VERSION="$(cargo metadata --format-version=1 | jq -r '.packages | .[] | select(.name == "ndc-postgres") | .version')"
echo "Git tag: ${GITHUB_REF_NAME}"
echo "Cargo version: ${CARGO_VERSION}"
if [[ "${GITHUB_REF_NAME}" != "v${CARGO_VERSION}" ]]; then
echo >&2 "The Git tag is \"${GITHUB_REF_NAME}\", but the version in Cargo.toml is \"${CARGO_VERSION}\"."
echo >&2 'These must be the same, with a "v" prefix for the tag. Aborting.'
exit 1
fi
export RELEASE_VERSION="$GITHUB_REF_NAME"
echo "RELEASE_VERSION = ${RELEASE_VERSION}"
fi
if [[ -n '${{ matrix.linker }}' ]]; then
TARGET_SCREAMING="$(echo '${{ matrix.target }}' | tr '[:lower:]' '[:upper:]' | tr '-' '_')"
echo "CARGO_TARGET_${TARGET_SCREAMING}_LINKER"='${{ matrix.linker }}'
declare "CARGO_TARGET_${TARGET_SCREAMING}_LINKER"='${{ matrix.linker }}'
export "CARGO_TARGET_${TARGET_SCREAMING}_LINKER"
fi
echo "Building for target: ${CARGO_BUILD_TARGET}"
cargo build --release --package=mongodb-cli-plugin
mkdir -p release
mv -v target/${{ matrix.target }}/release/hasura-mongodb release/hasura-mongodb-${{ matrix.target }}${{ matrix.extension }}
- uses: actions/upload-artifact@v4
with:
name: release/hasura-mongodb-${{ matrix.target }}${{ matrix.extension }}
path: release
if-no-files-found: error

2 changes: 2 additions & 0 deletions connector-definition/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,11 @@ dist dist/.hasura-connector:
mkdir dist/.hasura-connector

dist/.hasura-connector/connector-metadata.yaml: DOCKER_IMAGE ?= $(error The DOCKER_IMAGE variable must be defined)
dist/.hasura-connector/connector-metadata.yaml: CLI_VERSION ?= $(error The CLI_VERSION variable must be defined)
dist/.hasura-connector/connector-metadata.yaml: connector-metadata.yaml dist/.hasura-connector
cp -f connector-metadata.yaml dist/.hasura-connector/
yq -i '.packagingDefinition.dockerImage = "$(DOCKER_IMAGE)"' dist/.hasura-connector/connector-metadata.yaml
yq -i '.cliPlugin.version = "$(CLI_VERSION)"' dist/.hasura-connector/connector-metadata.yaml

dist/connector-definition.tgz: dist/.hasura-connector/connector-metadata.yaml
shopt -s dotglob && cd dist && tar -czvf connector-definition.tgz *
2 changes: 1 addition & 1 deletion connector-definition/connector-metadata.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ commands:
update: hasura-mongodb update
cliPlugin:
name: hasura-mongodb
version: "0.0.1"
version:
dockerComposeWatch:
- path: ./
target: /etc/connector
Expand Down

0 comments on commit 0a5c88d

Please sign in to comment.