ariandanim
Github Action not working, just stack in somewhere
Dear all,
Does my code workflow in yml below is correct for deploying into vps ?
name: Deployment Workflow
on:
push:
branches: [ main ]
jobs:
job_one:
name: Deploy
runs-on: ubuntu-latest
steps:
- name: testing myweb.com ssh connection
uses: appleboy/ssh-action@master
with:
host: myweb.com
username: root
key: ${{ secrets.MYWEB_SECRET }}
port: 22
script: |
cd /var/www/myweb.com
git pull origin main
mix deps.get --only prod
export SECRET_KEY_BASE=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
export DATABASE_URL=ecto://postgres:password@localhost:5432/myweb_prod
MIX_ENV=prod mix compile
MIX_ENV=prod mix assets.deploy
MIX_ENV=prod mix ecto.migrate
MIX_ENV=prod mix release --overwrite
_build/prod/rel/myweb/bin/myweb stop
_build/prod/rel/myweb/bin/myweb daemon
SECRET_KEY_BASE i get in my server app when i try make generate that
Before push into my github to deploy into my server i make some steps below :
I try type in my server _build/prod/rel/myweb/bin/myweb start but showing error like below :
07:28:24.954 [info] Configuration :server was not enabled for MyappWeb.Endpoint, http/https services won't start
Why those appear?
Marked As Solved
LostKobrakai
Phoenix by default doesn’t start listening on a port. You need to configure it to enable that, e.g. using
config :myapp, MyAppWeb.Endpoint, server: true
This has nothing to do with github actions.
Generally there’s a few things to optimize here. Move the secrets out of the yml, they shouldn’t be in there. Let the github action build the release instead of doing the release building on the target server. That’ll also remove the need for the target server to have elixir and whatever you need for assets.deploy installed.
Also using …/myapp daemon is imo not a great long term solution. You’d want to start the release using the init system of your target os (most likely systemd on linux).
Also Liked
kokolegorille
Another way is to use runtime.exs…
and run mix phx.gen.release, or set PHX_SERVER true before starting release
# Alternatively, you can use `mix phx.gen.release` to generate a `bin/server`
# script that automatically sets the env var above.
if System.get_env("PHX_SERVER") do
config :koko, KokoWeb.Endpoint, server: true
end
Popular in Questions
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #elixirconf-us
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #security
- #hex









