Skip to content

Fixes for supporting previous major versions (#397) #715

Fixes for supporting previous major versions (#397)

Fixes for supporting previous major versions (#397) #715

name: deploy lambda functions
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
on:
push: { branches: [main] }
jobs:
deploy-lambdas:
permissions:
contents: read
runs-on: ubuntu-24.04-arm
container: swift:6.3-amazonlinux2023
env:
AWS_BUCKET_NAME: penny-lambdas-store
AWS_DEFAULT_REGION: eu-west-1
AWS_ACCESS_KEY_ID: ${{ secrets.DEPLOYER_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.DEPLOYER_ACCESS_SECRET_KEY }}
steps:
- name: Install AWSCLI v2, jq, zstd
run: |
dnf update -y
dnf install jq awscli zstd -y
- name: Check out repository
uses: actions/checkout@v7
- name: Restore/Cache .build
if: ${{ runner.debug != '1' }}
id: "restore-cache"
uses: actions/cache@v6
with:
path: .build
key: "lambdas-build-${{ runner.os }}-${{ github.event.after }}"
restore-keys: "lambdas-build-${{ runner.os }}-"
- name: Find package names
id: find_package_names
run: |
echo "names=$(
swift package describe --type json | \
jq -r '.targets[] |
select(
.type == "executable"
and
(.name | endswith("Lambda"))
).name' | \
tr '\n' ' '
)" >> $GITHUB_OUTPUT
- name: Build and package lambdas
run: |
mkdir ./zips
for name in ${{ steps.find_package_names.outputs.names }}; do
swift package \
--allow-network-connections docker \
archive \
--verbose \
--base-docker-image swift:6.3-amazonlinux2023 \
--output-path ./zips \
--products "${name}"
done
- name: Deploy lambdas
run: |
for name in ${{ steps.find_package_names.outputs.names }}; do
aws s3api put-object \
--bucket "${AWS_BUCKET_NAME}" \
--key "${name}".zip \
--body ./zips/"${name}"/"${name}".zip
aws lambda update-function-code \
--function-name "${name}" \
--s3-bucket "${AWS_BUCKET_NAME}" \
--s3-key "${name}.zip"
done