@@ -8,15 +8,21 @@ DOCKER_IMAGE_VERSION=$(cat "$ROOTDIR/shared/definitions/docker_image_version")
88# shellcheck source=../shared/lib/library.sh
99source " $ROOTDIR /shared/lib/library.sh"
1010
11- INPUT_DIR=
12- VERSION=
13- SIGNING_KEY_FILE=
14- FILE_SERVER_PASSWORD_FILE=
15- AWS_ACCESS_KEY=
16- AWS_SECRET_KEY_FILE=
17- SIGNING_KEY_PASSWORD_FILE=
18- ENTERPRISE=false
19- TESTING=true
11+ declare INPUT_DIR
12+ declare VERSION
13+ declare SIGNING_KEY_FILE
14+ declare FILE_SERVER_PASSWORD_FILE
15+ if [ " ${GITHUB_ACTION:- false} " != " true" ]; then
16+ declare AWS_ACCESS_KEY
17+ declare AWS_SECRET_KEY_FILE
18+ else
19+ declare AWS_SECRET_ACCESS_KEY
20+ declare AWS_ACCESS_KEY_ID
21+ declare AWS_SESSION_TOKEN
22+ fi
23+ declare SIGNING_KEY_PASSWORD_FILE
24+ declare ENTERPRISE=false
25+ declare TESTING=true
2026
2127function usage()
2228{
@@ -28,8 +34,14 @@ function usage()
2834 echo " -v VERSION Passenger version number"
2935 echo " -S PATH File containing the package signing key"
3036 echo " -p PATH File containing the binary build automation file server password"
31- echo " -a KEY Amazon S3 access key"
32- echo " -s KEY File containing the Amazon S3 secret key"
37+ if [ " ${GITHUB_ACTION:- false} " != " true" ]; then
38+ echo " -a KEY Amazon S3 access key"
39+ echo " -s KEY File containing the Amazon S3 secret key"
40+ else
41+ echo " -k KEY Amazon S3 secret access key"
42+ echo " -d ID Amazon S3 access key id"
43+ echo " -t TOKEN Amazon S3 session token"
44+ fi
3345 echo
3446 echo " Optional options:"
3547 echo " -x PATH File containing the package signing key password"
@@ -42,7 +54,7 @@ function parse_options()
4254{
4355 local OPTIND=1
4456 local opt
45- while getopts " i:v:S:p:a:s :x:Euh" opt; do
57+ while getopts " i:v:S:p:a:k:d:s:t :x:Euh" opt; do
4658 case " $opt " in
4759 i)
4860 INPUT_DIR=" $OPTARG "
@@ -59,9 +71,18 @@ function parse_options()
5971 a)
6072 AWS_ACCESS_KEY=" $OPTARG "
6173 ;;
74+ k)
75+ AWS_SECRET_ACCESS_KEY=" $OPTARG "
76+ ;;
77+ d)
78+ AWS_ACCESS_KEY_ID=" $OPTARG "
79+ ;;
6280 s)
6381 AWS_SECRET_KEY_FILE=" $OPTARG "
6482 ;;
83+ t)
84+ AWS_SESSION_TOKEN=" $OPTARG "
85+ ;;
6586 x)
6687 SIGNING_KEY_PASSWORD_FILE=" $OPTARG "
6788 ;;
@@ -101,17 +122,32 @@ function parse_options()
101122 echo " ERROR: $FILE_SERVER_PASSWORD_FILE does not exist."
102123 exit 1
103124 fi
104- if [[ " $AWS_ACCESS_KEY " = " " ]]; then
105- echo " ERROR: please specify an AWS S3 access key with -a."
106- exit 1
107- fi
108- if [[ " $AWS_SECRET_KEY_FILE " = " " ]]; then
109- echo " ERROR: please specify an AWS S3 secret key file with -s."
110- exit 1
111- fi
112- if [[ ! -e " $AWS_SECRET_KEY_FILE " ]]; then
113- echo " ERROR: $AWS_SECRET_KEY_FILE does not exist."
114- exit 1
125+ if [ " ${GITHUB_ACTION:- false} " != " true" ]; then
126+ if [[ " $AWS_ACCESS_KEY " = " " ]]; then
127+ echo " ERROR: please specify an AWS S3 access key with -a."
128+ exit 1
129+ fi
130+ if [[ " $AWS_SECRET_KEY_FILE " = " " ]]; then
131+ echo " ERROR: please specify an AWS S3 secret key file with -s."
132+ exit 1
133+ fi
134+ if [[ ! -e " $AWS_SECRET_KEY_FILE " ]]; then
135+ echo " ERROR: $AWS_SECRET_KEY_FILE does not exist."
136+ exit 1
137+ fi
138+ else
139+ if [[ " $AWS_SECRET_ACCESS_KEY " = " " ]]; then
140+ echo " ERROR: please specify an AWS S3 secret access key with -k."
141+ exit 1
142+ fi
143+ if [[ " $AWS_ACCESS_KEY_ID " = " " ]]; then
144+ echo " ERROR: please specify an AWS S3 access key id with -d."
145+ exit 1
146+ fi
147+ if [[ " $AWS_SESSION_TOKEN " = " " ]]; then
148+ echo " ERROR: please specify an AWS S3 session token with -t."
149+ exit 1
150+ fi
115151 fi
116152
117153 if [[ " $SIGNING_KEY_PASSWORD_FILE " != " " && ! -e " $SIGNING_KEY_PASSWORD_FILE " ]]; then
@@ -122,17 +158,28 @@ function parse_options()
122158
123159parse_options " $@ "
124160
161+ declare -a TTY_ARGS
125162if tty -s; then
126- TTY_ARGS=" -t -i"
127- else
128- TTY_ARGS=
163+ TTY_ARGS=(" -t" " -i" )
129164fi
130165
131- EXTRA_DOCKER_ARGS=()
166+ declare -a EXTRA_DOCKER_ARGS
132167INPUT_DIR=$( absolute_path " $INPUT_DIR " )
133168FILE_SERVER_PASSWORD_FILE=$( absolute_path " $FILE_SERVER_PASSWORD_FILE " )
134- AWS_SECRET_KEY_FILE=$( absolute_path " $AWS_SECRET_KEY_FILE " )
135-
169+ declare -a S3_ARGS
170+ if [ " ${GITHUB_ACTION:- false} " != " true" ]; then
171+ AWS_SECRET_KEY_FILE=$( absolute_path " $AWS_SECRET_KEY_FILE " )
172+ S3_ARGS=(" -v" " $AWS_SECRET_KEY_FILE :/aws_secret_key:ro" " -e" " AWS_ACCESS_KEY=$AWS_ACCESS_KEY " )
173+ else
174+ # docker's -e flag can use env var names without values
175+ S3_ARGS=(
176+ " -e" " AWS_ACCESS_KEY_ID"
177+ " -e" " AWS_SECRET_ACCESS_KEY"
178+ " -e" " AWS_SESSION_TOKEN"
179+ " -e" " AWS_REGION=us-east-1"
180+ " -e" " GITHUB_ACTION=true"
181+ )
182+ fi
136183if [[ " $SIGNING_KEY_PASSWORD_FILE " != " " ]]; then
137184 EXTRA_DOCKER_ARGS+=(-v " $SIGNING_KEY_PASSWORD_FILE :/signing_key_password:ro" )
138185fi
@@ -148,19 +195,18 @@ function cleanup()
148195}
149196
150197echo " -------- Entering Docker container --------"
151- exec docker run $ TTY_ARGS --rm \
198+ exec docker run " ${ TTY_ARGS[@]} " --rm \
152199 -v " $ROOTDIR :/system:ro" \
153200 -v " $INPUT_DIR :/input:ro" \
154201 -v " $SIGNING_KEY_FILE :/signing_key:ro" \
155202 -v " $FILE_SERVER_PASSWORD_FILE :/file_server_password:ro" \
156- -v " $AWS_SECRET_KEY_FILE :/aws_secret_key:ro" \
157203 -e " APP_UID=$( /usr/bin/id -u) " \
158204 -e " APP_GID=$( /usr/bin/id -g) " \
159205 -e " TESTING=$TESTING " \
160206 -e " REPOSITORY_NAME=$REPOSITORY_NAME " \
161207 -e " S3_BUCKET_NAME=$S3_BUCKET_NAME " \
162208 -e " VERSION=$VERSION " \
163- -e " AWS_ACCESS_KEY= $AWS_ACCESS_KEY " \
209+ " ${S3_ARGS[@]} " \
164210 " ${EXTRA_DOCKER_ARGS[@]} " \
165211 " phusion/passenger_binary_build_automation:$DOCKER_IMAGE_VERSION " \
166212 /system/linux/support/publish-script-docker-entrypoint.sh
0 commit comments