Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
164 changes: 113 additions & 51 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,35 +9,6 @@ on:
- cron: '48 23 * * 0'

jobs:
localstack-action-test:
name: 'Test LocalStack GitHub Action'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6

# We must hack the action call as remote to be able to use the relative paths
# Could it break with different CWD? 🤔
- name: Start LocalStack
uses: jenseng/dynamic-uses@8bc24f0360175e710da532c4d19eafdbed489a06 # v1
with:
uses: LocalStack/setup-localstack@${{ env.GH_ACTION_VERSION }}
with: |-
{
"image-tag": "latest",
"install-awslocal": "true",
"configuration": "DEBUG=1",
"use-pro": "true",
}
env:
LOCALSTACK_API_KEY: ${{ secrets.LOCALSTACK_API_KEY }}
GH_ACTION_VERSION: ${{ github.event_name == 'pull_request' && github.head_ref || github.ref_name }}

- name: Run Tests Against LocalStack
run: |
awslocal s3 mb s3://test
awslocal s3 ls
echo "Test Execution complete!"

localstack-action-version-test:
name: 'Test LocalStack Version with Github Actions'
runs-on: ubuntu-latest
Expand All @@ -59,16 +30,18 @@ jobs:
}
env:
LOCALSTACK_API_KEY: ${{ secrets.LOCALSTACK_API_KEY }}
GH_ACTION_VERSION: ${{ github.event_name == 'pull_request' && github.head_ref || github.ref_name }}
GH_ACTION_VERSION: ${{ (github.event_name == 'pull_request' && github.event.pull_request.head.sha) || github.ref_name }}

- name: Run Version Test Against LocalStack
run: |
LS_VERSION=$(docker ps | grep localstack | cut -d " " -f4 | cut -d ":" -f2)
exit $(test "x${LS_VERSION}" = "x3.2.0")

cloud-pods-test:
cloud-pods-save-test:
name: 'Test Cloud Pods Action'
runs-on: ubuntu-latest
outputs:
pod-name: ${{ steps.pod_name.outputs.name }}
steps:
- name: ⚡️ Checkout the repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
Expand All @@ -85,8 +58,12 @@ jobs:
"use-pro": "true",
}
env:
LOCALSTACK_API_KEY: ${{ secrets.LOCALSTACK_API_KEY }}
GH_ACTION_VERSION: ${{ github.event_name == 'pull_request' && github.head_ref || github.ref_name }}
LOCALSTACK_AUTH_TOKEN: ${{ secrets.LOCALSTACK_API_KEY }}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit / out of scope: Since we are at it we could also update the secrets names. I created a secret called LOCALSTACK_AUTH_TOKEN which we could use here directly. If refers to the same CI auth token (i.e. it has the same content than LOCALSTACK_API_KEY).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice, thanks 😄
i will update the secret in a follow-up PR, already prepared a commit that removes the usage of LOCALSTACK_API_KEY envs

GH_ACTION_VERSION: ${{ (github.event_name == 'pull_request' && github.event.pull_request.head.sha) || github.ref_name }}

- name: Generate random pod name
id: pod_name
run: echo "name=cloud-pods-test-$RANDOM" >> $GITHUB_OUTPUT

- name: Run AWS commands
run: |
Expand All @@ -99,21 +76,29 @@ jobs:
uses: LocalStack/setup-localstack@${{ env.GH_ACTION_VERSION }}
with: |-
{
"state-name": "cloud-pods-test",
"state-name": "${{ steps.pod_name.outputs.name }}",
"state-action": "save",
}
env:
LOCALSTACK_API_KEY: ${{ secrets.LOCALSTACK_API_KEY }}
GH_ACTION_VERSION: ${{ github.event_name == 'pull_request' && github.head_ref || github.ref_name }}
LOCALSTACK_AUTH_TOKEN: ${{ secrets.LOCALSTACK_API_KEY }}
GH_ACTION_VERSION: ${{ (github.event_name == 'pull_request' && github.event.pull_request.head.sha) || github.ref_name }}

- name: Verify Cloud Pod
run: |
localstack pod list | grep ${{ steps.pod_name.outputs.name }}
env:
LOCALSTACK_AUTH_TOKEN: ${{ secrets.LOCALSTACK_API_KEY }}


local-state-test:
name: 'Test Local State Action'
load-cloud-pod-test:
name: 'Test Loading Cloud Pod'
runs-on: ubuntu-latest
needs: cloud-pods-save-test
steps:
- name: ⚡️ Checkout the repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6

- name: Start LocalStack
- name: Start LocalStack and Load Pod
uses: jenseng/dynamic-uses@8bc24f0360175e710da532c4d19eafdbed489a06 # v1
with:
uses: LocalStack/setup-localstack@${{ env.GH_ACTION_VERSION }}
Expand All @@ -123,31 +108,108 @@ jobs:
"install-awslocal": "true",
"configuration": "DEBUG=1",
"use-pro": "true",
"state-name": "cloud-pods-test",
"state-action": "load",
"state-backend": "local",
"state-name": "${{ needs.cloud-pods-save-test.outputs.pod-name }}",
"state-action": "load"
}
env:
LOCALSTACK_API_KEY: ${{ secrets.LOCALSTACK_API_KEY }}
GH_ACTION_VERSION: ${{ github.event_name == 'pull_request' && github.head_ref || github.ref_name }}
LOCALSTACK_AUTH_TOKEN: ${{ secrets.LOCALSTACK_API_KEY }}
GH_ACTION_VERSION: ${{ (github.event_name == 'pull_request' && github.event.pull_request.head.sha) || github.ref_name }}

- name: Run AWS Commands
- name: Verify loaded resources
run: |
awslocal s3 mb s3://test
awslocal s3 rb s3://test
awslocal sqs create-queue --queue-name test-queue
awslocal sqs delete-queue --queue-url $(awslocal sqs get-queue-url --queue-name test-queue --output text)
echo "Verifying S3 bucket..."
awslocal s3 ls | grep "test"
echo "Verifying SQS queue..."
awslocal sqs list-queues | grep "test-queue"

- name: Clean up remote pod
run: localstack pod delete ${{ needs.cloud-pods-save-test.outputs.pod-name }}
env:
LOCALSTACK_AUTH_TOKEN: ${{ secrets.LOCALSTACK_API_KEY }}


- name: Verify successful cleanup of Cloud Pod
run: |
echo "Verifying that the pod has been deleted..."
if localstack pod list | grep -q ${{ needs.cloud-pods-save-test.outputs.pod-name }}; then
echo "Cleanup failed! Pod ${{ needs.cloud-pods-save-test.outputs.pod-name }} was not deleted."
exit 1
fi
echo "Pod successfully deleted."
env:
LOCALSTACK_AUTH_TOKEN: ${{ secrets.LOCALSTACK_API_KEY }}


local-state-save-test:
name: 'Test Local State Save Action'
runs-on: ubuntu-latest
steps:
- name: ⚡️ Checkout the repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6

- name: Start LocalStack
uses: jenseng/dynamic-uses@8bc24f0360175e710da532c4d19eafdbed489a06 # v1
with:
uses: LocalStack/setup-localstack@${{ env.GH_ACTION_VERSION }}
with: |-
{
"image-tag": "latest",
"install-awslocal": "true",
"configuration": "DEBUG=1",
"use-pro": "true",
}
env:
LOCALSTACK_AUTH_TOKEN: ${{ secrets.LOCALSTACK_API_KEY }}
GH_ACTION_VERSION: ${{ (github.event_name == 'pull_request' && github.event.pull_request.head.sha) || github.ref_name }}

- name: Run AWS commands
run: |
awslocal s3 mb s3://test-local
awslocal sqs create-queue --queue-name test-queue-local

- name: Save the State Artifact
uses: jenseng/dynamic-uses@8bc24f0360175e710da532c4d19eafdbed489a06 # v1
with:
uses: LocalStack/setup-localstack@${{ env.GH_ACTION_VERSION }}
with: |-
{
"state-name": "cloud-pods-test",
"state-name": "local-pods-test",
"state-action": "save",
"state-backend": "local",
}
env:
LOCALSTACK_API_KEY: ${{ secrets.LOCALSTACK_API_KEY }}
LOCALSTACK_AUTH_TOKEN: ${{ secrets.LOCALSTACK_API_KEY }}
GH_ACTION_VERSION: ${{ (github.event_name == 'pull_request' && github.event.pull_request.head.sha) || github.ref_name }}

local-state-load-test:
name: 'Test Local State Load Action'
needs: local-state-save-test
runs-on: ubuntu-latest
steps:
- name: ⚡️ Checkout the repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6

- name: Start LocalStack
uses: jenseng/dynamic-uses@8bc24f0360175e710da532c4d19eafdbed489a06 # v1
with:
uses: LocalStack/setup-localstack@${{ env.GH_ACTION_VERSION }}
with: |-
{
"image-tag": "latest",
"install-awslocal": "true",
"configuration": "DEBUG=1",
"use-pro": "true",
"state-name": "local-pods-test",
"state-action": "load",
"state-backend": "local",
}
env:
LOCALSTACK_AUTH_TOKEN: ${{ secrets.LOCALSTACK_API_KEY }}
GH_ACTION_VERSION: ${{ github.event_name == 'pull_request' && github.head_ref || github.ref_name }}

- name: Run AWS Commands
run: |
echo "Verifying S3 bucket..."
awslocal s3 ls | grep "test-local"
echo "Verifying SQS queue..."
awslocal sqs list-queues | grep "test-queue-local"
7 changes: 4 additions & 3 deletions .github/workflows/ephemeral.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
name: LocalStack Ephemeral Instance Test
on: pull_request
on:
workflow_dispatch:

jobs:
preview-test:
Expand All @@ -26,7 +27,7 @@ jobs:
}
env:
LOCALSTACK_API_KEY: ${{ secrets.LOCALSTACK_API_KEY }}
GH_ACTION_VERSION: ${{ github.event_name == 'pull_request' && github.head_ref || github.ref_name }}
GH_ACTION_VERSION: ${{ (github.event_name == 'pull_request' && github.event.pull_request.head.sha) || github.ref_name }}
PREVIEW_CMD: |-
awslocal s3 mb s3://test-bucket
awslocal sqs create-queue --queue-name=test-queue
Expand Down Expand Up @@ -78,4 +79,4 @@ jobs:
}
env:
LOCALSTACK_API_KEY: ${{ secrets.LOCALSTACK_API_KEY }}
GH_ACTION_VERSION: ${{ github.event_name == 'pull_request' && github.head_ref || github.ref_name }}
GH_ACTION_VERSION: ${{ (github.event_name == 'pull_request' && github.event.pull_request.head.sha) || github.ref_name }}