improve build time for container
Rust / Run tests (push) Failing after 1m1s Details

This commit is contained in:
DataHearth 2023-08-10 13:48:51 +02:00
parent 5ba1965127
commit 88d0e6f2a0
No known key found for this signature in database
GPG Key ID: E88FD356ACC5F3C4
5 changed files with 302 additions and 25 deletions

View File

@ -1,4 +1,4 @@
name: Docker bot
name: Docker
run-name: Build and push Docker image
@ -14,8 +14,8 @@ env:
GITEA_REPOSITORY: datahearth/tech-bot
jobs:
build-push:
name: Build and push Docker image
build-push-builder:
name: Build and push rust builder image
runs-on: debian-docker
@ -23,8 +23,65 @@ jobs:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Docker buildx
uses: docker/setup-buildx-action@v2
- name: Log into registry Docker
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}
- name: Log into registry Gitea
uses: docker/login-action@v2
with:
registry: ${{ env.GITEA_REGISTRY }}
username: ${{ gitea.repository_owner }}
password: ${{ secrets.REGISTRY_TOKEN }}
- name: Log into registry GitHub
uses: docker/login-action@v2
with:
registry: ${{ env.GH_REGISTRY }}
username: ${{ gitea.repository_owner }}
password: ${{ secrets.GH_REGISTRY_TOKEN }}
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v4
with:
images: |
${{ env.GITEA_REPOSITORY }}
${{ env.GITEA_REGISTRY }}/${{ env.GITEA_REPOSITORY }}
${{ env.GH_REGISTRY }}/${{ env.GH_REPOSITORY }}
tags: |
type=semver,pattern=rust-builder-latest
type=semver,pattern=rust-builder-{{version}}
type=semver,pattern=rust-builder-{{major}}.{{minor}}
flavor: |
latest=false
- name: Build and push Docker image
id: build-and-push
uses: docker/build-push-action@v4
with:
context: .
push: true
target: rust-builder
cache-to: type=inline
cache-from: |
type=registry,ref=${{ env.GITEA_REPOSITORY }}:rust-builder-latest
type=registry,ref=${{ env.GITEA_REGISTRY }}/${{ env.GITEA_REPOSITORY }}:rust-builder-latest
type=registry,ref=${{ env.GH_REGISTRY }}/${{ env.GH_REPOSITORY }}:rust-builder-latest
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-push-services:
name: Build and push service images
needs: build-push-builder
runs-on: debian-docker
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Log into registry Docker
uses: docker/login-action@v2
@ -58,7 +115,8 @@ jobs:
type=semver,pattern=bot-latest
type=semver,pattern=bot-{{version}}
type=semver,pattern=bot-{{major}}.{{minor}}
type=raw,value=latest,enable=false
flavor: |
latest=false
- name: Build and push Docker image
id: build-and-push

View File

@ -1,4 +1,4 @@
name: Docker database
name: Docker
run-name: Build and push Docker image
@ -14,8 +14,8 @@ env:
GITEA_REPOSITORY: datahearth/tech-bot
jobs:
build-push:
name: Build and push Docker image
build-push-builder:
name: Build and push rust builder image
runs-on: debian-docker
@ -23,8 +23,65 @@ jobs:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Docker buildx
uses: docker/setup-buildx-action@v2
- name: Log into registry Docker
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}
- name: Log into registry Gitea
uses: docker/login-action@v2
with:
registry: ${{ env.GITEA_REGISTRY }}
username: ${{ gitea.repository_owner }}
password: ${{ secrets.REGISTRY_TOKEN }}
- name: Log into registry GitHub
uses: docker/login-action@v2
with:
registry: ${{ env.GH_REGISTRY }}
username: ${{ gitea.repository_owner }}
password: ${{ secrets.GH_REGISTRY_TOKEN }}
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v4
with:
images: |
${{ env.GITEA_REPOSITORY }}
${{ env.GITEA_REGISTRY }}/${{ env.GITEA_REPOSITORY }}
${{ env.GH_REGISTRY }}/${{ env.GH_REPOSITORY }}
tags: |
type=semver,pattern=rust-builder-latest
type=semver,pattern=rust-builder-{{version}}
type=semver,pattern=rust-builder-{{major}}.{{minor}}
flavor: |
latest=false
- name: Build and push Docker image
id: build-and-push
uses: docker/build-push-action@v4
with:
context: .
push: true
target: rust-builder
cache-to: type=inline
cache-from: |
type=registry,ref=${{ env.GITEA_REPOSITORY }}:rust-builder-latest
type=registry,ref=${{ env.GITEA_REGISTRY }}/${{ env.GITEA_REPOSITORY }}:rust-builder-latest
type=registry,ref=${{ env.GH_REGISTRY }}/${{ env.GH_REPOSITORY }}:rust-builder-latest
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-push-services:
name: Build and push service images
needs: build-push-builder
runs-on: debian-docker
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Log into registry Docker
uses: docker/login-action@v2
@ -58,7 +115,8 @@ jobs:
type=semver,pattern=database-latest
type=semver,pattern=database-{{version}}
type=semver,pattern=database-{{major}}.{{minor}}
type=raw,value=latest,enable=false
flavor: |
latest=false
- name: Build and push Docker image
id: build-and-push

View File

@ -1,4 +1,4 @@
name: Docker web
name: Docker
run-name: Build and push Docker image
@ -14,8 +14,8 @@ env:
GITEA_REPOSITORY: datahearth/tech-bot
jobs:
build-push:
name: Build and push Docker image
build-push-builder:
name: Build and push web builder image
runs-on: debian-docker
@ -23,8 +23,65 @@ jobs:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Docker buildx
uses: docker/setup-buildx-action@v2
- name: Log into registry Docker
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}
- name: Log into registry Gitea
uses: docker/login-action@v2
with:
registry: ${{ env.GITEA_REGISTRY }}
username: ${{ gitea.repository_owner }}
password: ${{ secrets.REGISTRY_TOKEN }}
- name: Log into registry GitHub
uses: docker/login-action@v2
with:
registry: ${{ env.GH_REGISTRY }}
username: ${{ gitea.repository_owner }}
password: ${{ secrets.GH_REGISTRY_TOKEN }}
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v4
with:
images: |
${{ env.GITEA_REPOSITORY }}
${{ env.GITEA_REGISTRY }}/${{ env.GITEA_REPOSITORY }}
${{ env.GH_REGISTRY }}/${{ env.GH_REPOSITORY }}
tags: |
type=semver,pattern=web-builder-latest
type=semver,pattern=web-builder-{{version}}
type=semver,pattern=web-builder-{{major}}.{{minor}}
flavor: |
latest=false
- name: Build and push Docker image
id: build-and-push
uses: docker/build-push-action@v4
with:
context: .
push: true
target: web-builder
cache-to: type=inline
cache-from: |
type=registry,ref=${{ env.GITEA_REPOSITORY }}:web-builder-latest
type=registry,ref=${{ env.GITEA_REGISTRY }}/${{ env.GITEA_REPOSITORY }}:web-builder-latest
type=registry,ref=${{ env.GH_REGISTRY }}/${{ env.GH_REPOSITORY }}:web-builder-latest
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-push-services:
name: Build and push service images
needs: build-push-builder
runs-on: debian-docker
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Log into registry Docker
uses: docker/login-action@v2
@ -58,7 +115,8 @@ jobs:
type=semver,pattern=web-latest
type=semver,pattern=web-{{version}}
type=semver,pattern=web-{{major}}.{{minor}}
type=raw,value=latest,enable=false
flavor: |
latest=false
- name: Build and push Docker image
id: build-and-push

View File

@ -14,22 +14,19 @@ env:
GITEA_REPOSITORY: datahearth/tech-bot
jobs:
build-push:
name: Build and push Docker image
build-push-builders:
name: Build and push builder images
runs-on: debian-docker
strategy:
matrix:
target: [database, bot, web]
target: [rust-builder, web-builder]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Docker buildx
uses: docker/setup-buildx-action@v2
- name: Log into registry Docker
uses: docker/login-action@v2
with:
@ -62,7 +59,72 @@ jobs:
type=semver,pattern=${{ matrix.target }}-latest
type=semver,pattern=${{ matrix.target }}-{{version}}
type=semver,pattern=${{ matrix.target }}-{{major}}.{{minor}}
type=raw,value=latest,enable=false
flavor: |
latest=false
- name: Build and push Docker image
id: build-and-push
uses: docker/build-push-action@v4
with:
context: .
push: true
target: ${{ matrix.target }}
cache-to: type=inline
cache-from: |
type=registry,ref=${{ env.GITEA_REPOSITORY }}:${{ matrix.target }}-latest
type=registry,ref=${{ env.GITEA_REGISTRY }}/${{ env.GITEA_REPOSITORY }}:${{ matrix.target }}-latest
type=registry,ref=${{ env.GH_REGISTRY }}/${{ env.GH_REPOSITORY }}:${{ matrix.target }}-latest
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-push-services:
name: Build and push service images
needs: build-push-builders
runs-on: debian-docker
strategy:
matrix:
target: [database, bot, web]
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Log into registry Docker
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}
- name: Log into registry Gitea
uses: docker/login-action@v2
with:
registry: ${{ env.GITEA_REGISTRY }}
username: ${{ gitea.repository_owner }}
password: ${{ secrets.REGISTRY_TOKEN }}
- name: Log into registry GitHub
uses: docker/login-action@v2
with:
registry: ${{ env.GH_REGISTRY }}
username: ${{ gitea.repository_owner }}
password: ${{ secrets.GH_REGISTRY_TOKEN }}
- name: Extract Docker metadata
id: meta
uses: docker/metadata-action@v4
with:
images: |
${{ env.GITEA_REPOSITORY }}
${{ env.GITEA_REGISTRY }}/${{ env.GITEA_REPOSITORY }}
${{ env.GH_REGISTRY }}/${{ env.GH_REPOSITORY }}
tags: |
type=semver,pattern=${{ matrix.target }}-latest
type=semver,pattern=${{ matrix.target }}-{{version}}
type=semver,pattern=${{ matrix.target }}-{{major}}.{{minor}}
flavor: |
latest=false
- name: Build and push Docker image
id: build-and-push

41
Justfile Normal file
View File

@ -0,0 +1,41 @@
set shell := ["zsh", "-uc"]
base_img_name := "datahearth/tech-bot"
gitea_img_name := "gitea.antoine-langlois.net/" + base_img_name
all_targets := "rust-builder web-builder bot web database"
alias b := build
alias p := push
alias ba := build-all
alias pa := push-all
build TARGET:
@docker build -t {{base_img_name}}:{{TARGET}} \
--target {{TARGET}} \
--cache-to type=inline \
--cache-from type=registry,ref={{base_img_name}}:{{TARGET}} .
@docker tag {{base_img_name}}:{{TARGET}} {{gitea_img_name}}:{{TARGET}}
push TARGET: (build TARGET)
@docker push {{base_img_name}}:{{TARGET}}
@docker push {{gitea_img_name}}:{{TARGET}}
build-all:
#!/usr/bin/env zsh
for target in {{all_targets}}; do
echo "Building $target";
docker build -t {{base_img_name}}:$target \
--target $target \
--cache-to type=inline \
--cache-from type=registry,ref={{base_img_name}}:$target .;
docker tag {{base_img_name}}:$target {{gitea_img_name}}:$target;
done
push-all: build-all
#!/usr/bin/env zsh
for target in {{all_targets}}; do
echo "Pushing $target";
docker push {{base_img_name}}:$target;
docker push {{gitea_img_name}}:$target;
done