ci: Use GitHub Actions for CI/CD

This commit is contained in:
monacoremo
2021-08-08 06:42:59 +02:00
committed by Remo
parent 0bc7c034cf
commit d9b15adb35
9 changed files with 441 additions and 231 deletions
+13 -64
View File
@@ -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