# בונה תמונות Discourse עבור צינורות Gitlab CI/CD

**URL:** <https://meta.discourse.org/t/discourse-image-builder-for-gitlab-ci-cd-pipelines/261857>\
**Category:** Self-hosting\
**Tags:** unsupported-install\
**Created:** [16 באפריל,‏ 2023,‏ 12:44pm UTC](https://meta.discourse.org/t/discourse-image-builder-for-gitlab-ci-cd-pipelines/261857 "2023-04-16T12:44:10Z")\
**Posts on this page:** 1\
**Showing post:** 12

<div class="post-metadata">

**Author:** ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)\
**Post date:** [18 באפריל,‏ 2023,‏ 2:28pm UTC](https://meta.discourse.org/t/discourse-image-builder-for-gitlab-ci-cd-pipelines/261857/12 "2023-04-18T14:28:32Z")

</div>

> [@Falco](#):
>
> There is a `version` parameter on the app.yml file that can be set to the version you want to run.

But if you try to pin to a version that is too old, it may not work with updated versions of the Discourse base image. I can’t remember specific examples, but stuff like and old version of Discourse won’t work with Ruby 3.2, so you (sometimes) also need to pin `discourse_docker` if you pin to an old version of Discourse.

The safest and, in most cases, least wasteful solution is to build an image and push it to a repo rather than building a new image at every deployment. And if you have plugins, you’re likely to need to pin each of those as well.

> [@Falco](#):
>
> it can be made compatible by running `./launcher bootstrap app` and pushing the resulting image to a container registry and then running said image via orchestration.

I’ve done this for several clients for ECS as well as k8s on GCP and AWS.

> [@mkbrechtel](#):
>
> so we can’t reproduce old environments anymore.

I’m pretty sure that you can if you also pin `discourse_docker` to the old version. As I mentioned above, it’s more complicated with plugins, as you’re likely to need to pin those to the old versions as well. If you really want to maintain old versions building them exactly once and pushing them to a repo is the way to go. I’m doing this with a client to test upgrade paths from current production to latest and it’s working smoothly.

---

_[View the full topic](https://meta.discourse.org/t/discourse-image-builder-for-gitlab-ci-cd-pipelines/261857)._
