Dagger
Search

pitc-flow

Secure and compliant software delivery with trust and integrity. 🚀

This module contains ready to use pipelines.
They build and deliver your software / project with security and compliance out of the box.

Installation

dagger install github.com/puzzle/dagger-module-pitc-flow/pitc-flow@v0.3.1

Entrypoint

Return Type
PitcFlow
Example
dagger -m github.com/puzzle/dagger-module-pitc-flow/pitc-flow@66afdc72934f332b628e50635d460081763facc7 call \
func (m *MyModule) Example() *dagger.PitcFlow  {
	return dag.
			PitcFlow()
}
@function
def example() -> dagger.PitcFlow:
	return (
		dag.pitc_flow()
	)
@func()
example(): PitcFlow {
	return dag
		.pitcFlow()
}

Types

PitcFlow 🔗

flex() 🔗

Executes only the desired steps and returns a directory with the results

Return Type
Directory !
Arguments
NameTypeDefault ValueDescription
dirDirectory !-

source directory

lintContainerContainer -

lint container

lintReportDirString -

lint report folder name e.g. “lint.json”

sastContainerContainer -

sast container

sastReportDirString -

security scan report folder name e.g. “/app/brakeman-output.tabs”

testContainerContainer -

test container

testReportDirString -

test report folder name e.g. “/mnt/test/reports”

integrationTestContainerContainer -

integration test container

integrationTestReportDirString -

integration test report folder name e.g. “/mnt/int-test/reports”

registryUsernameString -

registry username for publishing the container image

registryPasswordSecret -

registry password for publishing the container image

registryAddressString -

registry address registry/repository/image:tag

dtAddressString -

deptrack address for publishing the SBOM https://deptrack.example.com/api/v1/bom

dtProjectUuidString -

deptrack project UUID

dtApiKeySecret -

deptrack API key

Example
dagger -m github.com/puzzle/dagger-module-pitc-flow/pitc-flow@66afdc72934f332b628e50635d460081763facc7 call \
 flex --dir DIR_PATH
func (m *MyModule) Example(dir *dagger.Directory) *dagger.Directory  {
	return dag.
			PitcFlow().
			Flex(dir)
}
@function
def example(dir: dagger.Directory) -> dagger.Directory:
	return (
		dag.pitc_flow()
		.flex(dir)
	)
@func()
example(dir: Directory): Directory {
	return dag
		.pitcFlow()
		.flex(dir)
}

full() 🔗

Executes all the steps and returns a directory with the results

Return Type
Directory !
Arguments
NameTypeDefault ValueDescription
dirDirectory !-

source directory

lintContainerContainer !-

lint container

lintReportDirString !-

lint report folder name e.g. “lint.json”

sastContainerContainer !-

sast container

sastReportDirString !-

security scan report folder name e.g. “/app/brakeman-output.tabs”

testContainerContainer !-

test container

testReportDirString !-

test report folder name e.g. “/mnt/test/reports”

integrationTestContainerContainer !-

integration test container

integrationTestReportDirString !-

integration test report folder name e.g. “/mnt/int-test/reports”

registryUsernameString !-

registry username for publishing the container image

registryPasswordSecret !-

registry password for publishing the container image

registryAddressString !-

registry address registry/repository/image:tag

dtAddressString !-

deptrack address for publishing the SBOM https://deptrack.example.com/api/v1/bom

dtProjectUuidString !-

deptrack project UUID

dtApiKeySecret !-

deptrack API key

Example
dagger -m github.com/puzzle/dagger-module-pitc-flow/pitc-flow@66afdc72934f332b628e50635d460081763facc7 call \
 full --dir DIR_PATH --lint-container IMAGE:TAG --lint-report-dir string --sast-container IMAGE:TAG --sast-report-dir string --test-container IMAGE:TAG --test-report-dir string --integration-test-container IMAGE:TAG --integration-test-report-dir string --registry-username string --registry-password env:MYSECRET --registry-address string --dt-address string --dt-project-uuid string --dt-api-key env:MYSECRET
func (m *MyModule) Example(dir *dagger.Directory, lintContainer *dagger.Container, lintReportDir string, sastContainer *dagger.Container, sastReportDir string, testContainer *dagger.Container, testReportDir string, integrationTestContainer *dagger.Container, integrationTestReportDir string, registryUsername string, registryPassword *dagger.Secret, registryAddress string, dtAddress string, dtProjectUuid string, dtApiKey *dagger.Secret) *dagger.Directory  {
	return dag.
			PitcFlow().
			Full(dir, lintContainer, lintReportDir, sastContainer, sastReportDir, testContainer, testReportDir, integrationTestContainer, integrationTestReportDir, registryUsername, registryPassword, registryAddress, dtAddress, dtProjectUuid, dtApiKey)
}
@function
def example(dir: dagger.Directory, lint_container: dagger.Container, lint_report_dir: str, sast_container: dagger.Container, sast_report_dir: str, test_container: dagger.Container, test_report_dir: str, integration_test_container: dagger.Container, integration_test_report_dir: str, registry_username: str, registry_password: dagger.Secret, registry_address: str, dt_address: str, dt_project_uuid: str, dt_api_key: dagger.Secret) -> dagger.Directory:
	return (
		dag.pitc_flow()
		.full(dir, lint_container, lint_report_dir, sast_container, sast_report_dir, test_container, test_report_dir, integration_test_container, integration_test_report_dir, registry_username, registry_password, registry_address, dt_address, dt_project_uuid, dt_api_key)
	)
@func()
example(dir: Directory, lintContainer: Container, lintReportDir: string, sastContainer: Container, sastReportDir: string, testContainer: Container, testReportDir: string, integrationTestContainer: Container, integrationTestReportDir: string, registryUsername: string, registryPassword: Secret, registryAddress: string, dtAddress: string, dtProjectUuid: string, dtApiKey: Secret): Directory {
	return dag
		.pitcFlow()
		.full(dir, lintContainer, lintReportDir, sastContainer, sastReportDir, testContainer, testReportDir, integrationTestContainer, integrationTestReportDir, registryUsername, registryPassword, registryAddress, dtAddress, dtProjectUuid, dtApiKey)
}

ci() 🔗

Executes all the CI steps (no publishing) and returns a directory with the results

Return Type
Directory !
Arguments
NameTypeDefault ValueDescription
dirDirectory !-

source directory

lintContainerContainer !-

lint container

lintReportDirString !-

lint report folder name e.g. “lint.json”

sastContainerContainer !-

sast container

sastReportDirString !-

security scan report folder name e.g. “/app/brakeman-output.tabs”

testContainerContainer !-

test container

testReportDirString !-

test report folder name e.g. “/mnt/test/reports”

integrationTestContainerContainer !-

integration test container

integrationTestReportDirString !-

integration test report folder name e.g. “/mnt/int-test/reports”

Example
dagger -m github.com/puzzle/dagger-module-pitc-flow/pitc-flow@66afdc72934f332b628e50635d460081763facc7 call \
 ci --dir DIR_PATH --lint-container IMAGE:TAG --lint-report-dir string --sast-container IMAGE:TAG --sast-report-dir string --test-container IMAGE:TAG --test-report-dir string --integration-test-container IMAGE:TAG --integration-test-report-dir string
func (m *MyModule) Example(dir *dagger.Directory, lintContainer *dagger.Container, lintReportDir string, sastContainer *dagger.Container, sastReportDir string, testContainer *dagger.Container, testReportDir string, integrationTestContainer *dagger.Container, integrationTestReportDir string) *dagger.Directory  {
	return dag.
			PitcFlow().
			Ci(dir, lintContainer, lintReportDir, sastContainer, sastReportDir, testContainer, testReportDir, integrationTestContainer, integrationTestReportDir)
}
@function
def example(dir: dagger.Directory, lint_container: dagger.Container, lint_report_dir: str, sast_container: dagger.Container, sast_report_dir: str, test_container: dagger.Container, test_report_dir: str, integration_test_container: dagger.Container, integration_test_report_dir: str) -> dagger.Directory:
	return (
		dag.pitc_flow()
		.ci(dir, lint_container, lint_report_dir, sast_container, sast_report_dir, test_container, test_report_dir, integration_test_container, integration_test_report_dir)
	)
@func()
example(dir: Directory, lintContainer: Container, lintReportDir: string, sastContainer: Container, sastReportDir: string, testContainer: Container, testReportDir: string, integrationTestContainer: Container, integrationTestReportDir: string): Directory {
	return dag
		.pitcFlow()
		.ci(dir, lintContainer, lintReportDir, sastContainer, sastReportDir, testContainer, testReportDir, integrationTestContainer, integrationTestReportDir)
}

verify() 🔗

Verifies if the run was succesful and returns the error messages

Return Type
String !
Arguments
NameTypeDefault ValueDescription
statusFile !-

status.txt file to be verified

Example
dagger -m github.com/puzzle/dagger-module-pitc-flow/pitc-flow@66afdc72934f332b628e50635d460081763facc7 call \
 verify --status file:path
func (m *MyModule) Example(ctx context.Context, status *dagger.File) string  {
	return dag.
			PitcFlow().
			Verify(ctx, status)
}
@function
async def example(status: dagger.File) -> str:
	return await (
		dag.pitc_flow()
		.verify(status)
	)
@func()
async example(status: File): Promise<string> {
	return dag
		.pitcFlow()
		.verify(status)
}