Skip to content

Commit

Permalink
code refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
ankit-privado committed Sep 19, 2024
1 parent 91a1016 commit 97474ce
Showing 1 changed file with 63 additions and 38 deletions.
101 changes: 63 additions & 38 deletions .github/workflows/comparison-results.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,34 +16,38 @@ env:
PR_NUMBER: ${{ github.event.number }}
REPOSITORY_NAME: ${{github.event.repository.name}}
PR_URL: ${{ github.event.pull_request.html_url }}
SLACK_BOT_TOKEN: ${{ secrets.SLACK_TOKEN }}
SLACK_CHANNEL_ID: ${{ secrets.SLACK_CHANNEL_ID }}
AWS_REGION: ${{ secrets.AWS_REGION }}
MONITORING_REPO_PATH: "/home/runner/work/privado-core/privado-core/temp/standalone-monitoring-stability"

jobs:
start_workflow:
runs-on: ubuntu-latest
env:
PR_URL=${{ github.event.pull_request.html_url }}
runs-on: ubuntu-22.04 # We are version-locking this to avoid breaking changes in the future
steps:
- name: Send message to slack
id: initial-message
uses: slackapi/[email protected]
with:
channel-id: ${{ secrets.SLACK_CHANNEL_ID }}
slack-message : "Comparison workflow started for ${{env.PR_URL}}"
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_TOKEN }}

- name: Save output to env
id: save-output
run: echo "INIT_MSG_TS=${{ steps.initial-message.outputs.ts }}" >> $GITHUB_OUTPUT
outputs:
init_message_ts: ${{steps.save-output.outputs.INIT_MSG_TS}}
setup_and_scan:
permissions: # Need these permissions for the job to create a JWT to authenticate with AWS
id-token: 'write'
contents: 'read'
needs: start_workflow
strategy:
matrix:
language: ['java-1', 'java-2' ,'python', 'js', 'ruby-1', 'ruby-2', 'go', 'kotlin', 'php', 'csharp']
timeout-minutes: 30
continue-on-error: true
runs-on: ubuntu-latest
runs-on: comparison-result-worker
steps:
- uses: actions/checkout@v3
- name: Install JDK-18
Expand All @@ -57,6 +61,7 @@ jobs:

- name: Install sbt
run: mkdir -p ~/bin && curl -Ls https://raw.githubusercontent.com/dwijnand/sbt-extras/master/sbt > ~/bin/sbt && chmod 0755 ~/bin/sbt

- name: Install Python 3.10
uses: actions/setup-python@v4
with:
Expand All @@ -69,61 +74,83 @@ jobs:
path: ./temp/standalone-monitoring-stability
ref: private-fork

# langauge specific repository file
- name: Configure AWS Credentials
uses: aws-actions/configure-aws-credentials@v3
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ env.AWS_REGION }}

- name: Run the script for ${{ env.HEAD_REF }} and ${{ env.BASE_REF }}
run: cd ./temp/standalone-monitoring-stability && pip install -r requirements.txt && python3 ./run.py -r ./repos/${{matrix.language}}.txt -b ${{ env.BASE_REF }} -h ${{ env.HEAD_REF }} -bcr ${{ env.BASE_CORE_URL }} -hcr ${{ env.HEAD_CORE_URL }} -guf

- name: Run aws-export
run: cd ./temp/standalone-monitoring-stability/ && python3 aws-export.py ${{matrix.language}}-${{ env.PR_NUMBER }}

- name: Move results to a folder
run: cd ./temp/standalone-monitoring-stability/ && mkdir results && mv output-${{matrix.language}}-${{ env.PR_NUMBER }}.xlsx ./results/output-${{matrix.language}}-${{ env.PR_NUMBER }}.xlsx && mv ./temp/result-${{matrix.language}}-${{ env.PR_NUMBER }}.zip ./results/result-${{matrix.language}}-${{ env.PR_NUMBER }}.zip && mv slack_summary.txt ./results/slack_summary.txt

# Zip the results by name
# Rename result files, and zip them together
- name: Zip the results
run: cd /home/runner/work/privado-core/privado-core/temp/standalone-monitoring-stability && zip result-${{matrix.language}}-${{ env.PR_NUMBER }}.zip -r ./results
env:
FILE_SUFFIX: ${{ matrix.language }}-${{ env.PR_NUMBER }}
run: |
cd ./temp/standalone-monitoring-stability/
mv output.xlsx output-${{ env.FILE_SUFFIX }}.xlsx
zip -r ./result-${{ env.FILE_SUFFIX }}.zip ./temp/result
mkdir results
mv output-${{matrix.language}}-${{github.event.number}}.xlsx ./results/output-${{ env.FILE_SUFFIX }}.xlsx
mv ./result-${{matrix.language}}-${{github.event.number}}.zip ./results/result-${{ env.FILE_SUFFIX }}.zip
mv slack_summary.txt ./results/slack_summary.txt
cd ${{ env.MONITORING_REPO_PATH }} && zip result-${{ env.FILE_SUFFIX }}.zip -r ./results
- name: Upload to S3
env:
FILE_SUFFIX: ${{ matrix.language }}-${{ env.PR_NUMBER }}
AWS_DEFAULT_REGION: ap-south-1
run: cd ${{ env.MONITORING_REPO_PATH }} && aws s3 cp result-${{ env.FILE_SUFFIX }}.zip ${{ secrets.S3_BUCKET }}

- name: Create a presigned S3 URL
env:
FILE_SUFFIX: ${{ matrix.language }}-${{ env.PR_NUMBER }}
AWS_DEFAULT_REGION: ${{ env.AWS_REGION }}
TTL: 604800
run: echo "S3_URL=$(aws s3 presign ${{ secrets.S3_BUCKET }}/result-${{ env.FILE_SUFFIX }}.zip --expires-in ${{ env.TTL }} --region ${{ env.AWS_DEFAULT_REGION }} --endpoint-url https://s3.${{ env.AWS_DEFAULT_REGION }}.amazonaws.com)" >> $GITHUB_ENV

- name: Set summary variable
run: |
echo "MESSAGE<<EOF" >> $GITHUB_ENV
echo "$(cat /home/runner/work/privado-core/privado-core/temp/standalone-monitoring-stability/results/slack_summary.txt)" >> $GITHUB_ENV
echo "$(cat ${{ env.MONITORING_REPO_PATH }}/results/slack_summary.txt)" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
- name: Post results to slack
run: curl -o- https://raw.githubusercontent.com/Privado-Inc/standalone-monitoring-stability/private-fork/slack_upload.sh | bash
env:
SLACK_TOKEN: ${{ secrets.SLACK_TOKEN }}
SLACK_CHANNEL_ID: ${{ secrets.SLACK_CHANNEL_ID }}
FILE_NAME: "result-${{matrix.language}}-${{ env.PR_NUMBER }}.zip"
INIT_TS: ${{ needs.start_workflow.outputs.init_message_ts }}
FILE_PATH: "/home/runner/work/joern/joern/temp/standalone-monitoring-stability/result-${{matrix.language}}-${{ env.PR_NUMBER }}.zip"
PR_MESSAGE: "Comparison Results generated on ${{ env.REPOSITORY_NAME }} by PR ${{ env.PR_NUMBER }} from branch ${{ env.HEAD_REF }} to ${{ env.BASE_REF }} \nPR link ${{ env.PR_URL }}\n Language: ${{matrix.language}} \nSummary Report:\n ${{ env.MESSAGE }}"

PR_MESSAGE: "Comparison Results generated on ${{ env.REPOSITORY_NAME }} by PR ${{ env.PR_NUMBER }} from branch ${{ env.HEAD_REF }} to ${{ env.BASE_REF }} \nPR link ${{ env.PR_URL }}\n Language: ${{matrix.language}} \nSummary Report:\n ${{ env.MESSAGE }}\n Download report <${{ env.S3_URL }}|here> :link:"
run: |
curl -X POST -H "Authorization: Bearer ${{ secrets.SLACK_TOKEN }}" \
-H "Content-type: application/json" \
--data '{
"channel": "'${{ secrets.SLACK_CHANNEL_ID }}'",
"text": "'"${{ env.PR_MESSAGE }}"'",
"thread_ts": "'"${{ needs.start_workflow.outputs.init_message_ts }}"'",
}' \
https://slack.com/api/chat.postMessage
- name: Export workflow output
run: cd ./temp/standalone-monitoring-stability && python3 ./workflow_check.py /home/runner/work/privado-core/privado-core/temp/standalone-monitoring-stability/results/slack_summary.txt
run: cd ./temp/standalone-monitoring-stability && python3 ./workflow_check.py ${{ env.MONITORING_REPO_PATH }}/results/slack_summary.txt

- name: Set summary variable
run: |
echo "MESSAGE<<EOF" >> $GITHUB_ENV
echo "$(cat ./temp/standalone-monitoring-stability/action_result.txt)" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
- name: Print action result
run: cat ./temp/standalone-monitoring-stability/action_result.txt

- name: Upload summary file
uses: actions/upload-artifact@master
with:
name: ${{matrix.language}}
path: /home/runner/work/privado-core/privado-core/temp/standalone-monitoring-stability/results/slack_summary.txt
path: ${{ env.MONITORING_REPO_PATH }}/results/slack_summary.txt

- name: Workflow report analysis
if: ${{ env.MESSAGE != 'true' }}
run: exit 1

collate_summary:
needs: [start_workflow, setup_and_scan]
runs-on: ubuntu-latest
runs-on: ubuntu-22.04
steps:
- name: Download summary file
uses: actions/download-artifact@master
Expand All @@ -135,28 +162,26 @@ jobs:
with:
python-version: '3.10'

- name: Clone standalone-monitoring-stability/flow-test
- name: Clone standalone-monitoring-stability/private-fork
uses: actions/checkout@v3
with:
repository: Privado-Inc/standalone-monitoring-stability
path: ./temp/standalone-monitoring-stability
ref: main
ref: private-fork

- name: Collate summary
run: cd ./temp/standalone-monitoring-stability && pip install -r requirements.txt && python3 ./collate_summary.py -s /home/runner/work/privado-core/privado-core/language_summary

- name: Set summary variable
run: |
echo "MESSAGE<<EOF" >> $GITHUB_ENV
echo "$(cat /home/runner/work/privado-core/privado-core/temp/standalone-monitoring-stability/global_summary.txt)" >> $GITHUB_ENV
echo "$(cat ${{ env.MONITORING_REPO_PATH }}/global_summary.txt)" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
- name: Send summary to slack
uses: slackapi/slack-github-action@v1.24.0
uses: slackapi/slack-github-action@v1.27.0
with:
update-ts: ${{needs.start_workflow.outputs.init_message_ts}}
channel-id: ${{ secrets.SLACK_CHANNEL_ID }}
slack-message: "\nComparison Results generated on ${{ env.REPOSITORY_NAME }} by PR ${{ env.PR_NUMBER }} from branch ${{ env.HEAD_REF }} to ${{ env.BASE_REF }} \nPR link https://github.com/Privado-Inc/privado-core/pull/${{ env.PR_NUMBER }}\nLanguage: All \nSummary Report:\n ${{ env.MESSAGE }}"
slack-message: "\nComparison Results generated on ${{ env.REPOSITORY_NAME }} by PR ${{ env.PR_NUMBER }} from branch ${{ env.HEAD_REF }} to ${{ env.BASE_REF }} \nPR link ${{ env.PR_URL }}\nLanguage: All \nSummary Report:\n ${{ env.MESSAGE }}"
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_TOKEN }}

SLACK_BOT_TOKEN: ${{ secrets.SLACK_TOKEN }}

0 comments on commit 97474ce

Please sign in to comment.