Skip to content

Commit

Permalink
Check and deploy workflows
Browse files Browse the repository at this point in the history
  • Loading branch information
natefoo committed Oct 6, 2022
1 parent 1c43a32 commit d951b23
Show file tree
Hide file tree
Showing 5 changed files with 268 additions and 1 deletion.
195 changes: 195 additions & 0 deletions .ci/tapview
Original file line number Diff line number Diff line change
@@ -0,0 +1,195 @@
#! /bin/sh
# tapview - a TAP (Test Anything Protocol) viewer in pure POSIX shell
#
# Copyright by Eric S. Raymond
#
# This code is intended to be embedded in your project. The author
# grants permission for it to be distributed under the prevailing
# license of your project if you choose, provided that license is
# OSD-compliant; otherwise the following SPDX tag incorporates a
# license by reference.
#
# SPDX-License-Identifier: BSD-2-Clause
#
# This is version 1.3
# A newer version may be available at https://gitlab.com/esr/tapview
#
# POSIX allows but does not mandate that -n suppresses emission of a
# trailing newline in echo. Thus, some shell builtin echos don't do
# that. Cope gracefully.
# shellcheck disable=SC2039
if [ "$(echo -n "a"; echo "b")" = "ab" ]
then
ECHO="echo"
elif [ "$(/bin/echo -n "a"; /bin/echo "b")" = "ab" ]
then
ECHO="/bin/echo"
else
echo "tapview: bailing out, your echo lacks -n support."
exit 3
fi

OK="."
FAIL="F"
SKIP="s"
TODO_NOT_OK="x"
TODO_OK="u"

ship_char() {
# shellcheck disable=SC2039
"${ECHO}" -n "$1"
}

ship_line() {
report="${report}${1}\n"
}

testcount=0
failcount=0
skipcount=0
todocount=0
test_before_plan=no
test_after_plan=no
expect=""
status=0

report=""
IFS=""
state=start
while read -r line
do
if expr "$line" : "Bail out!" >/dev/null
then
ship_line "$line"
status=2
break
fi
# Process a plan line
if expr "$line" : '1\.\.[0-9][0-9]*' >/dev/null
then
if [ "$expect" != "" ]
then
if [ "${testcount}" -gt 0 ]
then
echo ""
fi
ship_line "tapview: cannot have more than one plan line."
echo "${report}"
exit 1
fi
if expr "$line" : ".* *SKIP" >/dev/null || expr "$line" : ".* *skip" >/dev/null
then
ship_line "$line"
echo "${report}"
exit 1 # Not specified in the standard whether this should exit 1 or 0
fi
expect=$(expr "$line" : '1\.\.\([0-9][0-9]*\)')
continue
fi
# Process an ok line
if expr "$line" : "ok" >/dev/null
then
testcount=$((testcount + 1))
if [ "$expect" = "" ]
then
test_before_plan=yes
else
test_after_plan=yes
fi
if expr "$line" : ".*# *TODO" >/dev/null || expr "$line" : ".*# *todo" >/dev/null
then
ship_char ${TODO_OK}
ship_line "$line"
todocount=$((todocount + 1))
elif expr "$line" : ".*# *SKIP" >/dev/null || expr "$line" : ".*# *skip" >/dev/null
then
ship_char ${SKIP}
ship_line "$line"
skipcount=$((skipcount + 1))
else
ship_char ${OK}
fi
state=ok
continue
fi
# Process a not-ok line
if expr "$line" : "not ok" >/dev/null
then
testcount=$((testcount + 1))
if [ "$expect" = "" ]
then
test_before_plan=yes
else
test_after_plan=yes
fi
if expr "$line" : ".*# *SKIP" >/dev/null || expr "$line" : ".*# *skip" >/dev/null
then
ship_char "${SKIP}"
state=ok
skipcount=$((skipcount + 1))
continue
fi
if expr "$line" : ".*# *TODO" >/dev/null || expr "$line" : ".*# *todo" >/dev/null
then
ship_char ${TODO_NOT_OK}
state=ok
todocount=$((todocount + 1))
continue
fi
ship_char "${FAIL}"
ship_line "$line"
state=not_ok
failcount=$((failcount + 1))
status=1
continue
fi
# shellcheck disable=SC2166
if [ "${state}" = "yaml" ]
then
ship_line "$line"
if expr "$line" : '[ ]*\.\.\.' >/dev/null
then
state=ok
fi
elif expr "$line" : "[ ]*---" >/dev/null
then
ship_line "$line"
state=yaml
fi
done

/bin/echo ""

if [ -z "$expect" ]
then
ship_line "Missing a plan."
status=1
elif [ "$test_before_plan" = "yes" ] && [ "$test_after_plan" = "yes" ]
then
ship_line "A plan line may only be placed before or after all tests."
status=1
elif [ "${expect}" -gt "${testcount}" ]
then
ship_line "Expected ${expect} tests but only ${testcount} ran."
status=1
elif [ "${expect}" -lt "${testcount}" ]
then
ship_line "Expected ${expect} tests but ${testcount} ran."
status=1
fi

report="${report}${testcount} tests, ${failcount} failures"
if [ "$todocount" != 0 ]
then
report="${report}, ${todocount} TODOs"
fi
if [ "$skipcount" != 0 ]
then
report="${report}, ${skipcount} SKIPs"
fi

echo "${report}."

exit "${status}"

# end
40 changes: 40 additions & 0 deletions .github/workflows/check.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Check
on: [pull_request]
jobs:

check:
name: Check rewrite function
runs-on: ubuntu-latest
steps:

- uses: actions/checkout@v2

- uses: actions/setup-python@v4
with:
python-version: '3.9'

- name: Run check
run: ansible-playbook -i hosts check.yaml

- name: Run tapview
if: success() || failure()
run: cat test-results.tap | ./.ci/tapview | tee test-results.txt

- name: Collect tapview output
if: (success() || failure()) && github.event_name == 'pull_request'
run: |
echo 'TEST_RESULTS<<EOF' >> $GITHUB_ENV
cat test-results.txt >> $GITHUB_ENV
echo 'EOF' >> $GITHUB_ENV
- uses: actions/github-script@v1
if: (success() || failure()) && github.event_name == 'pull_request'
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
github.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: `${{ env.TEST_RESULTS }}`
})
26 changes: 26 additions & 0 deletions .github/workflows/deploy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: Deploy
on:
pull_request:
types:
- closed
paths:
- 'group_vars/**'
- 'templates/lambda_function.py.j2'

jobs:
deploy:
if: github.event.pull_request.merged == true && github.ref == 'main' && github.repository_owner == 'galaxyproject'
name: Deploy rewrite function
runs-on: ubuntu-latest
steps:

- uses: actions/checkout@v2

- name: Install boto3
run: pip install boto3

- name: Run deploy
run: ansible-playbook -i hosts lambda.yaml
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
1 change: 1 addition & 0 deletions group_vars/all.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ gxy_io_rewrites:
- src: /toolshed
dest: https://toolshed.g2.bx.psu.edu/

__hold:
# Conferences and meetings
- src: /bcc
dest: https://live.remo.co/e/bcc-2020
Expand Down
7 changes: 6 additions & 1 deletion lambda.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,12 @@
lambda_function_associations:
- event_type: viewer-request
lambda_function_arn: "{{ gxy_io_lambda_arn }}"
tags: cloudfront
# this can fail for a bit due to:
# The function must be in an Active state. The current state for function arn:...:function:gxy-io-redirect:<new-version> is Pending
register: __gxy_io_cloudfront_deploy
until: __gxy_io_cloudfront_deploy is success
retries: 18
delay: 10

always:

Expand Down

0 comments on commit d951b23

Please sign in to comment.