Fixes for supporting previous major versions (#397) #715
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |