feat: init CI
This commit is contained in:
parent
28ee8510c3
commit
2a2302c5fe
3 changed files with 110 additions and 0 deletions
24
.woodpecker.yml
Normal file
24
.woodpecker.yml
Normal file
|
@ -0,0 +1,24 @@
|
|||
pipeline:
|
||||
backend:
|
||||
image: rust
|
||||
# environment:
|
||||
# - DATABASE_URL=postgres://postgres:password@database:5432/postgres
|
||||
commands:
|
||||
# - make migrate
|
||||
- make
|
||||
- make test
|
||||
|
||||
publish:
|
||||
image: plugins/docker
|
||||
settings:
|
||||
username: realaravinth
|
||||
password:
|
||||
from_secret: DOCKER_TOKEN
|
||||
repo: realaravinth/librepages-forms
|
||||
tags: latest
|
||||
|
||||
#services:
|
||||
# database:
|
||||
# image: postgres
|
||||
# environment:
|
||||
# - POSTGRES_PASSWORD=password
|
31
Dockerfile
Normal file
31
Dockerfile
Normal file
|
@ -0,0 +1,31 @@
|
|||
FROM rust:latest as planner
|
||||
RUN cargo install cargo-chef
|
||||
WORKDIR /src
|
||||
COPY . /src/
|
||||
RUN cargo chef prepare --recipe-path recipe.json
|
||||
|
||||
FROM rust:latest as cacher
|
||||
WORKDIR /src/
|
||||
RUN cargo install cargo-chef
|
||||
COPY --from=planner /src/recipe.json recipe.json
|
||||
RUN cargo chef cook --release --recipe-path recipe.json
|
||||
|
||||
FROM rust:latest as rust
|
||||
WORKDIR /src
|
||||
COPY . .
|
||||
COPY --from=cacher /src/target target
|
||||
#COPY --from=frontend /src/static/cache/bundle/ /src/static/cache/bundle/
|
||||
RUN cargo --version
|
||||
#RUN make cache-bust
|
||||
RUN cargo build --release
|
||||
|
||||
FROM debian:bullseye as conductor
|
||||
LABEL org.opencontainers.image.source https://git.batsense.net/librepages/conductor
|
||||
RUN apt-get update && apt-get install -y ca-certificates
|
||||
RUN useradd -ms /bin/bash -u 1001 conductor
|
||||
WORKDIR /home/conductor
|
||||
COPY --from=rust /src/target/release/conductor /usr/local/bin/
|
||||
#COPY --from=rust /src/config/default.toml /etc/conductor/config.toml
|
||||
RUN mkdir /var/lib/conductor && chown conductor:conductor /var/lib/conductor
|
||||
USER conductor
|
||||
CMD [ "/usr/local/bin/conductor" ]
|
55
Makefile
Normal file
55
Makefile
Normal file
|
@ -0,0 +1,55 @@
|
|||
default: ## Build app in debug mode
|
||||
cargo build
|
||||
|
||||
check: ## Check for syntax errors on all workspaces
|
||||
cargo check --workspace --tests --all-features
|
||||
|
||||
clean: ## Delete build artifacts
|
||||
@cargo clean
|
||||
|
||||
coverage: ## Generate code coverage report in HTML format
|
||||
$(call cache_bust)
|
||||
cargo tarpaulin -t 1200 --out Html
|
||||
|
||||
doc: ## Generate documentation
|
||||
#yarn doc
|
||||
cargo doc --no-deps --workspace --all-features
|
||||
|
||||
docker: ## Build Docker image
|
||||
docker build -t realaravinth/librepages-conductor:master -t realaravinth/librepages-conductor:latest .
|
||||
|
||||
docker-publish: docker ## Build and publish Docker image
|
||||
docker push realaravinth/librepages-conductor:master
|
||||
docker push realaravinth/librepages-conductor:latest
|
||||
|
||||
env: ## Setup development environtment
|
||||
cargo fetch
|
||||
|
||||
lint: ## Lint codebase
|
||||
cargo fmt -v --all -- --emit files
|
||||
cargo clippy --workspace --tests --all-features
|
||||
|
||||
#migrate: ## run migrations
|
||||
# unset DATABASE_URL && cargo build
|
||||
# cargo run -- migrate
|
||||
|
||||
release: ## Build app with release optimizations
|
||||
cargo build --release
|
||||
|
||||
run: ## Run app in debug mode
|
||||
cargo run
|
||||
|
||||
|
||||
#sqlx-offline-data: ## prepare sqlx offline data
|
||||
# cargo sqlx prepare \
|
||||
# --database-url=${POSTGRES_DATABASE_URL} -- \
|
||||
# --all-features
|
||||
|
||||
test: ## Run all available tests
|
||||
cargo test --no-fail-fast
|
||||
|
||||
xml-test-coverage: ## Generate code coverage report in XML format
|
||||
cargo tarpaulin -t 1200 --out Xml
|
||||
|
||||
help: ## Prints help for targets with comments
|
||||
@cat $(MAKEFILE_LIST) | grep -E '^[a-zA-Z_-]+:.*?## .*$$' | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
|
Loading…
Reference in a new issue