Skip to content

Adding simple Test #28

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Jul 11, 2024
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
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 @@ -76520,12 +76520,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 @@ -76587,15 +76591,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 @@ -106,12 +106,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 @@ -173,15 +177,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
Loading