Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add nightly builds #1648

Merged
merged 10 commits into from
Nov 11, 2020
4 changes: 2 additions & 2 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -140,13 +140,13 @@ jobs:
command: |
export GITHUB_USERNAME="$CIRCLE_PROJECT_USERNAME"
export GITHUB_REPONAME="$CIRCLE_PROJECT_REPONAME"
postgrest-release-github
postgrest-release-github $CIRCLE_TAG
- run:
name: Publish Docker images
command: |
export DOCKER_REPO=postgrest
postgrest-docker-login
postgrest-release-dockerhub
postgrest-release-dockerhub $CIRCLE_TAG
postgrest-release-dockerhubdescription

# Build everything in default.nix, push to the Cachix binary cache and run tests
Expand Down
31 changes: 13 additions & 18 deletions nix/release/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -12,35 +12,28 @@ let
# Version from the postgrest.cabal file (gotten with callCabal2nix).
version = postgrest.version;

# Set of files that will be published in the GitHub release.
releaseFiles =
runCommand "postgrest-release-files"
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@monacoremo In case you're wondering. I deleted this nix function because I couldn't figure out how to pass a bash argument to it in writeShellScriptBin "postgrest-release-github". My nix-fu isn't that good 😄.

{ inherit postgrest version; }
''
set -euo pipefail

mkdir -p $out

tar cvJf "$out"/postgrest-v"$version"-linux-x64-static.tar.xz \
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've removed the v prefix from v$version in the scripts. This means that the changelog versions will now need a v prefix for sed to pick the changes and then serve as the body for the release(done with ghr).

-C "$postgrest"/bin postgrest
'';

# Script for publishing a new release on GitHub.
github =
writeShellScriptBin "postgrest-release-github"
''
set -euo pipefail

changes="$(sed -n "1,/${version}/d;/## \[/q;p" ${../../CHANGELOG.md})"
version=$1

changes="$(sed -n "1,/$version/d;/## \[/q;p" ${../../CHANGELOG.md})"

tar cvJf postgrest-$version-linux-x64-static.tar.xz \
-C ${postgrest}/bin postgrest

${ghr}/bin/ghr \
-t "$GITHUB_TOKEN" \
-u "$GITHUB_USERNAME" \
-r "$GITHUB_REPONAME" \
-b "$changes" \
--replace v${version} \
${releaseFiles}
--replace $version \
postgrest-$version-linux-x64-static.tar.xz
'';

# Wrapper for login with docker. $DOCKER_USER/$DOCKER_PASS vars come from CircleCI.
# The DOCKER_USER is not the same as DOCKER_REPO because we use the https://hub.docker.com/u/postgrestbot account for uploading to dockerhub.
dockerLogin =
Expand All @@ -57,13 +50,15 @@ let
''
set -euo pipefail

version=$1

docker load -i ${docker.image}

docker tag postgrest:latest "$DOCKER_REPO"/postgrest:latest
docker tag postgrest:latest "$DOCKER_REPO"/postgrest:v${version}
docker tag postgrest:latest "$DOCKER_REPO"/postgrest:$version

docker push "$DOCKER_REPO"/postgrest:latest
docker push "$DOCKER_REPO"/postgrest:v${version}
docker push "$DOCKER_REPO"/postgrest:$version
'';

# Script for updating the repository description on Docker Hub.
Expand Down