Skip to content

Commit

Permalink
Drop Alpine/Fedora support and add version option for infisical-cli f…
Browse files Browse the repository at this point in the history
…eature
  • Loading branch information
schroedan committed Jan 31, 2025
1 parent fa7aa5c commit 5c3bb5e
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 136 deletions.
16 changes: 0 additions & 16 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,26 +19,10 @@ jobs:
- infisical-cli
- terraform-backend-git
baseImage:
- alpine:latest
- debian:latest
- fedora:latest
- ubuntu:latest
- mcr.microsoft.com/devcontainers/base:alpine
- mcr.microsoft.com/devcontainers/base:debian
- mcr.microsoft.com/devcontainers/base:ubuntu
exclude:
- features: gitlab-cli
baseImage: alpine:latest
- features: gitlab-cli
baseImage: fedora:latest
- features: gitlab-cli
baseImage: mcr.microsoft.com/devcontainers/base:alpine
- features: terraform-backend-git
baseImage: alpine:latest
- features: terraform-backend-git
baseImage: fedora:latest
- features: terraform-backend-git
baseImage: mcr.microsoft.com/devcontainers/base:alpine

steps:
- name: Checkout
Expand Down
12 changes: 11 additions & 1 deletion src/infisical-cli/devcontainer-feature.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,19 @@
{
"id": "infisical-cli",
"version": "1.0.1",
"version": "1.1.0",
"name": "Infisical CLI",
"documentationURL": "https://github.com/skriptfabrik/devcontainer-features/tree/main/src/infisical-cli",
"description": "Installs Infisical CLI.",
"options": {
"version": {
"type": "string",
"proposals": [
"latest"
],
"default": "latest",
"description": "Select or enter a infisical-cli version."
}
},
"installsAfter": [
"ghcr.io/devcontainers/features/common-utils"
]
Expand Down
96 changes: 31 additions & 65 deletions src/infisical-cli/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,52 +2,7 @@

set -e

# Debian / Ubuntu packages
install_debian_packages() {
# Install prerequisites
apt-get -y update
apt-get -y install --no-install-recommends curl ca-certificates

# Add Infisical repository
curl -1sLf 'https://dl.cloudsmith.io/public/infisical/infisical-cli/setup.deb.sh' | bash

# Install Infisical CLI
apt-get -y install --no-install-recommends infisical

# Clean up
apt-get -y clean
rm -rf /var/lib/apt/lists/*
}

# RedHat / RockyLinux / CentOS / Fedora packages
install_redhat_packages() {
local install_cmd=microdnf
if ! type microdnf > /dev/null 2>&1; then
install_cmd=dnf
if ! type dnf > /dev/null 2>&1; then
install_cmd=yum
fi
fi

# Add Infisical repository
curl -1sLf 'https://dl.cloudsmith.io/public/infisical/infisical-cli/setup.rpm.sh' | bash

# Install Infisical CLI
${install_cmd} -y install infisical
}

# Alpine Linux packages
install_alpine_packages() {
# Install prerequisites
apk add --no-cache bash curl sudo

# Add Infisical repository
curl -1sLf 'https://dl.cloudsmith.io/public/infisical/infisical-cli/setup.alpine.sh' | bash

# Install Infisical CLI
apk update
apk add --no-cache infisical
}
CLI_VERSION="${VERSION:-"latest"}"

if [ "$(id -u)" -ne 0 ]; then
echo -e 'Script must be run as root. Use sudo, su, or add "USER root" to your Dockerfile before running this script.'
Expand All @@ -58,26 +13,37 @@ fi
. /etc/os-release

# Get an adjusted ID independent of distro variants
if [ "${ID}" = "debian" ] || [ "${ID_LIKE}" = "debian" ]; then
ADJUSTED_ID="debian"
elif [[ "${ID}" = "rhel" || "${ID}" = "fedora" || "${ID}" = "mariner" || "${ID_LIKE}" = *"rhel"* || "${ID_LIKE}" = *"fedora"* || "${ID_LIKE}" = *"mariner"* ]]; then
ADJUSTED_ID="rhel"
elif [ "${ID}" = "alpine" ]; then
ADJUSTED_ID="alpine"
else
if [ "${ID}" != "debian" ] && [ "${ID_LIKE}" != "debian" ]; then
echo "Linux distro ${ID} not supported."
exit 1
fi

# Install packages for appropriate OS
case "${ADJUSTED_ID}" in
"debian")
install_debian_packages
;;
"rhel")
install_redhat_packages
;;
"alpine")
install_alpine_packages
;;
esac
# Install prerequisites
apt-get -y update
apt-get -y install --no-install-recommends curl ca-certificates jq

# Clean up
apt-get -y clean
rm -rf /var/lib/apt/lists/*

# Fetch latest version if needed
if [ "${CLI_VERSION}" = "latest" ]; then
CLI_VERSION=$(curl -s https://api.github.com/repos/infisical/infisical/releases/latest | jq -r '.tag_name' | awk '{print substr($1, 16)}')
fi

# Detect current machine architecture
if [ "$(uname -m)" = "aarch64" ]; then
ARCH="arm64"
else
ARCH="amd64"
fi

# DEB package and download URL
DEB_PACKAGE="infisical_${CLI_VERSION}_linux_${ARCH}.deb"
DOWNLOAD_URL="https://dl.cloudsmith.io/public/infisical/infisical-cli/deb/any-distro/pool/any-version/main/i/in/infisical_${CLI_VERSION}/${DEB_PACKAGE}"

# Download and install infisical-cli
echo "Downloading infisical-cli from ${DOWNLOAD_URL}"
curl -sSLO "${DOWNLOAD_URL}"
dpkg -i "${DEB_PACKAGE}"
rm -f "${DEB_PACKAGE}"
21 changes: 0 additions & 21 deletions test/infisical-cli/alpine.sh

This file was deleted.

21 changes: 0 additions & 21 deletions test/infisical-cli/fedora.sh

This file was deleted.

12 changes: 0 additions & 12 deletions test/infisical-cli/scenarios.json
Original file line number Diff line number Diff line change
@@ -1,22 +1,10 @@
{
"alpine": {
"image": "alpine:latest",
"features": {
"infisical-cli": {}
}
},
"debian": {
"image": "debian:latest",
"features": {
"infisical-cli": {}
}
},
"fedora": {
"image": "fedora:latest",
"features": {
"infisical-cli": {}
}
},
"ubuntu": {
"image": "ubuntu:latest",
"features": {
Expand Down

0 comments on commit 5c3bb5e

Please sign in to comment.