Skip to content

Commit

Permalink
ci: integration setups
Browse files Browse the repository at this point in the history
  • Loading branch information
MadsRC authored Apr 15, 2024
1 parent 4372fe1 commit 49af380
Show file tree
Hide file tree
Showing 12 changed files with 220 additions and 29 deletions.
51 changes: 51 additions & 0 deletions .github/workflows/endorlabs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.

name: Endor Labs
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
schedule:
- cron: '15 13 * * 6'
jobs:
scan:
permissions:
security-events: write # Used to upload sarif artifact to GitHub
contents: read # Used to checkout a private repository by actions/checkout.
actions: read # Required for private repositories to upload sarif files. GitHub Advanced Security licenses are required.
id-token: write # Used for keyless authentication to Endor Labs
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
#### Package Build Instructions
### Use this section to define the build steps used by your software package.
### Endor Labs builds your software for you where possible but the required build tools must be made available.
# - name: Setup Java
# uses: actions/setup-java@v3
# with:
# distribution: 'microsoft'
# java-version: '17'
# - name: Build Package
# run: mvn clean install
- name: Endor Labs scan pull request
if: github.event_name == 'pull_request'
uses: endorlabs/github-action@1aedae63420c07dda7f0a7cf76ecfbce5b698170
with:
namespace: "madsrc" # Modify the namespace to your Endor Labs tenant namespace.
sarif_file: findings.sarif
- name: Endor Labs scan monitor
if: github.event_name == 'push'
uses: endorlabs/github-action@1aedae63420c07dda7f0a7cf76ecfbce5b698170
with:
namespace: "madsrc" # Modify the namespace to your Endor Labs tenant namespace.
pr: "false"
sarif_file: findings.sarif
- name: Upload SARIF to github
uses: github/codeql-action/upload-sarif@9885f86fab4879632b7e44514f19148225dfbdcd
with:
sarif_file: findings.sarif
73 changes: 73 additions & 0 deletions .github/workflows/scorecard.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# This workflow uses actions that are not certified by GitHub. They are provided
# by a third-party and are governed by separate terms of service, privacy
# policy, and support documentation.

name: Scorecard supply-chain security
on:
# For Branch-Protection check. Only the default branch is supported. See
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection
branch_protection_rule:
# To guarantee Maintained check is occasionally updated. See
# https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained
schedule:
- cron: '17 6 * * 1'
push:
branches: [ "main" ]

# Declare default permissions as read only.
permissions: read-all

jobs:
analysis:
name: Scorecard analysis
runs-on: ubuntu-latest
permissions:
# Needed to upload the results to code-scanning dashboard.
security-events: write
# Needed to publish results and get a badge (see publish_results below).
id-token: write
# Uncomment the permissions below if installing in a private repository.
# contents: read
# actions: read

steps:
- name: "Checkout code"
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
with:
persist-credentials: false

- name: "Run analysis"
uses: ossf/scorecard-action@0864cf19026789058feabb7e87baa5f140aac736 # v2.3.1
with:
results_file: results.sarif
results_format: sarif
# (Optional) "write" PAT token. Uncomment the `repo_token` line below if:
# - you want to enable the Branch-Protection check on a *public* repository, or
# - you are installing Scorecard on a *private* repository
# To create the PAT, follow the steps in https://github.com/ossf/scorecard-action?tab=readme-ov-file#authentication-with-fine-grained-pat-optional.
# repo_token: ${{ secrets.SCORECARD_TOKEN }}

# Public repositories:
# - Publish results to OpenSSF REST API for easy access by consumers
# - Allows the repository to include the Scorecard badge.
# - See https://github.com/ossf/scorecard-action#publishing-results.
# For private repositories:
# - `publish_results` will always be set to `false`, regardless
# of the value entered here.
publish_results: true

# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
# format to the repository Actions tab.
- name: "Upload artifact"
uses: actions/upload-artifact@97a0fba1372883ab732affbe8f94b823f91727db # v3.pre.node20
with:
name: SARIF file
path: results.sarif
retention-days: 5

# Upload the results to GitHub's code scanning dashboard (optional).
# Commenting out will disable upload of results to your repo's Code Scanning dashboard
- name: "Upload to code-scanning"
uses: github/codeql-action/upload-sarif@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9
with:
sarif_file: results.sarif
22 changes: 22 additions & 0 deletions .github/workflows/sonarcloud.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
on:
# Trigger analysis when pushing in master or pull requests, and when creating
# a pull request.
push:
branches:
- master
pull_request:
types: [opened, synchronize, reopened]
name: SonarCloud analysis
jobs:
sonarcloud:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
# Disabling shallow clone is recommended for improving relevancy of reporting
fetch-depth: 0
- name: SonarCloud Scan
uses: sonarsource/sonarcloud-github-action@49e6cd3b187936a73b8280d59ffd9da69df63ec9
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
4 changes: 4 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,9 @@
"python.testing.pytestEnabled": true,
"files.exclude": {
"**/__pycache__": true
},
"sonarlint.connectedMode.project": {
"connectionId": "madsrc",
"projectKey": "MadsRC_sophrosyne"
}
}
23 changes: 8 additions & 15 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,6 @@ dist/sophrosyne-$(VERSION)-py3-none-any.whl: src/sophrosyne/* src/sophrosyne/grp
@mkdir -p $(@D)
poetry build --format=wheel

dist/bruno.tar:
mkdir -p $(@D)
docker build -t bruno:latest -f bruno.dockerfile --no-cache --attest=type=provenance,mode=max --attest=type=sbom --platform=linux/arm64 --output type=oci,dest=- . > $@

dist/sophrosyne.tar: dist/sophrosyne-$(VERSION)-py3-none-any.whl build/requirements.txt
mkdir -p $(@D)
docker build --build-arg="dist_file=sophrosyne-$(VERSION)-py3-none-any.whl" --secret id=requirements,src=build/requirements.txt --no-cache --tag sophrosyne:$(VERSION) --attest=type=provenance,mode=max --attest=type=sbom --platform=linux/arm64 --output type=oci,dest=- . > $@
Expand Down Expand Up @@ -60,26 +56,19 @@ build/.image_loaded_sentinel: dist/sophrosyne.tar
@printf "\n"
touch $@

build/.bruno_image_loaded_sentinel: dist/bruno.tar
mkdir -p $(@D)
docker load --input dist/bruno.tar
@# For some reason the previous command doesn't include a newline in its output
@printf "\n"
touch $@

build/integration/root_token:
mkdir -p $(@D)
openssl rand -hex 128 > $@


.PHONY: test/integration
test/integration: test/integration/healthy_instance test/integration/auth01
test/integration: test/integration/healthy_instance test/integration/auth01 test/integration/auth_required

.PHONY: test/integration/%
test/integration/%: build/.certificate_sentinel build/.bruno_image_loaded_sentinel build/.image_loaded_sentinel build/integration/root_token
$(MAKE) destroy/test/integration/%
test/integration/%: build/.certificate_sentinel build/.image_loaded_sentinel build/integration/root_token
$(MAKE) destroy/test/integration/$*
VERSION=$(VERSION) ROOT_TOKEN="$$(cat build/integration/root_token)" docker compose -f tests/integration/$*/docker-compose.yml up --exit-code-from tester
$(MAKE) destroy/test/integration/%
$(MAKE) destroy/test/integration/$*

.PHONY: destroy/test/integration/%
destroy/test/integration/%:
Expand All @@ -106,3 +95,7 @@ build/.certificate_sentinel:
chmod 0777 build/server.key
chmod 0777 build/server.crt
touch $@

.PHONY:
dev/install:
poetry install --with dev,test
10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
# Sophrosyne

[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=MadsRC_sophrosyne&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=MadsRC_sophrosyne)
[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=MadsRC_sophrosyne&metric=bugs)](https://sonarcloud.io/summary/new_code?id=MadsRC_sophrosyne)
[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=MadsRC_sophrosyne&metric=code_smells)](https://sonarcloud.io/summary/new_code?id=MadsRC_sophrosyne)
[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=MadsRC_sophrosyne&metric=coverage)](https://sonarcloud.io/summary/new_code?id=MadsRC_sophrosyne)
[![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=MadsRC_sophrosyne&metric=duplicated_lines_density)](https://sonarcloud.io/summary/new_code?id=MadsRC_sophrosyne)
[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/MadsRC/sophrosyne/badge)](https://securityscorecards.dev/viewer/?uri=github.com/MadsRC/sophrosyne)
[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/8804/badge)](https://www.bestpractices.dev/projects/8804)
![build](https://github.com/ossf/scorecard/workflows/build/badge.svg?branch=main)
![CodeQL](https://github.com/ossf/scorecard/workflows/CodeQL/badge.svg?branch=main)

Sophrosyne is a horizontally scaleable content moderation API built for the
age of Generative AI.

Expand Down
11 changes: 0 additions & 11 deletions bruno.dockerfile

This file was deleted.

47 changes: 47 additions & 0 deletions renovate.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"configMigration": true,
"extends": [
"config:recommended",
"docker:pinDigests",
"helpers:pinGitHubActionDigests",
":pinDevDependencies"
],
"packageRules": [
{
"matchDepTypes": [
"action"
],
"pinDigests": true,
"matchSourceUrlPrefixes": [
"https://github.com/"
],
"prBodyDefinitions": {
"OpenSSF": "[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/{{sourceRepo}}/badge)](https://securityscorecards.dev/viewer/?uri=github.com/{{sourceRepo}})"
},
"prBodyColumns": [
"Package",
"Type",
"Update",
"Change",
"Pending",
"OpenSSF"
]
}
],
"docker-compose": {
"enabled": true
},
"dockerfile": {
"enabled": true
},
"pre-commit": {
"enabled": true
},
"vulnerabilityAlerts": {
"enabled": true,
"labels": [
"vulnerability"
]
}
}
2 changes: 2 additions & 0 deletions sonar-project.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
sonar.projectKey=MadsRC_sophrosyne
sonar.organization=madsrc
2 changes: 1 addition & 1 deletion tests/integration/auth01/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
services:

tester:
image: bruno:latest
image: ghcr.io/madsrc/bru:latest
depends_on:
api:
condition: service_healthy
Expand Down
2 changes: 1 addition & 1 deletion tests/integration/auth_required/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
services:

tester:
image: bruno:latest
image: ghcr.io/madsrc/bru:latest
depends_on:
api:
condition: service_healthy
Expand Down
2 changes: 1 addition & 1 deletion tests/integration/healthy_instance/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
services:

tester:
image: bruno:latest
image: ghcr.io/madsrc/bru:latest
depends_on:
api:
condition: service_healthy
Expand Down

0 comments on commit 49af380

Please sign in to comment.