update build steps
This commit is contained in:
parent
9ce1619a59
commit
4c55e8cfff
|
@ -1,5 +1,8 @@
|
|||
target
|
||||
Makefile
|
||||
LICENSE
|
||||
README.md
|
||||
target
|
||||
Makefile
|
||||
Earthfile
|
||||
.gitignore
|
||||
.git
|
||||
.env
|
|
@ -1,2 +1,3 @@
|
|||
/target
|
||||
target
|
||||
.DS_STORE
|
||||
.env
|
19
Dockerfile
19
Dockerfile
|
@ -1,19 +0,0 @@
|
|||
FROM rust:1.58 as builder
|
||||
|
||||
WORKDIR /app
|
||||
COPY . .
|
||||
|
||||
RUN rustup target add x86_64-unknown-linux-musl
|
||||
RUN cargo build --release --target x86_64-unknown-linux-musl
|
||||
|
||||
FROM docker:20.10.12-dind-alpine3.15
|
||||
|
||||
LABEL maintainer="Antoine <DataHearth> Langlois"
|
||||
LABEL repository="https://github.com/DataHearth/clear-docker-images"
|
||||
LABEL org.opencontainers.image.source="https://github.com/DataHearth/clear-docker-images"
|
||||
|
||||
COPY --from=builder /app/target/x86_64-unknown-linux-musl/release/clear-docker-images /usr/local/bin/clear-docker-images
|
||||
|
||||
VOLUME ["/var/run/docker.sock"]
|
||||
|
||||
ENTRYPOINT ["clear-docker-images"]
|
|
@ -0,0 +1,32 @@
|
|||
VERSION 0.6
|
||||
|
||||
FROM rust:1.59
|
||||
|
||||
ARG VERSION
|
||||
ARG DOCKER_IMG
|
||||
ARG GHCR_IMG
|
||||
|
||||
WORKDIR /clear-docker-images
|
||||
|
||||
build-linux:
|
||||
COPY . .
|
||||
RUN cargo build --release --target x86_64-unknown-linux-gnu
|
||||
SAVE ARTIFACT target/x86_64-unknown-linux-gnu /x86_64-unknown-linux-gnu AS LOCAL target/x86_64-unknown-linux-gnu
|
||||
|
||||
build-images:
|
||||
FROM docker:20.10.12-dind-alpine3.15
|
||||
|
||||
LABEL maintainer="Antoine <DataHearth> Langlois"
|
||||
LABEL repository="https://github.com/DataHearth/clear-docker-images"
|
||||
LABEL org.opencontainers.image.source="https://github.com/DataHearth/clear-docker-images"
|
||||
|
||||
COPY +build-linux/x86_64-unknown-linux-gnu /usr/local/bin/clear-docker-images
|
||||
|
||||
VOLUME ["/var/run/docker.sock"]
|
||||
|
||||
ENTRYPOINT ["clear-docker-images"]
|
||||
|
||||
SAVE IMAGE ${DOCKER_IMG}:${VERSION}
|
||||
SAVE IMAGE ${DOCKER_IMG}:latest
|
||||
SAVE IMAGE ${GHCR_IMG}:${VERSION}
|
||||
SAVE IMAGE ${GHCR_IMG}:latest
|
35
Makefile
35
Makefile
|
@ -1,38 +1,9 @@
|
|||
DOCKER_IMG := datahearth/clear-docker-images
|
||||
GHCR_IMG := ghcr.io/${DOCKER_IMG}
|
||||
VERSION := 0.4.1
|
||||
|
||||
.PHONY: initialize-linux-build
|
||||
initialize-linux-build:
|
||||
@brew install FiloSottile/musl-cross/musl-cross
|
||||
@rustup target add x86_64-unknown-linux-musl
|
||||
@echo 'add these lines to your "~/.cargo":'
|
||||
@printf '\n[target.x86_64-unknown-linux-musl]\nlinker = "x86_64-linux-musl-gcc"\n'
|
||||
|
||||
.PHONY: build-docker
|
||||
build-docker:
|
||||
@docker build --tag ${DOCKER_IMG}:${VERSION} .
|
||||
@docker tag ${DOCKER_IMG}:${VERSION} ${GHCR_IMG}:${VERSION}
|
||||
@docker tag ${DOCKER_IMG}:${VERSION} ${DOCKER_IMG}:latest
|
||||
@docker tag ${DOCKER_IMG}:${VERSION} ${GHCR_IMG}:latest
|
||||
|
||||
.PHONY: build-binaries
|
||||
build-binaries:
|
||||
@echo "Building Linux MUSL binary..."
|
||||
@cargo build --release --target x86_64-unknown-linux-musl
|
||||
@echo "Building MacOS darwin"
|
||||
@cargo build --release --target x86_64-apple-darwin
|
||||
|
||||
.PHONY: push-docker-images
|
||||
push-docker-images: build-docker
|
||||
@docker push --all-tags ${GHCR_IMG}
|
||||
@docker push --all-tags ${DOCKER_IMG}
|
||||
|
||||
.PHONY: bump-version
|
||||
bump-version:
|
||||
@echo "Bump version \"${VERSION}\" to \"${NEW_VERSION}\""
|
||||
@type sd > /dev/null
|
||||
@echo "Bump version to \"${NEW_VERSION}\""
|
||||
@sd "version = \"${VERSION}\"" "version = \"${NEW_VERSION}\"" Cargo.toml
|
||||
@sd "VERSION := ${VERSION}" "VERSION := ${NEW_VERSION}" Makefile
|
||||
@sd "VERSION=${VERSION}" "VERSION=${NEW_VERSION}" .env
|
||||
@git add .
|
||||
@git commit -m "bump v${NEW_VERSION}"
|
||||
@git tag -m "bump v${NEW_VERSION}" v${NEW_VERSION}
|
||||
|
|
|
@ -31,21 +31,13 @@ pub fn process_imgs(
|
|||
|
||||
for img in parse_imgs(repository) {
|
||||
let image: Image = serde_json::from_str(&img).unwrap();
|
||||
let del = if let Some(max) = date_to {
|
||||
if image.created_at.timestamp() >= date_from.timestamp()
|
||||
&& image.created_at.timestamp() <= max.timestamp()
|
||||
{
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}
|
||||
} else {
|
||||
if image.created_at.timestamp() >= date_from.timestamp() {
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}
|
||||
};
|
||||
let del = date_to.map_or(
|
||||
image.created_at.timestamp() >= date_from.timestamp(),
|
||||
|max| {
|
||||
date_from.timestamp() >= image.created_at.timestamp()
|
||||
&& max.timestamp() <= image.created_at.timestamp()
|
||||
},
|
||||
);
|
||||
|
||||
if del {
|
||||
if !tags.contains(&image.tag) {
|
||||
|
@ -86,16 +78,17 @@ fn get_images(repo: Option<String>) -> Vec<u8> {
|
|||
let mut cmd = Command::new(DOCKER_BIN);
|
||||
cmd.arg("images");
|
||||
|
||||
if let Some(repo) = repo {
|
||||
cmd.arg(repo);
|
||||
}
|
||||
repo.map(|repo| cmd.arg(repo));
|
||||
|
||||
cmd.args(["--format", "{{json .}}"]);
|
||||
|
||||
match cmd.output() {
|
||||
Ok(o) => {
|
||||
if !o.status.success() {
|
||||
eprintln!("{}", std::str::from_utf8(&o.stderr).unwrap());
|
||||
eprintln!(
|
||||
"{}",
|
||||
std::str::from_utf8(&o.stderr).expect("failed to parse STDERR to UTF-8")
|
||||
);
|
||||
eprintln!("failed to retrieve docker images. Please checkout STDERR");
|
||||
exit(1);
|
||||
}
|
||||
|
|
|
@ -42,7 +42,7 @@ struct Args {
|
|||
fn main() {
|
||||
let args = Args::parse();
|
||||
|
||||
let tags = if let Some(t) = args.tags { t } else { vec![] };
|
||||
let tags = args.tags.map_or(vec![], |tags| tags);
|
||||
let (ids, saved_size) = process_imgs(args.repository, tags, args.date);
|
||||
|
||||
if args.dry_run {
|
||||
|
|
Reference in New Issue