flowchart LR
subgraph upload
files[("file(s)")]
data-provider["👤 Data Provider"]
end
subgraph download
data-receiver["👤 Data Receiver"]
files2[("file(s)")]
end
bucket[\"Cloud Storage\n Bucket"/]
files --> |to| bucket
data-provider --> |uploads| files
bucket --> |provides\naccess to| files2
files2 --> |received by| data-receiver
This project is a Cookiecutter template for creating a Cloud Storage bucket on Google Cloud with a service account and related key to enable data or file upload and use.
The template uses Terraform to maintain cloud resources. See Terraform readme's under the terraform
directory for documentation on Terraform elements.
Install the latest version of Cookiecutter:
pip install cookiecutter
Generate a Python package project from the template in this repository:
python -m cookiecutter https://github.com/CU-DBMI/gc-cloud-storage-bucket.git
Development for this repository is assisted by the following technologies:
- Poetry: Used to help configure pre-commit for local development work.
- Pre-commit: Used for performing checks within local development environment and via Github Actions automated testing. The following sub-items are used as checks through pre-commit-terraform and require local installation when testing outside of Dagger:
- terraform_docs: Used to automatically generate Terraform-specific documentation.
- tflint: Used to perform static analysis (linting) on Terraform content.
- tfsec: Used to perform security-focused static analysis (security linting) on Terraform content.
- Dagger: Used to help orchestrate reproducible testing within local development environment and for automated testing.
Tests for this project help ensure projects implemented from the Cookiecutter template function as expected.
These tests automatically will use the content found under the directory {{ cookiecutter.project_name }}
to create a project and check the content.
Use dagger-cue
to run the tests.
These tests are also used by a Github Actions workflow to perform the same checks.
Example test command:
# update dagger project (only if needed)
dagger-cue project update
# run the tests
dagger-cue do test