metacall / distributable-linux

Linux redistributable for shipping MetaCall Core.
Apache License 2.0
10 stars 12 forks source link

Automatic Release #3

Closed itshaadi closed 4 years ago

itshaadi commented 4 years ago

Closes: #2

this PR contains the following changes:

  1. A refactoring of pull target; because that mv command was getting in the way of a CI job (random fails saying mv command not found) and since it was a static/mandatory step anyway, I see no harm in moving it to Dockerfile - https://github.com/metacall/distributable/commit/e9a34c023b720311dc179e3c367a0308658f53e6

  2. Upon creating a new tag it will trigger the CI to prepare a tarball, creates a release by using ${CI_COMMIT_TITLE} and ${CI_COMMIT_DESCRIPTION} as name and body for the release. then uploads the build artifact as metacall-tarball-linux-amd64.tar.gz - https://github.com/metacall/distributable/commit/b24932947b1eabfa42a51427165953d3949f3254

  3. README.md is updated with required steps for automatic release. https://github.com/metacall/distributable/commit/c5c38ce74e12970ca81e6b78f7f7c389ef3e4935

also, I tried my best to speed up the build process. but guix pull cannot be cached. hence it takes around 50-70 minutes to build. and most of the time is spent by guix pull. so be sure to increase the default timeout per job to 2h+

if you try to cache that step, it yields the following error:

FILE: scripts/build.sh
ice-9/eval.scm:223:20: In procedure proc:
error: libnode: unbound variable
hint: Did you forget a `use-modules' form?

you can find more information about GitLab CI predefined variables here. I'm not sure if commit title and commit description are smart enough to pickup the commit message of current tag.

see the result - release body contains both commit title and commit description of the tag but it's name belongs to a previous commit on master (I didn't setup a mirror so that's why it doesn't match with any commit from this PR).

you can always add a Changelog file and do a commit on it before creating a lightweight tag. this way you can ensure that release name and body are intentional and accurate.

also .netrc.template is not necessary because it's functionality is replaced by CI variables. you can decide to remove or integrate it in future.