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

Packing artifacts #2

Open
eine opened this issue May 27, 2018 · 0 comments
Open

Packing artifacts #2

eine opened this issue May 27, 2018 · 0 comments

Comments

@eine
Copy link
Collaborator

eine commented May 27, 2018

From ghdl/ghdl#477

Packing, integration with Appveyor and RTD

There is no built-in feature in travis to merge all the artifacts and deploy to github just once, instead of having each job edits the release. An external storage service is required, such as S3, to have all of them merged in a dir and the deploy all at once. See https://docs.travis-ci.com/user/build-stages/#Data-persistence-between-stages-and-jobs Luckily, #489 includes using DockerHub, and we can reuse it in replacement of S3. This avoids the requirement to handle credentials for a fourth service. The scheme is as follows:

  • Each job in stage 1 (see #489) builds ghdl/pkg after tests are successfully executed. The difference compared to ghdl/ghdl is that the latter is based on ghdl/run (as explained aboved), but the first one is based on scratch. I.e., ghdl/pkg contains only ghdl-*-stretch-mcode.tgz.

Travis stage 3, named Pack artifacts

This stage mimicks the nested loops of stage 0 (see #489). However, instead of building anything, it pulls ghdl/pkg images which were created in the modified stage 1 and merges all the tarballs in a single directory. Then, a single deploy can be triggered in this stage.

This stage is especially useful for the following reasons:

  • At now tarballs are generated 'raw', i.e., there is no build, license, copying... This stage allows to enhance the tarballs with missing information/files, prior to pushing them to GitHub. @tgingold 2017-02-14
  • I think it is better to handle this here, and not in the build/test stage. This is because the tarballs in stage 1 (and, therefore, ghdl/ghdl images) are generated before the tests are run.
  • Additional meta-information can be added here:
    • The versions of the dependencies which where used to build the tarball: make, gcc, gnat, clang...
    • The date the tarball/image was created.
    • The size of ghdl binaries, ghdl libraries and images.
    • Expecting that appveyors builds will not take much longer than all the linux builds + mac build, appveyor artifacts can be retrieved here, and added to the release deploy. The same applies to PDFs generated in RTD.
    • ...
  • The info gathered here can be used to enhace the downloads section of the documentation.

Related to nightly builds mentioned in USE_CASES.md, ghdl/pkg images will always have tarballs corresponding to the latest succesful build. It is kind of stupid to require docker in order to download a tarball, even if a 3-4 line long shell script can be used to make it straightforward. Once again, play-with-docker can be used to execute the script, but this requires a Docker ID. Yet, adquiring the tgz is just a hopefully useful side effect, not the main feature.

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

No branches or pull requests

1 participant