So I’m trying to get Github Actions to build a release in a DO droplet. I’m able to SSH into the droplet using the SSH private key as the user config
is using. I’m not really sure if the error is SSH-related or not.
action yml:
name: CD
on:
push:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-elixir@v1
with:
otp-version: 22.3
elixir-version: 1.10.2
- uses: webfactory/ssh-agent@v0.2.0
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
- name: Install dependencies
run: mix deps.get
- name: Build and deploy production release
run: |
mix edeliver build release production --verbose
mix edeliver deploy release to production --verbose
mix edeliver migrate production --verbose
mix edeliver start production --verbose
env:
HOST: ${{ secrets.HOST }}
USERNAME: ${{ secrets.USERNAME }}
edeliver logs:
-----> Ensuring hosts are ready to accept git pushes
bash is installed and the default shell
Initialized empty Git repository in /tmp/edeliver/app/builds/.git/
-----> Pushing new commits with git to: ***@***
error: src refspec master does not match any
error: failed to push some refs to '***@***:/tmp/edeliver/app/builds'
FAILED 1:
git push --tags -f ***@*** master
##[error]Process completed with exit code 1.
edeliver config:
#!/bin/bash
APP="app"
BUILD_HOST=$HOST
BUILD_USER=$USERNAME
BUILD_AT="/tmp/edeliver/$APP/builds"
START_DEPLOY=true
CLEAN_DEPLOY=true
# prevent re-installing node modules; this defaults to "."
GIT_CLEAN_PATHS="_build rel priv/static"
PRODUCTION_HOSTS=$HOST
PRODUCTION_USER=$USERNAME
DELIVER_TO="/home/$USERNAME/apps"
# For Phoenix projects, symlink prod.secret.exs to our tmp source
pre_erlang_get_and_update_deps() {
local _prod_secret_path="/home/$USERNAME/apps/$APP/secret/prod.secret.exs"
if [ "$TARGET_MIX_ENV" = "prod" ]; then
status "Linking '$_prod_secret_path'"
__sync_remote "
[ -f ~/.profile ] && source ~/.profile
mkdir -p '$BUILD_AT'
ln -sfn '$_prod_secret_path' '$BUILD_AT/config/prod.secret.exs'
"
fi
}
pre_erlang_clean_compile() {
status "Running npm install"
__sync_remote "
[ -f ~/.profile ] && source ~/.profile
set -e
cd '$BUILD_AT'/assets
npm install
"
status "Compiling assets"
__sync_remote "
[ -f ~/.profile ] && source ~/.profile
set -e
cd '$BUILD_AT'/assets
node_modules/.bin/webpack --mode production --silent
"
status "Running phoenix.digest" # log output prepended with "----->"
__sync_remote " # runs the commands on the build host
[ -f ~/.profile ] && source ~/.profile # load profile (optional)
set -e # fail if any command fails (recommended)
cd '$BUILD_AT' # enter the build directory on the build host (required)
# prepare something
mkdir -p priv/static # required by the phoenix.digest task
# run your custom task
APP='$APP' MIX_ENV='$TARGET_MIX_ENV' $MIX_CMD phx.digest $SILENCE
APP='$APP' MIX_ENV='$TARGET_MIX_ENV' $MIX_CMD phx.digest.clean $SILENCE
"
}