mrkurt

mrkurt OP

How long do builds take? That buildpack gets us in the 7 minute range. Heroku’s buildpack caching is pretty good, though, are repeated deploys quicker?

0
Post #11
evadne

evadne

  1. Yes we used to use Distillery and have changed to Mix releases for new projects.

  2. Yes in fact I have two Dockerfiles per project, one for testing and one for deployment

  3. Custom TeamCity deployment

1
Post #12
tfwright

tfwright

  1. Yes, built on target server with asdf managed erlang/elixir
  2. Not in prod, where we use systemd to manage services, but we do use it for pr review app deploys and for dev
  3. Yes, use github actions for ci. No real complaints there.

On other simple, small scale projects I’ve used render for everything and was very satisfied with it aside from the lack of shell access

2
Post #13
vincer

vincer

  1. Do you use mix release? Yes
  2. Do you have a Dockerfile? Sort of, it’s in an Earthfile
  3. Do you run a CI system, and which one? Github

My builds deploy on every commit with the help of Pulumi

2
Post #14
mrkurt

mrkurt OP

Earthly is very cool. If you have an Earthfile you can share for an Elixir app, I’d love to see it.

2
Post #15
vincer

vincer

Earthly is great although the caching story isn’t quite there yet, but it should get very very interesting soon. Here’s the Earthfile I use for all my projects these days: potionx/packages/templates/src/project/potionx/Earthfile at main · PotionApps/potionx · GitHub. You can also see the Pulumi code here and the Github Actions code here.

3
Post #16
axelson

axelson

Scenic Core Team

I don’t have an exact time, but I think it’s generally around 4-10 minutes. (But I generally deploy as part of a full CI build, and the CI portion is what takes up the majority of the time on top of that 4-10 minutes)

1
Post #17
jswny

jswny

I use mix releases inside Docker containers, and I use Compose for the apps that require another container for the DB, etc.

I wrote my own tool which basically just deploys Compose files to servers via SSH and uses environment variables for configuration: GitHub - jswny/sad: Simple app deployment using only SSH and Docker. · GitHub

I use it because it’s simple, I wrote support for GitHub Actions, and it puts everything inside a Docker container.

2
Post #18
nirev

nirev

  1. Do you use mix release?
    Yes, always

  2. Do you have a Dockerfile?
    Yes, most of the times. Using multistage builds, I use hexpm/elixir - Docker Image as base image for building a release and plain alpine as the runner.

I’ve deployed apps in different envs, but always used docker to package the app:

  • multi-cloud k8s abstracted by team infra,
  • heroku
  • AWS ECS
  1. Do you run a CI system, and which one?
    Yes. Using Github Actions now, but also used Jenkins A LOT. I also have used Circle CI and enjoyed it.
    For CI I usually run mix test, check for compile warnings, sometimes use credo, and also dialyzer

extra: no matter where I’m deploying an elixir app, I find it really important to be able to:

  • cluster elixir nodes
  • open a remote iex session to any node
2
Post #19
mrkurt

mrkurt OP

We made those work first thing! :wink:

3
Post #20