Devop setup #8
|
@ -0,0 +1,5 @@
|
||||||
|
*
|
||||||
|
|
||||||
|
!Cargo.toml
|
||||||
|
!Cargo.lock
|
||||||
|
!src/
|
|
@ -0,0 +1,13 @@
|
||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
end_of_line = lf
|
||||||
|
insert_final_newline = false
|
||||||
|
indent_size = 4
|
||||||
|
indent_style = space
|
||||||
|
|
||||||
|
[*.{yml,yaml}]
|
||||||
|
indent_size = 2
|
||||||
|
|
||||||
|
[Makefile]
|
||||||
|
indent_style = tab
|
|
@ -0,0 +1,77 @@
|
||||||
|
pipeline:
|
||||||
|
# Download the cache from S3
|
||||||
|
restore-cache:
|
||||||
|
image: plugins/s3-cache
|
||||||
|
pull: true
|
||||||
|
|
||||||
|
endpoint: https://s3.roosens.me
|
||||||
|
root: build-cache/
|
||||||
|
restore: true
|
||||||
|
|
||||||
|
secrets: [ cache_s3_access_key, cache_s3_secret_key ]
|
||||||
|
|
||||||
|
|
||||||
|
# =====BUILDING=====
|
||||||
|
build-backend:
|
||||||
|
image: rust:1.53-alpine
|
||||||
|
pull: true
|
||||||
|
group: build
|
||||||
|
environment:
|
||||||
|
- CARGO_HOME=.cargo
|
||||||
|
commands:
|
||||||
|
- apk add musl-dev postgresql-dev
|
||||||
|
- cargo build
|
||||||
|
|
||||||
|
|
||||||
|
# =====TESTING=====
|
||||||
|
test-backend:
|
||||||
|
image: rust:1.53-alpine
|
||||||
|
environment:
|
||||||
|
- CARGO_HOME=.cargo
|
||||||
|
commands:
|
||||||
|
- apk add musl-dev postgresql-dev
|
||||||
|
- cargo test
|
||||||
|
|
||||||
|
|
||||||
|
# =====LINTING=====
|
||||||
|
lint-backend:
|
||||||
|
image: rust:1.53-alpine
|
||||||
|
group: lint
|
||||||
|
environment:
|
||||||
|
- CARGO_HOME=.cargo
|
||||||
|
commands:
|
||||||
|
- apk add musl-dev postgresql-dev
|
||||||
|
- rustup component add rustfmt clippy
|
||||||
|
- cargo fmt -- --check
|
||||||
|
# This is run here because it requires compilation
|
||||||
|
- cargo clippy --all-targets -- -D warnings
|
||||||
|
|
||||||
|
|
||||||
|
# =====REBUILD & FLUSH CACHE=====
|
||||||
|
rebuild-cache:
|
||||||
|
image: plugins/s3-cache
|
||||||
|
|
||||||
|
endpoint: https://s3.roosens.me
|
||||||
|
root: build-cache/
|
||||||
|
rebuild: true
|
||||||
|
mount:
|
||||||
|
- target
|
||||||
|
- .cargo
|
||||||
|
|
||||||
|
secrets: [ cache_s3_access_key, cache_s3_secret_key ]
|
||||||
|
# Push the cache, even on failure
|
||||||
|
when:
|
||||||
|
status: [ success, failure ]
|
||||||
|
|
||||||
|
flush-cache:
|
||||||
|
image: plugins/s3-cache
|
||||||
|
|
||||||
|
endpoint: https://s3.roosens.me
|
||||||
|
root: build-cache/
|
||||||
|
flush: true
|
||||||
|
flush_age: 14
|
||||||
|
|
||||||
|
secrets: [ cache_s3_access_key, cache_s3_secret_key ]
|
||||||
|
# Push the cache, even on failure
|
||||||
|
when:
|
||||||
|
status: [ success, failure ]
|
|
@ -84,6 +84,12 @@ version = "3.7.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9c59e7af012c713f529e7a3ee57ce9b31ddd858d4b512923602f74608b009631"
|
checksum = "9c59e7af012c713f529e7a3ee57ce9b31ddd858d4b512923602f74608b009631"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "byteorder"
|
||||||
|
version = "1.4.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bytes"
|
name = "bytes"
|
||||||
version = "1.0.1"
|
version = "1.0.1"
|
||||||
|
@ -170,6 +176,29 @@ dependencies = [
|
||||||
"syn",
|
"syn",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "diesel"
|
||||||
|
version = "1.4.7"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "bba51ca66f57261fd17cadf8b73e4775cc307d0521d855de3f5de91a8f074e0e"
|
||||||
|
dependencies = [
|
||||||
|
"bitflags",
|
||||||
|
"byteorder",
|
||||||
|
"diesel_derives",
|
||||||
|
"pq-sys",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "diesel_derives"
|
||||||
|
version = "1.4.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "45f5098f628d02a7a0f68ddba586fb61e80edec3bdc1be3b921f4ceec60858d3"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "discard"
|
name = "discard"
|
||||||
version = "1.0.4"
|
version = "1.0.4"
|
||||||
|
@ -373,6 +402,7 @@ dependencies = [
|
||||||
name = "hilde"
|
name = "hilde"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"diesel",
|
||||||
"rocket",
|
"rocket",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -661,6 +691,15 @@ version = "0.2.10"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857"
|
checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "pq-sys"
|
||||||
|
version = "0.4.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6ac25eee5a0582f45a67e837e350d784e7003bd29a5f460796772061ca49ffda"
|
||||||
|
dependencies = [
|
||||||
|
"vcpkg",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "proc-macro-hack"
|
name = "proc-macro-hack"
|
||||||
version = "0.5.19"
|
version = "0.5.19"
|
||||||
|
@ -1262,6 +1301,12 @@ version = "0.2.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
|
checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "vcpkg"
|
||||||
|
version = "0.2.14"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "70455df2fdf4e9bf580a92e443f1eb0303c390d682e2ea817312c9e81f8c3399"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "version_check"
|
name = "version_check"
|
||||||
version = "0.9.3"
|
version = "0.9.3"
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
[package]
|
[package]
|
||||||
name = "hilde"
|
name = "hilde"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
authors = ["jjr <roosensjef@gmail.com>"]
|
authors = ["Jef Roosens <roosensjef@gmail.com>"]
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
rocket = "0.5.0-rc.1"
|
rocket = "0.5.0-rc.1"
|
||||||
|
diesel = { version = "1.4.7", features = ["postgres"] }
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
FROM rust:1.52-alpine3.13 AS builder
|
||||||
|
|
||||||
|
WORKDIR /src
|
||||||
|
|
||||||
|
# Install build dependencies
|
||||||
|
RUN apk add --no-cache \
|
||||||
|
musl-dev \
|
||||||
|
postgresql-dev
|
||||||
|
|
||||||
|
# Copy over source code
|
||||||
|
COPY Cargo.toml Cargo.lock ./
|
||||||
|
COPY src ./src/
|
||||||
|
|
||||||
|
RUN cargo build \
|
||||||
|
--release
|
||||||
|
|
||||||
|
|
||||||
|
FROM alpine:3.13
|
||||||
|
|
||||||
|
COPY --from=builder /src/target/release/hilde /usr/local/bin/hilde
|
||||||
|
|
||||||
|
ENTRYPOINT [ "/usr/local/bin/hilde" ]
|
|
@ -0,0 +1,54 @@
|
||||||
|
# The main usecase for this Makefile is to simplify database management
|
||||||
|
|
||||||
|
|
||||||
|
all: build
|
||||||
|
.PHONY: all
|
||||||
|
|
||||||
|
|
||||||
|
# =====CARGO STUFF=====
|
||||||
|
build:
|
||||||
|
@ cargo build
|
||||||
|
.PHONY: build
|
||||||
|
|
||||||
|
run:
|
||||||
|
@ cargo run
|
||||||
|
.PHONY: run
|
||||||
|
|
||||||
|
test:
|
||||||
|
@ cargo test
|
||||||
|
.PHONY: test
|
||||||
|
|
||||||
|
lint:
|
||||||
|
@ cargo fmt -- --check
|
||||||
|
@ cargo clippy --all-targets -- -D warnings
|
||||||
|
.PHONY: lint
|
||||||
|
|
||||||
|
|
||||||
|
# =====DATABASE STUFF=====
|
||||||
|
db:
|
||||||
|
@ docker run \
|
||||||
|
--rm \
|
||||||
|
-itd \
|
||||||
|
-v hilde_db-data:/var/lib/postgresql/data \
|
||||||
|
-e POSTGRES_USER=hilde \
|
||||||
|
-e POSTGRES_PASSWORD=hilde \
|
||||||
|
--name hilde_db \
|
||||||
|
-p 5432:5432 \
|
||||||
|
postgres:13-alpine
|
||||||
|
.PHONY: db
|
||||||
|
|
||||||
|
psql:
|
||||||
|
@ docker exec \
|
||||||
|
-it hilde_db \
|
||||||
|
psql -U hilde
|
||||||
|
.PHONY: psql
|
||||||
|
|
||||||
|
stop-db:
|
||||||
|
@ docker stop hilde_db
|
||||||
|
.PHONY: stop-db
|
||||||
|
|
||||||
|
|
||||||
|
# =====DOCKER STUFF=====
|
||||||
|
image:
|
||||||
|
@ docker build -t hilde:latest .
|
||||||
|
.PHONY: image
|
Reference in New Issue