Skip to content

Testing

Testing #33

Workflow file for this run

name: Security
on:
schedule:
- cron: "30 5 * * MON-FRI" # Every weekday at 05:30 UTC
workflow_dispatch:
push: # TODO remove after testing
jobs:
zap:
runs-on: moj-cloud-platform
steps:
- uses: actions/checkout@v4
- name: Setup ZAP
uses: ./.github/actions/setup-zap
- name: Setup Firefox
id: firefox
uses: browser-actions/setup-firefox@233224b712fc07910ded8c15fb95a555c86da76f # v1
with:
firefox-version: latest-esr
- name: Replace variables in config file
run: envsubst < "$CONFIG_FILE" > "$CONFIG_FILE.tmp" && mv "$CONFIG_FILE.tmp" "$CONFIG_FILE" && cat "$CONFIG_FILE"
env:
CONFIG_FILE: ${{ github.workspace }}/.zap/autorun.yml
SUMMARY_FILE: ${{ github.workspace }}/.zap/summary.json
ZAP_USERNAME: ${{ secrets.ZAP_USERNAME }}
ZAP_PASSWORD: ${{ secrets.ZAP_PASSWORD }}
shell: bash
- name: Run scan
run: owasp-zap -cmd -autorun "$CONFIG_FILE" -config selenium.firefoxBinary="$FIREFOX_BINARY"
env:
FIREFOX_BINARY: ${{ steps.firefox.outputs.firefox-path }}
CONFIG_FILE: ${{ github.workspace }}/.zap/autorun.yml
shell: bash
- name: Upload report
uses: actions/upload-artifact@v4
with:
name: zap-report
path: ${{ github.workspace }}/.zap/zap-report
- name: Publish HTML report
uses: JamesIves/github-pages-deploy-action@65b5dfd4f5bcd3a7403bbc2959c144256167464e # v4.5.0
with:
folder: ${{ github.workspace }}/.zap/zap-report
target-folder: zap-report
- name: Add HTML report URL to the job summary
run: echo '[🛡️ OWASP ZAP Report](https://ministryofjustice.github.io/hmpps-manage-a-supervision-ui/zap-report)' | tee -a "$GITHUB_STEP_SUMMARY"
- name: Parse summary
id: summary
run: |
echo "pass=$(jq '.pass // 0' $SUMMARY_FILE)" | tee -a "$GITHUB_OUTPUT"
echo "fail=3" | tee -a "$GITHUB_OUTPUT"
echo "warn=$(jq '.warn // 0' $SUMMARY_FILE)" | tee -a "$GITHUB_OUTPUT"
env:
SUMMARY_FILE: ${{ github.workspace }}/.zap/summary.json
shell: bash
- name: Send message to Slack
uses: slackapi/slack-github-action@6c661ce58804a1a20f6dc5fbee7f0381b469e001 # v1.25.0
if: steps.summary.outputs.failed != '0'
with:
channel-id: probation-integration-notifications
payload: |
{
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "🛡️ *Manage a Supervision* ZAP report"
}
},
{
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": ">${{ steps.summary.outputs.pass }} tests passed, ${{ steps.summary.outputs.fail }} failed, and there were ${{ steps.summary.outputs.warn }} warnings."
}
]
},
{
"type": "actions",
"elements": [
{
"type": "button",
"text": {
"type": "plain_text",
"text": "📈 Report"
},
"url": "https://ministryofjustice.github.io/hmpps-manage-a-supervision-ui/zap-report"
},
{
"type": "button",
"text": {
"type": "plain_text",
"text": "📝 Logs"
},
"url": "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
}
]
}
]
}
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}