weberc2 / infra Goto Github PK
View Code? Open in Web Editor NEWMy cloud infrastructure
License: GNU General Public License v3.0
My cloud infrastructure
License: GNU General Public License v3.0
aws-cognito-user-pool
module
tf plan
for all targetstf fmt -check
for all tf files in the repo (targets and modules)Concretely for #15 I want to be able to define a golanglambda
project type which will define an s3publish
job that will take a golang
project and publish it to an S3 bucket (plus or minus building it). This requires a dependency from golanglambda.s3publish
on golang.test
and golang.lint
.
In the abstract, we want to be able to express a dependency between any two jobs in the same workflow.
The "key file" concept: pattern-match a directory to infer whether or not it was a project and if so, what its type was--e.g., if a directory contained a terraform.tf file I would regard it as a terraform project, if it had a go.mod file then I would infer it to be a golang project, etc.
This was a neat concept, but it doesn't handle dependencies well (NOTE: I don't have dependencies yet, but I intend to add them soon). Specifically I want to be able to associate a particular project to a list of other project dependencies. Since a project is a (path, type) tuple, it doesn't suffice to drop in an optional DEPENDENCIES file that lists dependency projects because in cases where the project path contains multiple projects (i.e., multiple key files corresponding to different project types) it wouldn't be clear which of those dependencies are associated with which project type.
Instead it seems more natural to create an explicit projects.yaml
file that explicitly defines what project types are associated with the current directory and eventually mapping those types to their respective lists of dependencies.
For this ticket, it suffices to have a structure with schema {"projects": [{"type": "<type>"}, ...]}
.
For each target, we should generate a plan
PR workflow and a apply
merge workflow from a template.
golang
project typegolang-lambda
project type template which builds an artifact and publishes it to the lambda source code bucketWe need a bootstrap target to initialize the resources for managing remote state. The state file for the bootstrap target will live in the bootstrap target directory in the repository, all other targets will use the remote state.
Right now, any job type that wants to declare dependencies on another job type must generate its own needs:
block in its YAML template. We should generate this automatically.
Rather than a job declaring its full YAML block as a text template, we let them define distinct step strings which are then templated.
golanglambda project type should build a Go project, zip it up, and push it to an S3 bucket.
Presently the golint
PR job type is only linting the {{ .Path }}
directory, rather than recursive subdirectories.
terraformtarget
type to specify a dependency on a golanglambda
type.terraformtarget
for a lambda needs to take a parameter (the s3 address for the code artifact) and thread that through to its underlying aws_lambda_function
resource.A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.