Skip to content

Commit

Permalink
Merge pull request #28 from geekcell/add-test
Browse files Browse the repository at this point in the history
Adding simple Test
  • Loading branch information
Ic3w0lf authored Jul 11, 2024
2 parents 45c7c1a + 608fb07 commit e10b4f0
Show file tree
Hide file tree
Showing 3 changed files with 183 additions and 30 deletions.
139 changes: 139 additions & 0 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
---
###############
## Run tests ##
###############

#
# Documentation:
# https://help.github.com/en/articles/workflow-syntax-for-github-actions
#

name: Test
on:
pull_request:
push:
branches: [ main ]

##########################
# Prevent duplicate jobs #
##########################
concurrency:
group: ${{ github.repository }}
cancel-in-progress: false

permissions:
id-token: write
contents: read

###############
# Run the job #
###############
jobs:
self-test:
name: Testing
runs-on: ubuntu-latest
steps:
############################
# Checkout the source code #
############################
- name: Checkout
uses: actions/checkout@v4

#############################
# Configure AWS credentials #
#############################
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v4
with:
role-to-assume: arn:aws:iam::${{ vars.AWS_TESTING_ACCOUNT_ID }}:role/${{ vars.AWS_TESTING_ROLE }}
aws-region: ${{ vars.AWS_TESTING_REGION }}
mask-aws-account-id: false

######################
# Test Action itself #
######################
- name: Test With Log Tail
uses: ./
with:
# Pre created
cluster: github-gha
task-definition: arn:aws:ecs:${{ vars.AWS_TESTING_REGION }}:${{ vars.AWS_TESTING_ACCOUNT_ID }}:task-definition/github-gha-alpine

assign-public-ip: 'ENABLED'
security-group-ids: |
sg-09a0ccb78d5be2a25
subnet-ids: |
subnet-08bbfd6c53b0c1049
subnet-0fef13a6bef01f61a
subnet-0a676289b4a27a7fa
tail-logs: true
override-container: alpine
override-container-command: |
/bin/sh
-c
echo "Hello, World!" && \
echo "$TEST_VAR" && \
x=0; while [ $x -le 10 ]; do echo "Sleeping... $x" && x=$(( $x + 1 )) && sleep 2; done
override-container-environment: |
TEST_VAR=foobar123
######################
# Test Action itself #
######################
- name: Test Failure Exit Code
id: expect-fail
continue-on-error: true
uses: ./
with:
# Pre created
cluster: github-gha
task-definition: arn:aws:ecs:${{ vars.AWS_TESTING_REGION }}:${{ vars.AWS_TESTING_ACCOUNT_ID }}:task-definition/github-gha-alpine

assign-public-ip: 'ENABLED'
security-group-ids: |
sg-09a0ccb78d5be2a25
subnet-ids: |
subnet-08bbfd6c53b0c1049
subnet-0fef13a6bef01f61a
subnet-0a676289b4a27a7fa
override-container: alpine
override-container-command: |
/bin/sh
-c
exit 1
##########################
# Check expected failure #
##########################
- name: Check previous for Failure
if: steps.expect-fail.outcome == 'success'
run: |
echo "Expected a failure. Outcome: ${{ steps.expect-fail.outcome }}"
exit 1
######################
# Test Action itself #
######################
- name: Test Fire and Forget
uses: ./
with:
# Pre created
cluster: github-gha
task-definition: arn:aws:ecs:${{ vars.AWS_TESTING_REGION }}:${{ vars.AWS_TESTING_ACCOUNT_ID }}:task-definition/github-gha-alpine

assign-public-ip: 'ENABLED'
security-group-ids: |
sg-09a0ccb78d5be2a25
subnet-ids: |
subnet-08bbfd6c53b0c1049
subnet-0fef13a6bef01f61a
subnet-0a676289b4a27a7fa
task-wait-until-stopped: false
override-container: alpine
override-container-command: |
/bin/sh
-c
x=0; while [ $x -le 10 ]; do echo "Sleeping... $x" && x=$(( $x + 1 )) && sleep 10; done
37 changes: 22 additions & 15 deletions dist/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -74003,12 +74003,16 @@ const main = async () => {
core.setOutput('task-id', taskId);
core.info(`Starting Task with ARN: ${taskArn}\n`);

// Wait for task to be in running state
core.debug(`Waiting for task to be in running state.`)
await waitUntilTasksRunning({
client: ecs,
maxWaitTime: taskStartMaxWaitTime,
}, {cluster, tasks: [taskArn]});
try {
core.debug(`Waiting for task to be in running state. Waiting for ${taskStartMaxWaitTime} seconds.`);
await waitUntilTasksRunning({
client: ecs,
maxWaitTime: taskStartMaxWaitTime,
}, {cluster, tasks: [taskArn]});
} catch (error) {
core.setFailed(`Task did not start successfully. Error: ${error.name}. State: ${error.state}.`);
return;
}

// If taskWaitUntilStopped is false, we can bail out here because we can not tail logs or have any
// information on the exitCodes or status of the task
Expand Down Expand Up @@ -74070,15 +74074,18 @@ const main = async () => {
}
}

// Wait for Task to finish
core.debug(`Waiting for task to finish.`);
await waitUntilTasksStopped({
client: ecs,
maxWaitTime: taskStoppedMaxWaitTime,
}, {
cluster,
tasks: [taskArn],
});
try {
core.debug(`Waiting for task to finish. Waiting for ${taskStoppedMaxWaitTime} seconds.`);
await waitUntilTasksStopped({
client: ecs,
maxWaitTime: taskStoppedMaxWaitTime,
}, {
cluster,
tasks: [taskArn],
});
} catch (error) {
core.setFailed(`Task did not stop successfully. Error: ${error.name}. State: ${error.state}.`);
}

// Close LogStream and store output
if (logFilterStream !== null) {
Expand Down
37 changes: 22 additions & 15 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -105,12 +105,16 @@ const main = async () => {
core.setOutput('task-id', taskId);
core.info(`Starting Task with ARN: ${taskArn}\n`);

// Wait for task to be in running state
core.debug(`Waiting for task to be in running state.`)
await waitUntilTasksRunning({
client: ecs,
maxWaitTime: taskStartMaxWaitTime,
}, {cluster, tasks: [taskArn]});
try {
core.debug(`Waiting for task to be in running state. Waiting for ${taskStartMaxWaitTime} seconds.`);
await waitUntilTasksRunning({
client: ecs,
maxWaitTime: taskStartMaxWaitTime,
}, {cluster, tasks: [taskArn]});
} catch (error) {
core.setFailed(`Task did not start successfully. Error: ${error.name}. State: ${error.state}.`);
return;
}

// If taskWaitUntilStopped is false, we can bail out here because we can not tail logs or have any
// information on the exitCodes or status of the task
Expand Down Expand Up @@ -172,15 +176,18 @@ const main = async () => {
}
}

// Wait for Task to finish
core.debug(`Waiting for task to finish.`);
await waitUntilTasksStopped({
client: ecs,
maxWaitTime: taskStoppedMaxWaitTime,
}, {
cluster,
tasks: [taskArn],
});
try {
core.debug(`Waiting for task to finish. Waiting for ${taskStoppedMaxWaitTime} seconds.`);
await waitUntilTasksStopped({
client: ecs,
maxWaitTime: taskStoppedMaxWaitTime,
}, {
cluster,
tasks: [taskArn],
});
} catch (error) {
core.setFailed(`Task did not stop successfully. Error: ${error.name}. State: ${error.state}.`);
}

// Close LogStream and store output
if (logFilterStream !== null) {
Expand Down

0 comments on commit e10b4f0

Please sign in to comment.