Skip to content

Conversation

@LKedward
Copy link
Member

This PR updates the CI so that it is additionally triggered when a github release is published to which it will upload binaries (Linux, Mac, Windows) for both versions of fpm as release assets (example here).

As discussed at last month's meeting, this simplifies the bootstrapping process (on the supported platforms) and also simplifies using fpm in your own CI.

After running the usual tests, the CI checks that the release tag, of the form vx.y.z, matches that output by fpm --version;
binaries are not uploaded if the release tag does not match (example workflow)

For the time being, releases can be created by maintainers at their own discretion as features are added and bugs fixed (I'm happy to do this); in the long term, a release process will need to be discussed and documented.

I intend to create an initial release (v0.1.0) following this PR.
Resolves #218.

Copy link
Member

@awvwgk awvwgk left a comment

Choose a reason for hiding this comment

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

Binaries work fine on my own machines. I couldn't get the Haskell version running on my local HPC cluster (old OpenSUSE), since it is not statically linked (not sure if this is even possible with Haskell). So nothing unexpected, but something to keep in mind.

One minor thing: Could we generate some SHA256 hashes for each release artefact?

Also, how are prerelease events handled?

Copy link
Member

@milancurcic milancurcic left a comment

Choose a reason for hiding this comment

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

This is a great addition, thank you!

The Ubuntu executables are compatible with other Linuxes in general, no? If yes, let's just call it "linux" instead of "ubuntu".

I also suggest the following naming convention for the executable file names:

fpm-<version>-<os>-<arch>[.exe]

instead of

fpm-<os>-<version>-<arch>[.exe]

where <version> is either version ("x.x.x") or "latest". What do you think?

I noticed that the Linux binary comes as not executable so I had to set that by hand first. I think we should add the "x" permission to Linux and macOS binaries.

@LKedward
Copy link
Member Author

One minor thing: Could we generate some SHA256 hashes for each release artefact?

Good point; yep I'll add them in.

Also, how are prerelease events handled?

They should be treated the same as a normal release - I'll check tomorrow.

Thanks @milancurcic, yes I agree about the naming - I'll reorder with the actual version number in and add +x permission.


@everythingfunctional, do you know if compilation of statically-linked binaries is possible with Haskell stack?

@LKedward
Copy link
Member Author

Thanks for reviewing; I've updated the file naming convention as suggested and added hashes for checking integrity.
Unfortunately I can't seem to preserve executable permissions on the Linux/MacOS binaries when added as assets - I think this may be a limitation (or security feature?) of github.

@awvwgk
Copy link
Member

awvwgk commented Nov 21, 2020

It is probably a security feature. One option to preserve the permissions would be packaging in a tarball/zip archive instead, but this would increase the “installation barrier” slightly.

@LKedward
Copy link
Member Author

If there are no objections or further comments I will merge later today and create an initial release with tag 'v0.1.0'.

@LKedward LKedward merged commit 105644c into fortran-lang:master Nov 25, 2020
@LKedward
Copy link
Member Author

I've created a tag v0.1.0 and corresponding release, for which the workflow has executed successfully and there are now binaries to download. Since this is the first release, instead of a change-log I have simply summarised the features currently supported in each version.

@milancurcic milancurcic mentioned this pull request Nov 26, 2020
3 tasks
@LKedward LKedward deleted the release_builds branch December 9, 2020 16:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add binary releases from latest master using CI

3 participants