Skip to content

Commit

Permalink
Conda build (#16)
Browse files Browse the repository at this point in the history
* Added conda build
  • Loading branch information
hansenms authored Aug 15, 2022
1 parent f48f04b commit 958b491
Show file tree
Hide file tree
Showing 8 changed files with 215 additions and 0 deletions.
37 changes: 37 additions & 0 deletions .github/workflows/mrd_storage_server_conda.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
on:
pull_request:
branches:
- main
release:
types:
- created

jobs:
build-conda-packages:
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
- uses: conda-incubator/setup-miniconda@e81abac10ce2c37423b54eae5af93aa3b4d3475c
with:
activate-environment: mrd-storage-server-build
environment-file: conda/environment.yml
python-version: 3.9
auto-activate-base: false
- name: Build conda package
shell: bash -l {0}
working-directory: conda
run: |
export GIT_DESCRIBE_TAG="${GITHUB_REF##*/}"
./package.sh
echo "Packages built: $(find build_pkg -name mrd-storage-server*.tar.bz2)"
- name: Push conda package
shell: bash -l {0}
if: ${{ github.event_name == 'release' }}
env:
ANACONDA_TOKEN: ${{ secrets.ANACONDA_TOKEN }}
working-directory: conda
run: |
./publish_package.sh -u ismrmrd -t "$ANACONDA_TOKEN" -p `find build_pkg -name mrd-storage-server*.tar.bz2`
3 changes: 3 additions & 0 deletions conda/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
build_pkg/
.pytest_cache/
__pycache__/
5 changes: 5 additions & 0 deletions conda/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/bin/bash

set -euo pipefail

go build -o "${PREFIX}/bin/mrd-storage-server" .
7 changes: 7 additions & 0 deletions conda/environment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
name: mrd-storage-server-build
channels:
- conda-forge
dependencies:
- conda-build
- anaconda-client

26 changes: 26 additions & 0 deletions conda/meta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package:
name: mrd-storage-server
version: {{ GIT_DESCRIBE_TAG | replace ("v","") }}

source:
path: ../

requirements:
build:
- go-cgo=1.17.6

run: {}

test:
requires:
- curl

about:
home: https://github.com/ismrmrd/mrd-storage-server
license: MIT
summary: 'A simple queryable storage server'
description: |
A simple RESTful server for storing and retrieving arbitrary data during MRI reconstructions.
dev_url: https://github.com/ismrmrd/mrd-storage-server
doc_url: https://github.com/ismrmrd/mrd-storage-server
doc_source_url: https://github.com/ismrmrd/mrd-storage-server/blob/main/README.md
24 changes: 24 additions & 0 deletions conda/package.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/bin/bash
set -euo pipefail

usage()
{
cat << EOF
Builds the mrd-storage-server conda package.
Usage: $0
EOF
}

output_path="$(dirname "$0")/build_pkg"

# Build up channel directives
channels=(
conda-forge
)

channel_directives=$(printf -- "-c %s " "${channels[@]}")

mkdir -p "$output_path"
bash -c "conda build --no-anaconda-upload --output-folder $output_path $channel_directives $(dirname "$0")"
77 changes: 77 additions & 0 deletions conda/publish_package.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
#!/bin/bash
set -euo pipefail

usage()
{
cat << EOF
Publishes a conda package.
Usage: $0 [options]
Options:
-p|--package_path <path> Path to the package (tar.gz) to push
-u|--user <user> Anaconda.org channeluser or organization
-t|--token <token> Token for uploading to anaconda.org
-f|--force Force push even if package exists
-h| --help Brings up this menu
EOF
}

while [[ $# -gt 0 ]]; do
key="$1"

case $key in
-p|--package_path)
package_path="$2"
shift
shift
;;
-u|--user)
user="$2"
shift
shift
;;
-t|--token)
token="$2"
shift
shift
;;
--force)
force=1
shift
;;
-h|--help)
usage
exit
;;
*)
echo "ERROR: unknown option \"$key\""
usage
exit 1
;;
esac
done

if [[ -z "${package_path:-}" ]]; then
echo "You cannot push to anaconda without a package"
echo "Please supply a package path with the --package_path argument"
exit 1
fi
if [[ -z "${token:-}" ]]; then
echo "You cannot push to anaconda without a token"
echo "Please supply a token with the --token argument"
exit 1
fi
if [[ -z "${user:-}" ]]; then
echo "You cannot push to anaconda without a user"
echo "Please supply a user with the --user argument"
exit 1
fi

force_directive="--skip-existing"
if [[ -n ${force:-} ]]; then
force_directive="--force"
fi

anaconda -t "$token" upload -u "$user" $force_directive "$package_path"
36 changes: 36 additions & 0 deletions conda/run_test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
#! /bin/bash

set -euo pipefail

trap 'kill $(jobs -p)' EXIT

mrd-storage-server &

url_root="http://localhost:3333"

health_check_endpoint="${url_root}/v1/blobs?subject=123"
echo "Waiting for successful response from ${health_check_endpoint}"
for wait in {0..30}; do
if [[ "$(curl -s -o /dev/null -m 1 -w '%{http_code}' "$health_check_endpoint")" == "200" ]]; then
echo "Server ready"
break
fi
if [ "$wait" == 30 ]; then
echo "ERROR: could not reach server"
fi
echo "Waiting...$wait"
sleep 1
done

content='This is my content'
curl --request POST \
"${url_root}/v1/blobs/data?subject=123&session=mysession&name=NoiseCovariance" \
--header 'content-type: text/plain' \
--data "$content"

response_content=$(curl -s --request GET "${url_root}/v1/blobs/data/latest?subject=123&session=mysession&name=NoiseCovariance")

if [[ "${response_content}" != "${content}" ]]; then
echo "ERROR: Did not get expected result from server. Response = ${response_content}"
exit 1
fi

0 comments on commit 958b491

Please sign in to comment.