Skip to content

Conversation

thesps
Copy link
Owner

@thesps thesps commented Aug 21, 2025

This PR adds a Docker image, then builds and uses it in CI. The Docker image is based on a GHDL one, and bundles conifer and its requirements into a Python environment. So with the image alone users could get started with most backends, but without the capability to synthesize.

The logic for building and using the image in the CI pipeline might seem a bit convoluted. The thinking behind it is:

  • pipeline runs should build and use an image consistently if the image content is changed in the commit
  • pipelines should use the latest image if the commit doesn't change the image content
  • latest should only be published on commits to master branch - in other words only approved changes to the Dockerfile will be published to latest
  • tagged images should be automatically published along with tags of the code

So in the CI pipeline that is implemented as:

  • the image is built in a pipeline only if:
    • Dockerfile changes
    • dev_requirements.txt changes
  • if built, the image is always uploaded
    • tagged with latest only for commits to master
    • tagged with the release tag for tags to the repo
    • tagged with the commit SHA otherwise
  • if built, the test jobs (ones not using CI4FPGA...) will use the conifer image:
    • from the commit SHA if the image was built earlier in the pipeline
    • from latest otherwise

The main unsolved thing is that the tests using build requiring CI4FPGA don't use this conifer Docker image. I don't really see a way to avoid using CI4FPGA, and I still think it's good to use it when only strictly necessary. Note: in order to test the use of latest, I had to manually tag one image with latest, since there haven't been any commits of this yet to master branch obviously.

I'll add something in the README about how users can get hold of this image once the code content is agreed.

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.

1 participant