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

Generalize this tool for multiple languages #496

Closed
2 tasks done
andygrunwald opened this issue Jan 1, 2018 · 4 comments · Fixed by #522
Closed
2 tasks done

Generalize this tool for multiple languages #496

andygrunwald opened this issue Jan 1, 2018 · 4 comments · Fixed by #522
Labels
discussion Open discussion with users and contributors

Comments

@andygrunwald
Copy link
Contributor

Prerequisites

  • Are you running the latest version?
  • Did you perform a search to see if this problem was already reported?

Description

This tool is great and is a big help for everyone who writes golang apps. It automates an important task and enables everyone to ship early, ship often.

The basic idea of this issue is to discuss to generalize this tool for multiple languages (e.g. PHP, C, C++, Ruby, etc.).
The root of this idea was a tweet:

Is there anything like #goreleaser (https://github.com/goreleaser/goreleaser …) for other programing languages? In short: A tool that automate your releases to platforms like github, etc. by configuring this via a file (e.g. yaml) to ease a "Ship early, ship often" culture.

In detail i was looking for something like goreleaser for #PHP. For this i asked the TYPO3-Project via twitter here.
They wrote a similar tool at https://github.com/bmack/typo3-darth.
Maybe with a different focus and other tasks, but i think if there is a docker image, a upload to github, etc. this would help the project as well.

If this proposal is not welcomed, feel free to close it.
I believe that such an approach can change a lot of tools to the better.

Implementation

I can think of two possible implementations right now.

language like TravisCI

TravisCI uses a language keyword. See https://github.com/goreleaser/goreleaser/blob/master/.travis.yml#L3
Based on the language we can run the process.

Every language as a single Pipeline

Every language can be implemented as a single pipeline like the upload to Artifactory or Github right now. This would have a few advantages:

  • We are able to implement multiple pipelines per language (e.g. different package managers per language e.g. composer for PHP or different compilers e.g. in C)
  • We are able to support multiple compile / pipeline steps to run a PHP packaging of a cms + compile / transpile of javascript via webpack or so

Discussion

This is a lot of work and required time / effort (and of course, this is a limiting factor).
And this might need a breaking change to shift the default behaviour of go compile.
But this would also have the chance to get more contributor and a bigger outreach.

I am sure there are multiple pro and cons about this.
But at first i want to get the discussion started, getting feedback or a voice at all.
Let me know what you / other people think about this.

@caarlos0 caarlos0 added the discussion Open discussion with users and contributors label Jan 1, 2018
@andygrunwald
Copy link
Contributor Author

andygrunwald commented Jan 20, 2018

Tonight i started working on this with @mre and @timglabisch.
We got a quick and hacky version running. The goreleaser version in andygrunwald/goreleaser @ multiple-languages-496 is able to compile and ship rust.

A quick hello world app was released here: https://github.com/andygrunwald/rust-hello/releases
(excuse my commits).

We will keep you up to date to on the results or what happen with this at all.

GitHub
goreleaser - Deliver Go binaries as fast and easily as possible
GitHub
Contribute to rust-hello development by creating an account on GitHub.

@mre
Copy link

mre commented Jan 20, 2018

To make usage even easier for Rust, we created a simple proof-of-concept cargo command for it. Now you can simply call cargo ship cargo deliver and it will use goreleaser in the background to publish releases.

@andygrunwald
Copy link
Contributor Author

I developed a short prototype in #520 for Rust. Far from perfect or good, but a first try.
Feedback welcome @caarlos0

@github-actions
Copy link
Contributor

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Nov 19, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
discussion Open discussion with users and contributors
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants