Create some AWS resources
This commit is contained in:
parent
825aa534c2
commit
452ff5f409
|
@ -1,4 +1,5 @@
|
|||
*.log
|
||||
.env
|
||||
debs
|
||||
node_modules
|
||||
work
|
||||
|
|
28
Makefile
28
Makefile
|
@ -4,10 +4,26 @@ export PATH := bin:$(PATH)
|
|||
debug:
|
||||
node builder/build.js python
|
||||
|
||||
.PHONY: build-image
|
||||
build-image:
|
||||
docker build . -f docker/Dockerfile.build -t riju:build
|
||||
.PHONY: packaging-image
|
||||
packaging-image:
|
||||
docker build . -f docker/packaging/Dockerfile -t riju:packaging
|
||||
|
||||
.PHONY: build-shell
|
||||
build-shell: build-image
|
||||
docker run -it --rm -v $(PWD):/src riju:build
|
||||
.PHONY: runtime-image
|
||||
runtime-image:
|
||||
docker build . -f docker/runtime/Dockerfile -t riju:runtime
|
||||
|
||||
.PHONY: app-image
|
||||
app-image:
|
||||
docker build . -f docker/app/Dockerfile -t riju:app
|
||||
|
||||
.PHONY: packaging-shell
|
||||
packaging-shell:
|
||||
docker run -it --rm -v $(PWD):/src riju:packaging
|
||||
|
||||
.PHONY: runtime-shell
|
||||
runtime-shell:
|
||||
docker run -it --rm -v $(PWD):/src riju:runtime
|
||||
|
||||
.PHONY: pkg
|
||||
pkg:
|
||||
node src/packager/main.js --lang $(LANG)
|
||||
|
|
|
@ -0,0 +1,50 @@
|
|||
# Riju
|
||||
|
||||
For now, this README just has some miscellaneous notes about the build
|
||||
architecture that I'm planning to set up. Later, it will be converted
|
||||
back into a proper README.
|
||||
|
||||
Steps to build Riju from scratch locally:
|
||||
|
||||
* Build the packaging Docker image.
|
||||
* Generate a Debian package for each language.
|
||||
* Build the runtime Docker image.
|
||||
* For each language, install its Debian package into a fresh copy of
|
||||
the runtime Docker image and run its tests.
|
||||
* Install every language's Debian package into a single copy of the
|
||||
runtime Docker image and run all the tests.
|
||||
|
||||
Build artifacts:
|
||||
|
||||
* Packaging image
|
||||
* Runtime image
|
||||
* Debian packages
|
||||
* Application image
|
||||
|
||||
Steps to build Riju from cache locally:
|
||||
|
||||
* *To run:* Pull application image.
|
||||
* *To build application image:* Pull runtime image and all Debian
|
||||
packages.
|
||||
* *To build Debian packages:* Pull packaging image.
|
||||
* *To build runtime image:* Build from scratch.
|
||||
* *To build packaging image:* Build from scratch.
|
||||
|
||||
To manipulate published artifacts we basically want to do atomic
|
||||
updates which keep the integration tests passing. Possible operations:
|
||||
|
||||
* *Rebuild packaging image:* This can be done at any time.
|
||||
* *Rebuild runtime image:* Rebuild application image and verify
|
||||
integration tests are still passing. Do not rebuild any Debian
|
||||
packages.
|
||||
* *Rebuild Debian package:* Verify unit tests are passing. Rebuild
|
||||
application image and verify integration tests are still passing. If
|
||||
rebuilding multiple Debian packages, then we can run the integration
|
||||
tests only once. If rebuilding enough Debian packages, the
|
||||
probability that at least one will fail is very high. We can then
|
||||
trigger a more targeted update. This process could be automated.
|
||||
* *CI:* Rebuild packaging and runtime images if needed. Rebuild Debian
|
||||
packages for any changed languages. Fetch everything unchanged from
|
||||
registry. Rebuild application image and verify integration tests are
|
||||
still passing. If yes and operating on main branch, publish all
|
||||
artifacts and deploy.
|
|
@ -0,0 +1,32 @@
|
|||
terraform {
|
||||
backend "remote" {
|
||||
organization = "riju"
|
||||
workspaces {
|
||||
name = "riju"
|
||||
}
|
||||
}
|
||||
required_providers {
|
||||
aws = {
|
||||
source = "hashicorp/aws"
|
||||
version = "~> 2.70"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
provider "aws" {
|
||||
profile = "default"
|
||||
region = "us-west-1"
|
||||
}
|
||||
|
||||
resource "aws_s3_bucket" "riju_debs" {
|
||||
bucket = "riju-debs"
|
||||
acl = "private"
|
||||
tags = {
|
||||
Terraform = "Managed by Terraform"
|
||||
}
|
||||
}
|
||||
|
||||
resource "aws_ecr_repository" "riju_app" {
|
||||
name = "riju-app"
|
||||
image_tag_mutability = "IMMUTABLE"
|
||||
}
|
Loading…
Reference in New Issue