mirror of https://github.com/fluxcd/flux2.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
65 lines
2.3 KiB
YAML
65 lines
2.3 KiB
YAML
name: Setup Flux CLI
|
|
description: A GitHub Action for running Flux commands
|
|
author: Stefan Prodan
|
|
branding:
|
|
color: blue
|
|
icon: command
|
|
inputs:
|
|
version:
|
|
description: "Flux version e.g. 0.8.0 (defaults to latest stable release)"
|
|
required: false
|
|
arch:
|
|
description: "arch can be amd64, arm64 or arm"
|
|
required: true
|
|
default: "amd64"
|
|
bindir:
|
|
description: "Optional location of the Flux binary. Will not use sudo if set. Updates System Path."
|
|
required: false
|
|
token:
|
|
description: "GitHub Token used to authentication against the API (generally only needed to prevent quota limit errors)"
|
|
required: false
|
|
runs:
|
|
using: composite
|
|
steps:
|
|
- name: "Download flux binary to tmp"
|
|
shell: bash
|
|
run: |
|
|
ARCH=${{ inputs.arch }}
|
|
VERSION=${{ inputs.version }}
|
|
TOKEN=${{ inputs.token }}
|
|
|
|
if [ -z "${VERSION}" ]; then
|
|
if [ -n "${TOKEN}" ]; then
|
|
VERSION_SLUG=$(curl https://api.github.com/repos/fluxcd/flux2/releases/latest --silent --location --header "Authorization: token ${TOKEN}" | grep tag_name)
|
|
else
|
|
# With no GITHUB_TOKEN you will experience occasional failures due to rate limiting
|
|
# Ref: https://github.com/fluxcd/flux2/issues/3509#issuecomment-1400820992
|
|
VERSION_SLUG=$(curl https://api.github.com/repos/fluxcd/flux2/releases/latest --silent --location | grep tag_name)
|
|
fi
|
|
|
|
VERSION=$(echo "${VERSION_SLUG}" | sed -E 's/.*"([^"]+)".*/\1/' | cut -c 2-)
|
|
fi
|
|
|
|
BIN_URL="https://github.com/fluxcd/flux2/releases/download/v${VERSION}/flux_${VERSION}_linux_${ARCH}.tar.gz"
|
|
curl --silent --fail --location "${BIN_URL}" --output /tmp/flux.tar.gz
|
|
mkdir -p /tmp/flux
|
|
tar -C /tmp/flux/ -zxvf /tmp/flux.tar.gz
|
|
- name: "Copy Flux binary to execute location"
|
|
shell: bash
|
|
run: |
|
|
BINDIR=${{ inputs.bindir }}
|
|
if [ -z "${BINDIR}" ]; then
|
|
sudo cp /tmp/flux/flux /usr/local/bin
|
|
else
|
|
cp /tmp/flux/flux "${BINDIR}"
|
|
echo "${BINDIR}" >> $GITHUB_PATH
|
|
fi
|
|
- name: "Cleanup tmp"
|
|
shell: bash
|
|
run: |
|
|
rm -rf /tmp/flux/ /tmp/flux.tar.gz
|
|
- name: "Verify correct installation of binary"
|
|
shell: bash
|
|
run: |
|
|
flux -v
|