From 2e5d351b05296495431cadf871968036f4e1e89f Mon Sep 17 00:00:00 2001 From: EMAKO AUBERT Date: Fri, 25 Mar 2022 03:58:55 +0100 Subject: [PATCH 01/10] Create dockerfile.sh --- dockerfile.sh | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 dockerfile.sh diff --git a/dockerfile.sh b/dockerfile.sh new file mode 100644 index 0000000..e9894e8 --- /dev/null +++ b/dockerfile.sh @@ -0,0 +1,6 @@ +for dockerfile in $(find . -not -path "\./\.*" -name "Dockerfile"); do + path=$(dirname $dockerfile) + echo "\033[32mBuilding container flynn/$(basename $path)... \033[39m" + cd $path && docker build -t flynn/$(basename $path) . + cd - > /dev/null +done From f78fc576241a1f176bd8123d1a451dfefe0a1c7f Mon Sep 17 00:00:00 2001 From: EMAKO AUBERT Date: Fri, 25 Mar 2022 04:03:12 +0100 Subject: [PATCH 02/10] .gitpod.Dockerfile --- .gitpod.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitpod.yml b/.gitpod.yml index fddefd2..2dd001f 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -1,3 +1,6 @@ +image: + file: .gitpod.Dockerfile + tasks: - init: | sudo docker pull registry.jetbrains.team/p/prj/containers/projector-pycharm-c From 12e0cdbbe556820637c8f4a3c9df3b66058493d9 Mon Sep 17 00:00:00 2001 From: EMAKO AUBERT Date: Fri, 25 Mar 2022 04:06:55 +0100 Subject: [PATCH 03/10] Create .gitpod.Dockerfile --- .gitpod.Dockerfile | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .gitpod.Dockerfile diff --git a/.gitpod.Dockerfile b/.gitpod.Dockerfile new file mode 100644 index 0000000..6b273ca --- /dev/null +++ b/.gitpod.Dockerfile @@ -0,0 +1,4 @@ +FROM gitpod/workspace-full + +# Install custom tools, runtime, etc. +RUN brew install fzf From 41791310d503565eb8d31aba642d0bb338f7f7a5 Mon Sep 17 00:00:00 2001 From: EMAKO AUBERT Date: Fri, 25 Mar 2022 04:10:22 +0100 Subject: [PATCH 04/10] Update .gitpod.Dockerfile --- .gitpod.Dockerfile | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/.gitpod.Dockerfile b/.gitpod.Dockerfile index 6b273ca..dcd2a0a 100644 --- a/.gitpod.Dockerfile +++ b/.gitpod.Dockerfile @@ -1,4 +1,35 @@ -FROM gitpod/workspace-full +FROM jsii/superchain:1-buster-slim-node14 + +ARG AWS_CLI_V2_URL='https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip' +ARG TERRAFORM_URL='https://releases.hashicorp.com/terraform/1.1.0/terraform_1.1.0_linux_amd64.zip' # Install custom tools, runtime, etc. RUN brew install fzf + + +USER root:root +# install jq wget +RUN apt-get update && apt-get install -y jq wget + +RUN mv $(which aws) /usr/local/bin/awscliv1 && \ + curl "${AWS_CLI_V2_URL}" -o "/tmp/awscliv2.zip" && \ + unzip /tmp/awscliv2.zip -d /tmp && \ + /tmp/aws/install + +# install terraform +RUN curl -o terraform.zip "${TERRAFORM_URL}" && \ + unzip terraform.zip && \ + mv terraform /usr/local/bin/ && \ + rm -f terraform.zip + +# install aws-sso-credential-process +RUN cd /usr/local/bin && \ + curl -o aws-sso-credential-process "${CRED_PROCESS_URL}" && \ + chmod +x aws-sso-credential-process + +# install session-manager-plugin(required for aws ssm start-session) +RUN curl "${SESSION_MANAGER_PLUGIN}" -o "session-manager-plugin.deb" && \ + dpkg -i session-manager-plugin.deb && \ + rm -f session-manager-plugin.deb + +USER superchain:superchain From 0e54e79355a4f527fa55b000293145507d014272 Mon Sep 17 00:00:00 2001 From: EMAKO AUBERT Date: Fri, 25 Mar 2022 04:14:20 +0100 Subject: [PATCH 05/10] Update .gitpod.yml --- .gitpod.yml | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/.gitpod.yml b/.gitpod.yml index 2dd001f..560e84b 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -1,5 +1,20 @@ -image: +github: + prebuilds: + pullRequestsFromForks: true + addComment: true + +image: file: .gitpod.Dockerfile +tasks: + - init: ${GITPOD_REPO_ROOT}/utils/init-script.sh + +vscode: + extensions: + - dbaeumer.vscode-eslint + +vscode: + extensions: + - dbaeumer.vscode-eslint tasks: - init: | From 1c99522682c73f97fc97ade3f13309c3957229a7 Mon Sep 17 00:00:00 2001 From: EMAKO AUBERT Date: Fri, 25 Mar 2022 04:15:12 +0100 Subject: [PATCH 06/10] Create aws-sso-credential-process --- aws-sso-credential-process | 49 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 aws-sso-credential-process diff --git a/aws-sso-credential-process b/aws-sso-credential-process new file mode 100644 index 0000000..08720b2 --- /dev/null +++ b/aws-sso-credential-process @@ -0,0 +1,49 @@ +#!/bin/bash + +# This script generates output for process_credentials from a user authenticated via SSO +# Before using, make sure that the AWS SSO is configured in your CLI: `aws configure sso` +# Usage: aws-sso-credential-process [AWS_PROFILE_NAME] + +if [ $# -gt 0 ]; then + AWS_PROFILE="$1" +fi + +profile=${AWS_PROFILE-default} +temp_identity=$(aws --profile "$profile" sts get-caller-identity) +account_id=$(echo $temp_identity | jq -r .Arn | cut -d: -f5) +assumed_role_name=$(echo $temp_identity | jq -r .Arn | cut -d/ -f2) +session_name=$(echo $temp_identity | jq -r .Arn | cut -d/ -f3) +sso_region=$(aws --profile "$profile" configure get sso_region) + +if [[ $sso_region == 'us-east-1' ]]; then + sso_region_string='' +else + sso_region_string="${sso_region}/" +fi +role_arn="arn:aws:iam::${account_id}:role/aws-reserved/sso.amazonaws.com/${sso_region_string}${assumed_role_name}" + + +request_credentials() { + credentials=$( + aws sts assume-role \ + --profile $profile \ + --role-arn $role_arn \ + --role-session-name $session_name | jq '.Credentials + {Version: 1}' + ) +} + +request_credentials + +if [ $? -ne 0 ]; then + aws sso login --profile "$profile" + + if [ $? -ne 0 ]; then + exit 1 + fi + + request_credentials +fi + +echo $credentials + +exit 0 From cb802c2d475c695ab44be10463e873d85b53c87b Mon Sep 17 00:00:00 2001 From: EMAKO AUBERT Date: Fri, 25 Mar 2022 04:16:08 +0100 Subject: [PATCH 07/10] Create init-script.sh --- init-script.sh | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 init-script.sh diff --git a/init-script.sh b/init-script.sh new file mode 100644 index 0000000..fc6e59b --- /dev/null +++ b/init-script.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +echo "source /usr/share/bash-completion/completions/git" >> $HOME/.bashrc From 2d4641948484c3209f4e9351d32062fd48feeb40 Mon Sep 17 00:00:00 2001 From: EMAKO AUBERT Date: Fri, 25 Mar 2022 04:16:59 +0100 Subject: [PATCH 08/10] Create refresh_credentials.sh --- refresh_credentials.sh | 53 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 refresh_credentials.sh diff --git a/refresh_credentials.sh b/refresh_credentials.sh new file mode 100644 index 0000000..fd3d3c2 --- /dev/null +++ b/refresh_credentials.sh @@ -0,0 +1,53 @@ +#!/bin/bash + +# This script generates AWS Programmatic Access credentials from a user authenticated via SSO +# Before using, make sure that the AWS SSO is configured in your CLI: `aws configure sso` + +profile=${AWS_PROFILE-default} +temp_identity=$(aws --profile "$profile" sts get-caller-identity) +account_id=$(echo $temp_identity | jq -r .Arn | cut -d: -f5) +assumed_role_name=$(echo $temp_identity | jq -r .Arn | cut -d/ -f2) +session_name=$(echo $temp_identity | jq -r .Arn | cut -d/ -f3) +sso_region=$(aws --profile "$profile" configure get sso_region) + +if [[ $sso_region == 'us-east-1' ]]; then + sso_region_string='' +else + sso_region_string="${sso_region}/" +fi +role_arn="arn:aws:iam::${account_id}:role/aws-reserved/sso.amazonaws.com/${sso_region_string}${assumed_role_name}" + + +request_credentials() { + credentials=$( + aws sts assume-role \ + --profile $profile \ + --role-arn $role_arn \ + --role-session-name $session_name + ) +} + +echo "=> requesting temporary credentials" +request_credentials + +if [ $? -ne 0 ]; then + aws sso login --profile "$profile" + + if [ $? -ne 0 ]; then + exit 1 + fi + + request_credentials +fi + +echo "=> updating ~/.aws/credentials as profile $profile" + +access_key_id=$(echo $credentials | jq -r .Credentials.AccessKeyId) +secret_access_key=$(echo $credentials | jq -r .Credentials.SecretAccessKey) +session_token=$(echo $credentials | jq -r .Credentials.SessionToken) + +aws configure set --profile "$profile" aws_access_key_id "$access_key_id" +aws configure set --profile "$profile" aws_secret_access_key "$secret_access_key" +aws configure set --profile "$profile" aws_session_token "$session_token" + +echo "[OK] done" From a61a3cd621329b2c18141e17f10c0b61275d8c90 Mon Sep 17 00:00:00 2001 From: EMAKO AUBERT Date: Fri, 25 Mar 2022 10:30:28 +0100 Subject: [PATCH 09/10] Update .gitpod.yml --- .gitpod.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitpod.yml b/.gitpod.yml index 560e84b..8054689 100644 --- a/.gitpod.yml +++ b/.gitpod.yml @@ -6,7 +6,7 @@ github: image: file: .gitpod.Dockerfile tasks: - - init: ${GITPOD_REPO_ROOT}/utils/init-script.sh + - init: ${GITPOD_REPO_ROOT}/init-script.sh vscode: extensions: From fffaa7ba7e68e149e1d10d4ea582e2aacaff6cc3 Mon Sep 17 00:00:00 2001 From: EMAKO AUBERT Date: Fri, 25 Mar 2022 10:40:52 +0100 Subject: [PATCH 10/10] Update .gitpod.Dockerfile --- .gitpod.Dockerfile | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/.gitpod.Dockerfile b/.gitpod.Dockerfile index dcd2a0a..b33b1d9 100644 --- a/.gitpod.Dockerfile +++ b/.gitpod.Dockerfile @@ -31,5 +31,24 @@ RUN cd /usr/local/bin && \ RUN curl "${SESSION_MANAGER_PLUGIN}" -o "session-manager-plugin.deb" && \ dpkg -i session-manager-plugin.deb && \ rm -f session-manager-plugin.deb - +#install zip +RUN apt-get update -y && \ + apt-get upgrade -y && \ + apt-get dist-upgrade -y && \ + apt-get -y autoremove && \ + apt-get clean +RUN apt-get install -y p7zip \ + p7zip-full \ + unace \ + zip \ + unzip \ + xz-utils \ + sharutils \ + uudeview \ + mpack \ + arj \ + cabextract \ + file-roller \ + && rm -rf /var/lib/apt/lists/* +CMD ["bash"] USER superchain:superchain