Skip to content
Merged
Show file tree
Hide file tree
Changes from all 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
79 changes: 79 additions & 0 deletions .github/actions/setup-oci-cli/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
name: 'Setup OCI CLI'
description: 'Install the OCI CLI and optionally write ~/.oci/config for tools that need a config file (Packer, OCI Go SDK)'
inputs:
user:
description: 'OCI user OCID. When set together with key-content, a config file is written'
required: false
default: ''
tenancy:
description: 'OCI tenancy OCID'
required: false
default: ''
fingerprint:
description: 'API key fingerprint'
required: false
default: ''
region:
description: 'Default region'
required: false
default: ''
key-content:
description: 'PEM-encoded API private key'
required: false
default: ''
python-version:
description: 'Python version used to install the CLI'
required: false
default: '3.13'
outputs:
config-file:
description: 'Path to the written OCI config file (empty if not written)'
value: ${{ steps.config.outputs.config-file }}
runs:
using: 'composite'
steps:
- name: Set up Python
uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
with:
python-version: ${{ inputs.python-version }}

- name: Install OCI CLI
shell: bash
run: pip install oci-cli

- name: Write OCI config
id: config
if: inputs.key-content != ''
shell: bash
env:
OCI_USER: ${{ inputs.user }}
OCI_TENANCY: ${{ inputs.tenancy }}
OCI_FINGERPRINT: ${{ inputs.fingerprint }}
OCI_REGION: ${{ inputs.region }}
OCI_KEY_CONTENT: ${{ inputs.key-content }}
run: |
set -euo pipefail
for v in OCI_USER OCI_TENANCY OCI_FINGERPRINT OCI_REGION; do
if [ -z "${!v}" ]; then
echo "::error::setup-oci-cli: key-content was provided but ${v} is empty"
exit 1
fi
done
umask 077
mkdir -p "$HOME/.oci"
CONFIG_FILE="$HOME/.oci/config"
KEY_FILE="$HOME/.oci/oci_api_key.pem"

printf '%s\n' "$OCI_KEY_CONTENT" > "$KEY_FILE"
cat > "$CONFIG_FILE" <<EOF
[DEFAULT]
user=${OCI_USER}
fingerprint=${OCI_FINGERPRINT}
tenancy=${OCI_TENANCY}
region=${OCI_REGION}
key_file=${KEY_FILE}
EOF

echo "OCI_CONFIG_FILE=${CONFIG_FILE}" >> "$GITHUB_ENV"
echo "OCI_CLI_CONFIG_FILE=${CONFIG_FILE}" >> "$GITHUB_ENV"
echo "config-file=${CONFIG_FILE}" >> "$GITHUB_OUTPUT"
Loading