ci: Use GitHub Actions for CI/CD
This commit is contained in:
+13
-64
@@ -1,71 +1,20 @@
|
||||
freebsd_instance:
|
||||
image: freebsd-12-2-release-amd64
|
||||
image_family: freebsd-13-0
|
||||
|
||||
build_task:
|
||||
env:
|
||||
GITHUB_TOKEN: ENCRYPTED[!1ecc3020fe8c6463c06ebc22153533239e132ee56e4faad95ce336bd2ee2bde6aa89c0352e89faaa2c10f4a5bac9b7fc!]
|
||||
# caches the freebsd package downloads
|
||||
# saves probably just a couple of seconds, but hey...
|
||||
pkg_cache:
|
||||
folder: /var/cache/pkg
|
||||
name: Build FreeBSD (Stack)
|
||||
install_script: pkg install -y postgresql13-client hs-stack
|
||||
|
||||
install_script:
|
||||
# - pkg update
|
||||
- pkg install -y postgresql12-client ghc hs-cabal-install jq git
|
||||
|
||||
# cache the hackage index file and downloads which are
|
||||
# cabal v2-update downloads an incremental update, so we don't need to keep this up2date
|
||||
packages_cache:
|
||||
# warning: don't use ~/.cabal here, this will break the cache
|
||||
folder: /.cabal/packages
|
||||
stack_cache:
|
||||
folders: /.stack
|
||||
fingerprint_script: cat stack.yaml.lock
|
||||
reupload_on_changes: false
|
||||
|
||||
# cache the dependencies built by cabal
|
||||
# they have to be uploaded on every change to make the next build fast
|
||||
store_cache:
|
||||
# warning: don't use ~/.cabal here, this will break the cache
|
||||
folder: /.cabal/store
|
||||
fingerprint_script: cat postgrest.cabal
|
||||
reupload_on_changes: true
|
||||
stack_work_cache:
|
||||
folders: .stack-work
|
||||
fingerprint_script: cat stack.yaml.lock
|
||||
reupload_on_changes: false
|
||||
|
||||
build_script:
|
||||
- cabal v2-update
|
||||
- |
|
||||
if test "$CIRRUS_TAG" = "nightly"
|
||||
then
|
||||
cabal_nightly_version=$(git show -s --format='%cd' --date='format:%Y%m%d')
|
||||
sed -i '' "s/^version:.*/version:$cabal_nightly_version/" postgrest.cabal
|
||||
fi
|
||||
## compile for 30 minutes tops
|
||||
- timeout 1800 cabal v2-build -j1 || test "$?" = "124"
|
||||
|
||||
publish_script:
|
||||
- |
|
||||
if test ! "$CIRRUS_TAG"
|
||||
then
|
||||
echo 'No tag pushed. Skip release.'
|
||||
else
|
||||
cabal v2-install
|
||||
|
||||
bin_name=""
|
||||
|
||||
if test $CIRRUS_TAG = "nightly"
|
||||
then
|
||||
suffix=$(git show -s --format="%cd-%h" --date="format:%Y-%m-%d-%H-%M")
|
||||
bin_name=postgrest-nightly-$suffix-freebsd.tar.xz
|
||||
else
|
||||
bin_name=postgrest-$CIRRUS_TAG-freebsd.tar.xz
|
||||
fi
|
||||
|
||||
release_id=$(curl -s https://api.github.com/repos/$CIRRUS_REPO_FULL_NAME/releases/tags/$CIRRUS_TAG | jq .id)
|
||||
|
||||
echo "Uploading $bin_name to gh release: $release_id"
|
||||
|
||||
tar cvJf $bin_name --dereference -C /.cabal/bin postgrest
|
||||
|
||||
## We don't use ghr here because it doesn't provide freebsd binaries: https://github.com/tcnksm/ghr/issues/127
|
||||
curl -X POST --data-binary @$bin_name \
|
||||
-H "Authorization:token $GITHUB_TOKEN" \
|
||||
-H "Content-Type:application/octet-stream" \
|
||||
"https://uploads.github.com/repos/$CIRRUS_REPO_FULL_NAME/releases/$release_id/assets?name=$bin_name"
|
||||
fi
|
||||
build_script: stack build -j 1 --local-bin-path . --copy-bins
|
||||
bin_artifacts:
|
||||
path: postgrest
|
||||
|
||||
Reference in New Issue
Block a user