Improve the shell script (#49)
Some checks failed
Run acceptance tests / test-with-output-secrets (connect, ubuntu-latest) (push) Has been cancelled
Run acceptance tests / test-with-output-secrets (service-account, macos-latest) (push) Has been cancelled
Run acceptance tests / test-with-output-secrets (service-account, ubuntu-latest) (push) Has been cancelled
Run acceptance tests / test-with-export-env (connect, ubuntu-latest) (push) Has been cancelled
Run acceptance tests / test-with-export-env (service-account, macos-latest) (push) Has been cancelled
Run acceptance tests / test-with-export-env (service-account, ubuntu-latest) (push) Has been cancelled
Run acceptance tests / test-references-with-ids (connect, ubuntu-latest) (push) Has been cancelled
Run acceptance tests / test-references-with-ids (service-account, macos-latest) (push) Has been cancelled
Run acceptance tests / test-references-with-ids (service-account, ubuntu-latest) (push) Has been cancelled
Some checks failed
Run acceptance tests / test-with-output-secrets (connect, ubuntu-latest) (push) Has been cancelled
Run acceptance tests / test-with-output-secrets (service-account, macos-latest) (push) Has been cancelled
Run acceptance tests / test-with-output-secrets (service-account, ubuntu-latest) (push) Has been cancelled
Run acceptance tests / test-with-export-env (connect, ubuntu-latest) (push) Has been cancelled
Run acceptance tests / test-with-export-env (service-account, macos-latest) (push) Has been cancelled
Run acceptance tests / test-with-export-env (service-account, ubuntu-latest) (push) Has been cancelled
Run acceptance tests / test-references-with-ids (connect, ubuntu-latest) (push) Has been cancelled
Run acceptance tests / test-references-with-ids (service-account, macos-latest) (push) Has been cancelled
Run acceptance tests / test-references-with-ids (service-account, ubuntu-latest) (push) Has been cancelled
* Improve CLI installation script - Add additional architectures for Linux. - Stop the action if the runner is executed in an unsupported OS. - Fetch automatically the latest stable CLI version. * Switch to new syntax for setting step output. GitHub has deprecated the syntax we were using for setting a step’s output (https://github.blog/changelog/2022-10-11-github-actions-deprecating-save-state-and-set-output-commands/). Therefore, we’re switching to the new one. * Stop action if arch is unsupported for Linux runners.
This commit is contained in:
@@ -39,6 +39,7 @@ unset_prev_secrets() {
|
|||||||
|
|
||||||
# Install op-cli
|
# Install op-cli
|
||||||
install_op_cli() {
|
install_op_cli() {
|
||||||
|
# Create a temporary directory where the CLI is installed
|
||||||
OP_INSTALL_DIR="$(mktemp -d)"
|
OP_INSTALL_DIR="$(mktemp -d)"
|
||||||
if [[ ! -d "$OP_INSTALL_DIR" ]]; then
|
if [[ ! -d "$OP_INSTALL_DIR" ]]; then
|
||||||
echo "Install dir $OP_INSTALL_DIR not found"
|
echo "Install dir $OP_INSTALL_DIR not found"
|
||||||
@@ -46,23 +47,36 @@ install_op_cli() {
|
|||||||
fi
|
fi
|
||||||
export OP_INSTALL_DIR
|
export OP_INSTALL_DIR
|
||||||
echo "::debug::OP_INSTALL_DIR: ${OP_INSTALL_DIR}"
|
echo "::debug::OP_INSTALL_DIR: ${OP_INSTALL_DIR}"
|
||||||
|
|
||||||
|
# Get the latest stable version of the CLI
|
||||||
|
OP_CLI_VERSION="v$(curl https://app-updates.agilebits.com/check/1/0/CLI2/en/2.0.0/N -s | jq -r .version)"
|
||||||
|
|
||||||
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
||||||
ARCHITECTURE=""
|
# Get runner's architecture
|
||||||
if [[ "$(uname -m)" == "x86_64" ]]; then
|
ARCH=$(uname -m)
|
||||||
ARCHITECTURE="amd64"
|
if [[ "$(getconf LONG_BIT)" = 32 ]]; then
|
||||||
elif [[ "$(uname -m)" == "aarch64" ]]; then
|
ARCH="386"
|
||||||
ARCHITECTURE="arm64"
|
elif [[ "$ARCH" == "x86_64" ]]; then
|
||||||
else
|
ARCH="amd64"
|
||||||
echo "Unsupported architecture"
|
elif [[ "$ARCH" == "aarch64" ]]; then
|
||||||
|
ARCH="arm64"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$ARCH" != "386" ]] && [[ "$ARCH" != "amd64" ]] && [[ "$ARCH" != "arm" ]] && [[ "$ARCH" != "arm64" ]]; then
|
||||||
|
echo "Unsupported architecture for the 1Password CLI: $ARCH."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
curl -sSfLo op.zip "https://cache.agilebits.com/dist/1P/op2/pkg/v2.18.0/op_linux_${ARCHITECTURE}_v2.18.0.zip"
|
|
||||||
|
curl -sSfLo op.zip "https://cache.agilebits.com/dist/1P/op2/pkg/${OP_CLI_VERSION}/op_linux_${ARCH}_${OP_CLI_VERSION}.zip"
|
||||||
unzip -od "$OP_INSTALL_DIR" op.zip && rm op.zip
|
unzip -od "$OP_INSTALL_DIR" op.zip && rm op.zip
|
||||||
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
||||||
curl -sSfLo op.pkg "https://cache.agilebits.com/dist/1P/op2/pkg/v2.18.0/op_apple_universal_v2.18.0.pkg"
|
curl -sSfLo op.pkg "https://cache.agilebits.com/dist/1P/op2/pkg/${OP_CLI_VERSION}/op_apple_universal_${OP_CLI_VERSION}.pkg"
|
||||||
pkgutil --expand op.pkg temp-pkg
|
pkgutil --expand op.pkg temp-pkg
|
||||||
tar -xvf temp-pkg/op.pkg/Payload -C "$OP_INSTALL_DIR"
|
tar -xvf temp-pkg/op.pkg/Payload -C "$OP_INSTALL_DIR"
|
||||||
rm -rf temp-pkg && rm op.pkg
|
rm -rf temp-pkg && rm op.pkg
|
||||||
|
else
|
||||||
|
echo "Operating system not supported yet for this GitHub Action: $OSTYPE."
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -97,25 +111,28 @@ populating_secret() {
|
|||||||
done
|
done
|
||||||
unset IFS
|
unset IFS
|
||||||
|
|
||||||
if [ "$INPUT_EXPORT_ENV" == "true" ]; then
|
|
||||||
# To support multiline secrets, we'll use the heredoc syntax to populate the environment variables.
|
# To support multiline secrets, we'll use the heredoc syntax to populate the environment variables.
|
||||||
# As the heredoc identifier, we'll use a randomly generated 64-character string,
|
# As the heredoc identifier, we'll use a randomly generated 64-character string,
|
||||||
# so that collisions are practically impossible.
|
# so that collisions are practically impossible.
|
||||||
random_heredoc_identifier=$(openssl rand -hex 32)
|
# Read more: https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions#multiline-strings
|
||||||
|
delimiter="$(openssl rand -hex 32)"
|
||||||
|
|
||||||
|
if [ "$INPUT_EXPORT_ENV" == "true" ]; then
|
||||||
{
|
{
|
||||||
# Populate env var, using heredoc syntax with generated identifier
|
# Populate env var, using heredoc syntax with generated identifier
|
||||||
echo "$env_var<<${random_heredoc_identifier}"
|
echo "$env_var<<${delimiter}"
|
||||||
echo "$secret_value"
|
echo "$secret_value"
|
||||||
echo "${random_heredoc_identifier}"
|
echo "${delimiter}"
|
||||||
} >> $GITHUB_ENV
|
} >> $GITHUB_ENV
|
||||||
echo "GITHUB_ENV: $(cat $GITHUB_ENV)"
|
echo "GITHUB_ENV: $(cat $GITHUB_ENV)"
|
||||||
|
|
||||||
else
|
else
|
||||||
# Prepare the secret_value to be outputed properly (especially multiline secrets)
|
{
|
||||||
secret_value=$(echo "$secret_value" | awk -v ORS='%0A' '1')
|
# Populate env var, using heredoc syntax with generated identifier
|
||||||
|
echo "$env_var<<${delimiter}"
|
||||||
echo "::set-output name=$env_var::$secret_value"
|
echo "$secret_value"
|
||||||
|
echo "${delimiter}"
|
||||||
|
} >> $GITHUB_OUTPUT
|
||||||
fi
|
fi
|
||||||
|
|
||||||
managed_variables+=("$env_var")
|
managed_variables+=("$env_var")
|
||||||
|
|||||||
Reference in New Issue
Block a user