Skip to content

Commit

Permalink
Add support for macOS
Browse files Browse the repository at this point in the history
Change-type: patch
Signed-off-by: Kyle Harding <[email protected]>
  • Loading branch information
klutchell committed May 3, 2024
1 parent 63a651c commit fac649c
Show file tree
Hide file tree
Showing 3 changed files with 94 additions and 61 deletions.
9 changes: 9 additions & 0 deletions .github/actions/test/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,15 @@ runs:
steps:
- name: Test setup of AWS CLI
uses: ./
with:
skip-cache: 'true'
- name: Print AWS CLI version
shell: bash
run: aws --version
- name: Test setup of AWS CLI
uses: ./
with:
skip-cache: 'false'
- name: Print AWS CLI version
shell: bash
run: aws --version
2 changes: 1 addition & 1 deletion .github/workflows/flowzone.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,5 @@ jobs:
with:
custom_test_matrix: >
{
os: ["ubuntu-latest", "macos-latest", "actuated-arm64-1cpu-2gb"]
os: ["ubuntu-latest", "macos-latest", "actuated-arm64-2cpu-8gb"]
}
144 changes: 84 additions & 60 deletions action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,92 +22,116 @@ runs:
id: cache
uses: actions/cache@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4
with:
path: ${{ runner.tool_cache }}/skopeo
key: skopeo-${{ runner.os }}-${{ runner.arch }}-${{ steps.latest.outputs.release || inputs.version }}
path: ${{ runner.tool_cache }}/awscliv2
key: awscliv2-${{ runner.os }}-${{ runner.arch }}-${{ inputs.version }}

- name: Get runner os
- name: Get runner os/arch
if: steps.cache.outputs.cache-hit != true
id: os
shell: bash
working-directory: ${{ runner.temp }}
run: |
case "${{ runner.os }}" in
Linux) echo "Detected runner os: ${{ runner.os }}" ;;
*) echo "::error::Unsupported os: ${{ runner.os }}" ; exit 1 ;;
esac
- name: Get runner arch
if: steps.cache.outputs.cache-hit != true
id: arch
id: platform
shell: bash
working-directory: ${{ runner.temp }}
env:
PLATFORM: ${{ runner.os }}/${{ runner.arch }}
run: |
case "${{ runner.arch }}" in
X64) echo "target=x86_64" >> "${GITHUB_OUTPUT}" ;;
ARM64) echo "target=aarch64" >> "${GITHUB_OUTPUT}" ;;
*) echo "::error::Unsupported arch: ${{ runner.arch }}" ; exit 1 ;;
case "${PLATFORM}" in
Linux/X64)
echo "Detected os/arch: ${PLATFORM}" ;
echo "arch=x86_64" >> "${GITHUB_OUTPUT}" ;
;;
Linux/ARM64)
echo "Detected os/arch: ${PLATFORM}" ;
echo "arch=aarch64" >> "${GITHUB_OUTPUT}" ;
;;
macOS/ARM64) echo "Detected os/arch: ${PLATFORM}" ;;
*) echo "::error::Unsupported os/arch: ${PLATFORM}" ; exit 1 ;;
esac
# public key from https://docs.aws.amazon.com/cli/latest/userguide/getting-started-version.html
# https://github.com/crazy-max/ghaction-import-gpg
- name: Import GPG key
uses: crazy-max/ghaction-import-gpg@01dd5d3ca463c7f10f7f4f7b4f177225ac661ee4 # v6.1.0
if: steps.cache.outputs.cache-hit != true && runner.os == 'Linux'
env:
GPG_PRIVATE_KEY: >
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQINBF2Cr7UBEADJZHcgusOJl7ENSyumXh85z0TRV0xJorM2B/JL0kHOyigQluUG
ZMLhENaG0bYatdrKP+3H91lvK050pXwnO/R7fB/FSTouki4ciIx5OuLlnJZIxSzx
PqGl0mkxImLNbGWoi6Lto0LYxqHN2iQtzlwTVmq9733zd3XfcXrZ3+LblHAgEt5G
TfNxEKJ8soPLyWmwDH6HWCnjZ/aIQRBTIQ05uVeEoYxSh6wOai7ss/KveoSNBbYz
gbdzoqI2Y8cgH2nbfgp3DSasaLZEdCSsIsK1u05CinE7k2qZ7KgKAUIcT/cR/grk
C6VwsnDU0OUCideXcQ8WeHutqvgZH1JgKDbznoIzeQHJD238GEu+eKhRHcz8/jeG
94zkcgJOz3KbZGYMiTh277Fvj9zzvZsbMBCedV1BTg3TqgvdX4bdkhf5cH+7NtWO
lrFj6UwAsGukBTAOxC0l/dnSmZhJ7Z1KmEWilro/gOrjtOxqRQutlIqG22TaqoPG
fYVN+en3Zwbt97kcgZDwqbuykNt64oZWc4XKCa3mprEGC3IbJTBFqglXmZ7l9ywG
EEUJYOlb2XrSuPWml39beWdKM8kzr1OjnlOm6+lpTRCBfo0wa9F8YZRhHPAkwKkX
XDeOGpWRj4ohOx0d2GWkyV5xyN14p2tQOCdOODmz80yUTgRpPVQUtOEhXQARAQAB
tCFBV1MgQ0xJIFRlYW0gPGF3cy1jbGlAYW1hem9uLmNvbT6JAlQEEwEIAD4CGwMF
CwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQT7Xbd/1cEYuAURraimMQrMRnJHXAUC
ZMKcEgUJCSEf3QAKCRCmMQrMRnJHXCilD/4vior9J5tB+icri5WbDudS3ak/ve4q
XS6ZLm5S8l+CBxy5aLQUlyFhuaaEHDC11fG78OduxatzeHENASYVo3mmKNwrCBza
NJaeaWKLGQT0MKwBSP5aa3dva8P/4oUP9GsQn0uWoXwNDWfrMbNI8gn+jC/3MigW
vD3fu6zCOWWLITNv2SJoQlwILmb/uGfha68o4iTBOvcftVRuao6DyqF+CrHX/0j0
klEDQFMY9M4tsYT7X8NWfI8Vmc89nzpvL9fwda44WwpKIw1FBZP8S0sgDx2xDsxv
L8kM2GtOiH0cHqFO+V7xtTKZyloliDbJKhu80Kc+YC/TmozD8oeGU2rEFXfLegwS
zT9N+jB38+dqaP9pRDsi45iGqyA8yavVBabpL0IQ9jU6eIV+kmcjIjcun/Uo8SjJ
0xQAsm41rxPaKV6vJUn10wVNuhSkKk8mzNOlSZwu7Hua6rdcCaGeB8uJ44AP3QzW
BNnrjtoN6AlN0D2wFmfE/YL/rHPxU1XwPntubYB/t3rXFL7ENQOOQH0KVXgRCley
sHMglg46c+nQLRzVTshjDjmtzvh9rcV9RKRoPetEggzCoD89veDA9jPR2Kw6RYkS
XzYm2fEv16/HRNYt7hJzneFqRIjHW5qAgSs/bcaRWpAU/QQzzJPVKCQNr4y0weyg
B8HCtGjfod0p1A==
=gdMc
-----END PGP PUBLIC KEY BLOCK-----
LS0tLS1CRUdJTiBQR1AgUFVCTElDIEtFWSBCTE9DSy0tLS0tCgptUUlOQkYyQ3I3VUJFQURKWkhj
Z3VzT0psN0VOU3l1bVhoODV6MFRSVjB4Sm9yTTJCL0pMMGtIT3lpZ1FsdVVHClpNTGhFTmFHMGJZ
YXRkcktQKzNIOTFsdkswNTBwWHduTy9SN2ZCL0ZTVG91a2k0Y2lJeDVPdUxsbkpaSXhTengKUHFH
bDBta3hJbUxOYkdXb2k2THRvMExZeHFITjJpUXR6bHdUVm1xOTczM3pkM1hmY1hyWjMrTGJsSEFn
RXQ1RwpUZk54RUtKOHNvUEx5V213REg2SFdDbmpaL2FJUVJCVElRMDV1VmVFb1l4U2g2d09haTdz
cy9LdmVvU05CYll6CmdiZHpvcUkyWThjZ0gybmJmZ3AzRFNhc2FMWkVkQ1NzSXNLMXUwNUNpbkU3
azJxWjdLZ0tBVUljVC9jUi9ncmsKQzZWd3NuRFUwT1VDaWRlWGNROFdlSHV0cXZnWkgxSmdLRGJ6
bm9JemVRSEpEMjM4R0V1K2VLaFJIY3o4L2plRwo5NHprY2dKT3ozS2JaR1lNaVRoMjc3RnZqOXp6
dlpzYk1CQ2VkVjFCVGczVHFndmRYNGJka2hmNWNIKzdOdFdPCmxyRmo2VXdBc0d1a0JUQU94QzBs
L2RuU21aaEo3WjFLbUVXaWxyby9nT3JqdE94cVJRdXRsSXFHMjJUYXFvUEcKZllWTitlbjNad2J0
OTdrY2daRHdxYnV5a050NjRvWldjNFhLQ2EzbXByRUdDM0liSlRCRnFnbFhtWjdsOXl3RwpFRVVK
WU9sYjJYclN1UFdtbDM5YmVXZEtNOGt6cjFPam5sT202K2xwVFJDQmZvMHdhOUY4WVpSaEhQQWt3
S2tYClhEZU9HcFdSajRvaE94MGQyR1dreVY1eHlOMTRwMnRRT0NkT09EbXo4MHlVVGdScFBWUVV0
T0VoWFFBUkFRQUIKdENGQlYxTWdRMHhKSUZSbFlXMGdQR0YzY3kxamJHbEFZVzFoZW05dUxtTnZi
VDZKQWxRRUV3RUlBRDRDR3dNRgpDd2tJQndJR0ZRb0pDQXNDQkJZQ0F3RUNIZ0VDRjRBV0lRVDdY
YmQvMWNFWXVBVVJyYWltTVFyTVJuSkhYQVVDClpNS2NFZ1VKQ1NFZjNRQUtDUkNtTVFyTVJuSkhY
Q2lsRC80dmlvcjlKNXRCK2ljcmk1V2JEdWRTM2FrL3ZlNHEKWFM2WkxtNVM4bCtDQnh5NWFMUVVs
eUZodWFhRUhEQzExZkc3OE9kdXhhdHplSEVOQVNZVm8zbW1LTndyQ0J6YQpOSmFlYVdLTEdRVDBN
S3dCU1A1YWEzZHZhOFAvNG9VUDlHc1FuMHVXb1h3TkRXZnJNYk5JOGduK2pDLzNNaWdXCnZEM2Z1
NnpDT1dXTElUTnYyU0pvUWx3SUxtYi91R2ZoYTY4bzRpVEJPdmNmdFZSdWFvNkR5cUYrQ3JIWC8w
ajAKa2xFRFFGTVk5TTR0c1lUN1g4TldmSThWbWM4OW56cHZMOWZ3ZGE0NFd3cEtJdzFGQlpQOFMw
c2dEeDJ4RHN4dgpMOGtNMkd0T2lIMGNIcUZPK1Y3eHRUS1p5bG9saURiSktodTgwS2MrWUMvVG1v
ekQ4b2VHVTJyRUZYZkxlZ3dTCnpUOU4rakIzOCtkcWFQOXBSRHNpNDVpR3F5QTh5YXZWQmFicEww
SVE5alU2ZUlWK2ttY2pJamN1bi9VbzhTakoKMHhRQXNtNDFyeFBhS1Y2dkpVbjEwd1ZOdWhTa0tr
OG16Tk9sU1p3dTdIdWE2cmRjQ2FHZUI4dUo0NEFQM1F6VwpCTm5yanRvTjZBbE4wRDJ3Rm1mRS9Z
TC9ySFB4VTFYd1BudHViWUIvdDNyWEZMN0VOUU9PUUgwS1ZYZ1JDbGV5CnNITWdsZzQ2YytuUUxS
elZUc2hqRGptdHp2aDlyY1Y5UktSb1BldEVnZ3pDb0Q4OXZlREE5alBSMkt3NlJZa1MKWHpZbTJm
RXYxNi9IUk5ZdDdoSnpuZUZxUklqSFc1cUFnU3MvYmNhUldwQVUvUVF6ekpQVktDUU5yNHkwd2V5
ZwpCOEhDdEdqZm9kMHAxQT09Cj1nZE1jCi0tLS0tRU5EIFBHUCBQVUJMSUMgS0VZIEJMT0NLLS0t
LS0=
with:
gpg_private_key: ${{ env.GPG_PRIVATE_KEY }}

- name: Create temporary directory
id: tempdir
if: steps.cache.outputs.cache-hit != true
working-directory: ${{ runner.temp }}
shell: bash --noprofile --norc -eo pipefail -x {0}
run: |
path="$(mktemp -d -p "${{ runner.temp }}")"
echo "path=${path}" >> "${GITHUB_OUTPUT}"
echo "basename=$(basename "${path}")" >> "${GITHUB_OUTPUT}"
# https://docs.aws.amazon.com/cli/latest/userguide/getting-started-version.html
- name: Install AWS CLI (Linux)
if: steps.cache.outputs.cache-hit != true && runner.os == 'Linux'
working-directory: ${{ runner.temp }}
working-directory: ${{ steps.tempdir.outputs.path }}
shell: bash --noprofile --norc -eo pipefail -x {0}
env:
DOWNLOAD_URL: https://awscli.amazonaws.com/awscli-exe-linux-${{ steps.arch.outputs.target }}-${{ inputs.version }}.zip
run: |
mkdir -p awscliv2
cd awscliv2
curl -fsSL "${DOWNLOAD_URL}" -o awscliv2.zip
curl -fsSL "${DOWNLOAD_URL}.sig" -o awscliv2.sig
curl -fsSL "https://awscli.amazonaws.com/awscli-exe-linux-${{ steps.platform.outputs.arch }}-${{ inputs.version }}.zip" -o awscliv2.zip
curl -fsSL "https://awscli.amazonaws.com/awscli-exe-linux-${{ steps.platform.outputs.arch }}-${{ inputs.version }}.zip.sig" -o awscliv2.sig
gpg --verify awscliv2.sig awscliv2.zip
unzip awscliv2.zip
find .
unzip -q awscliv2.zip
mv aws/dist awscliv2
./awscliv2/aws --version
# https://docs.aws.amazon.com/cli/latest/userguide/getting-started-version.html
# https://gist.github.com/ugultopu/1adf8e08acb87be649d69419cf7aca3c
- name: Install AWS CLI (macOS)
if: steps.cache.outputs.cache-hit != true && runner.os == 'macOS'
working-directory: ${{ steps.tempdir.outputs.path }}
shell: bash --noprofile --norc -eo pipefail -x {0}
run: |
curl -fsSL "https://awscli.amazonaws.com/AWSCLIV2-${{ inputs.version }}.pkg" -o "AWSCLIV2.pkg"
pkgutil --expand-full ./AWSCLIV2.pkg awscliv2_pkg
mv ./awscliv2_pkg/aws-cli.pkg/Payload/aws-cli awscliv2
./awscliv2/aws --version
# https://github.com/AnimMouse/tool-cache
- name: Update tool cache
uses: AnimMouse/tool-cache@5c73a08045bdef61c81a6c60d208cff7ab36f3aa # v1
with:
folder_name: skopeo
folder_name: ${{ steps.tempdir.outputs.basename }}/awscliv2
cache_hit: ${{ steps.cache.outputs.cache-hit }}

- name: Print AWS CLI version
shell: bash
shell: bash --noprofile --norc -eo pipefail -x {0}
working-directory: ${{ runner.temp }}
run: aws --version
run: |
find "${{ runner.tool_cache }}" -type f -name aws
which -a aws | grep '${{ runner.tool_cache }}'
aws --version

0 comments on commit fac649c

Please sign in to comment.