Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: CI
on: [push]
on: [push, pull_request]
jobs:
test:
strategy:
Expand Down
49 changes: 36 additions & 13 deletions base/deploy
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ function archive_deploy() {
rm /tmp/archive.tar.gz
if [ -n "$EXPERIMENTAL_DIFF_ENABLED" ]; then
if [ -d $CURRENT_DIR ]; then
recursive_diff $CURRENT_DIR $NEW_CODE_DIR > $DIFF_FILE || 2<&0
recursive_diff $CURRENT_DIR $NEW_CODE_DIR >$DIFF_FILE || 2<&0
fi
fi
mkdir -p $CURRENT_DIR
Expand All @@ -60,13 +60,35 @@ function pre_deploy() {
}

function post_deploy() {
if [ ! -f ${CURRENT_DIR}/Procfile ] && [ -f ${SOURCE_DIR}/default/Procfile ]; then
cp ${SOURCE_DIR}/default/Procfile ${CURRENT_DIR}/Procfile
touch ${APP_DIR}/.default_procfile
if [ ! -f ${CURRENT_DIR}/Procfile ]; then
tsuru_yaml=""
if [ -f ${CURRENT_DIR}/tsuru.yml ]; then
tsuru_yaml="${CURRENT_DIR}/tsuru.yml"
elif [ -f ${CURRENT_DIR}/tsuru.yaml ]; then
tsuru_yaml="${CURRENT_DIR}/tsuru.yaml"
fi

use_default_procfile=1
if [ -n "$tsuru_yaml" ]; then
# Look for 'processes:' and at least one '- name:' and 'command:' under it
if awk '
$1 == "processes:" {in_proc=1; next}
in_proc && $1 == "-" && $2 == "name:" {name=1}
in_proc && $1 == "command:" {cmd=1}
name && cmd {found=1; exit}
END {exit !found}
' "$tsuru_yaml"; then
use_default_procfile=0
fi
fi

if [ $use_default_procfile -eq 1 ] && [ -f ${SOURCE_DIR}/default/Procfile ]; then
cp ${SOURCE_DIR}/default/Procfile ${CURRENT_DIR}/Procfile
touch ${APP_DIR}/.default_procfile
fi
fi
}


source ${SOURCE_DIR}/base/rc/config
source ${SOURCE_DIR}/base/rc/os_dependencies

Expand All @@ -77,14 +99,15 @@ fi

pre_deploy
case $1 in
"archive")
archive_deploy $2
shift; shift
;;
*)
echo "FATAL: this deployment method is no longer supported"
exit 1
;;
"archive")
archive_deploy $2
shift
shift
;;
*)
echo "FATAL: this deployment method is no longer supported"
exit 1
;;
esac
post_deploy

Expand Down
60 changes: 36 additions & 24 deletions base/rc/os_dependencies
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,19 @@
# removes all '#' and all characters afterwards; trim whitespaces; carriage return and empty lines
function cat_without_hash_comments() {
local file_path=${1}
cat ${file_path} \
| sed "s/#.*$//g" \
| sed "s/^[[:space:]]*//g" \
| sed "s/[[:space:]]*$//g" \
| sed "s/\r$//" \
| sed "/^$/d"
cat ${file_path} |
sed "s/#.*$//g" |
sed "s/^[[:space:]]*//g" |
sed "s/[[:space:]]*$//g" |
sed "s/\r$//" |
sed "/^$/d"
}

function os_dependencies() {
if [[ -f "${CURRENT_DIR}/repositories.apt" ]]; then
echo_debug ">>> repositories.apt found: adding extra APT repositories"

while read repo ; do
while read repo; do
add_repository ${repo}
done < <(cat_without_hash_comments "${CURRENT_DIR}/repositories.apt")
fi
Expand All @@ -34,38 +34,50 @@ function os_dependencies() {

function add_repository() {
local repository=${1}
local repository_entries
local ppa
local fingerprint
local user
local filesum

case ${repository} in
deb*)
local repository_entries=${*};;
deb*)
repository_entries=${*}
;;

*)
local ppa=$(echo ${repository} | sed 's/ppa://')
*)
ppa=${repository/#ppa:/}
fingerprint=${2:-${ppa}}
user=$(echo "${ppa}" | awk -F / '{print $1}')

local repository_entries=$(cat <<-EOF
deb https://ppa.launchpadcontent.net/${ppa}/ubuntu ${UBUNTU_RELEASE} main
deb-src https://ppa.launchpadcontent.net/${ppa}/ubuntu ${UBUNTU_RELEASE} main
repository_entries=$(
cat <<-EOF
deb [signed-by=/usr/share/keyrings/${user}.gpg] https://ppa.launchpadcontent.net/${ppa}/ubuntu ${UBUNTU_RELEASE} main
deb-src [signed-by=/usr/share/keyrings/${user}.gpg] https://ppa.launchpadcontent.net/${ppa}/ubuntu ${UBUNTU_RELEASE} main
EOF
)
local fingerprint=${2:-${ppa}}
get_ppa_key ${fingerprint};;
)

get_ppa_key "${fingerprint}" "${user}"
;;
esac

local filesum=$(echo ${repository_entries} | sha1sum | awk '{print $1}')
echo "${repository_entries}" | sudo -E tee >/dev/null 2>&1 "/etc/apt/sources.list.d/tsuru_${filesum}.list"
filesum=$(echo "${repository_entries}" | sha1sum | awk '{print $1}')
echo "${repository_entries}" | sudo -E tee "/etc/apt/sources.list.d/tsuru_${filesum}.list" >/dev/null 2>&1
}

function get_ppa_key() {
local ppa_or_fingerprint=${1}
local user=${2}
local fingerprint
local repo

if [[ ${ppa_or_fingerprint} =~ ^0x.+ ]]; then
local fingerprint=${ppa_or_fingerprint}
fingerprint=${ppa_or_fingerprint}
else
user=$(echo ${ppa_or_fingerprint} | awk -F / '{print $1}')
repo=$(echo ${ppa_or_fingerprint} | awk -F / '{print $2}')
repo=$(echo "${ppa_or_fingerprint}" | awk -F / '{print $2}')
api_url="https://launchpad.net/api/1.0/~${user}/+archive/ubuntu/${repo}"
local fingerprint=$(curl -sS "${api_url}" | jq -r ".signing_key_fingerprint")
fingerprint=$(curl -sS "${api_url}" | jq -r ".signing_key_fingerprint")
fi

sudo -E apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv ${fingerprint}
sudo gpg --homedir /tmp --no-default-keyring --keyring /usr/share/keyrings/"${user}".gpg --keyserver keyserver.ubuntu.com --recv-keys "${fingerprint}"
}
28 changes: 14 additions & 14 deletions test/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,22 @@ ARG image
FROM ${image}

ARG bats_core_version=1.6.0 \
bats_support_version=0.3.0 \
bats_assert_version=master
bats_support_version=0.3.0 \
bats_assert_version=master

RUN set -eux \
&& curl -fsSL https://github.com/bats-core/bats-core/archive/refs/tags/v${bats_core_version}.tar.gz \
| tar -xzf- -C /tmp \
&& sudo /tmp/bats-core-${bats_core_version}/install.sh /opt/bats \
&& sudo ln -s /opt/bats/bin/bats /usr/local/bin \
&& bats --version \
&& rm -rf /tmp/bats-core-${bats_core_version} \
&& curl -fsSL https://github.com/bats-core/bats-support/archive/refs/tags/v${bats_support_version}.tar.gz \
| tar -xzf- -C /tmp \
&& sudo mv /tmp/bats-support-${bats_support_version} /opt/bats-support \
&& curl -fsSL https://github.com/bats-core/bats-assert/archive/refs/heads/${bats_assert_version}.tar.gz \
| tar -xzf- -C /tmp \
&& sudo mv /tmp/bats-assert-${bats_assert_version} /opt/bats-assert
&& curl -fsSL https://github.com/bats-core/bats-core/archive/refs/tags/v${bats_core_version}.tar.gz \
| tar -xzf- -C /tmp \
&& sudo /tmp/bats-core-${bats_core_version}/install.sh /opt/bats \
&& sudo ln -s /opt/bats/bin/bats /usr/local/bin \
&& bats --version \
&& rm -rf /tmp/bats-core-${bats_core_version} \
&& curl -fsSL https://github.com/bats-core/bats-support/archive/refs/tags/v${bats_support_version}.tar.gz \
| tar -xzf- -C /tmp \
&& sudo mv /tmp/bats-support-${bats_support_version} /opt/bats-support \
&& curl -fsSL https://github.com/bats-core/bats-assert/archive/refs/heads/${bats_assert_version}.tar.gz \
| tar -xzf- -C /tmp \
&& sudo mv /tmp/bats-assert-${bats_assert_version} /opt/bats-assert

WORKDIR /tests

Expand Down
Loading