We'll be using Google Meet for this first get together. I'll be driving but questions and discussions are highly encouraged.
https://meet.google.com/dzp-zhbb-ejn
Objective: have a repeatable process to deploy a Phoenix app to Digital Ocean
We'll be as beginner friendly as possible, a familiarity with the following would can help but is not required. We can also discuss as we go:
-
Elixir 1.9 releases - We'll mostly gloss over this as we could do an entire hangout on preparing an application for release.
-
Web Servers - general knowledge that web servers exist, how to ssh into one, what a port is, etc
-
GitHub Actions - Mostly just know what they are, you don't need to have used them.
- Elixir 1.9 Releases https://elixir-lang.org/getting-started/mix-otp/config-and-releases.html
- Phoenix https://www.phoenixframework.org/
- Github Actions https://github.com/features/actions
- asdf https://github.com/asdf-vm/asdf
- Terraform https://www.terraform.io/docs/index.html
- Cloud Init https://cloudinit.readthedocs.io/en/latest/
ubuntu
[source] -> [release] -> [servers]
-
build in docker
-
build server
-
GH Actions (off label usage??) context for GH actions: https://help.github.com/en/actions/reference/context-and-expression-syntax-for-github-actions
https://github.com/piisalie/aws_training_elixirconf_2019/tree/master/4_the_details/exercise/web_app
- have an application
- build a release https://hexdocs.pm/phoenix/deployment.html#compiling-your-application-assets a. package assets b. ensure environment variables are setup https://hexdocs.pm/mix/Mix.Tasks.Release.html#module-runtime-configuration
- build an application server (terraform plan, and terraform apply) https://www.terraform.io/docs/configuration/variables.html
- cloud-init (to configure the application server)
- put release on server (shell script)
- unpack release
- start release