Skip to content

ci: add tooling/Dockerfile #85

ci: add tooling/Dockerfile

ci: add tooling/Dockerfile #85

Workflow file for this run

name: ci
on:
push:
branches:
- main
pull_request:
branches:
- main
env:
IMAGE_NAME: rapiddb
IMAGE_CACHE: ghcr.io/kruserr/rapiddb/rapiddb:cache
jobs:
rustfmt:
name: Formatting
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Formatting
run: cargo fmt --all -- --check
clippy:
name: Lint
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Cache
uses: Swatinem/rust-cache@v2
- name: Lint
run: cargo clippy --all-targets --all-features -- -Dwarnings
test:
name: Test
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Cache
uses: Swatinem/rust-cache@v2
- name: Test
run: cargo test
# publish-docker:
# name: Publish on GitHub Packages and Docker Hub
# runs-on: ubuntu-22.04
# if: github.event_name == 'push'
# permissions:
# contents: read
# packages: write
# steps:
# - name: Checkout
# uses: actions/checkout@v3
# - name: Build image
# run: |
# docker build \
# -f tooling/Dockerfile \
# --cache-from $IMAGE_CACHE \
# --build-arg BUILDKIT_INLINE_CACHE=1 \
# --tag $IMAGE_NAME .
# - name: Login to GitHub Packages
# run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
# - name: Push image to GitHub Packages
# run: |
# IMAGE_ID=ghcr.io/${{ github.repository }}/$IMAGE_NAME
# # Change all uppercase to lowercase
# IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]')
# VERSION=cache
# docker tag $IMAGE_NAME $IMAGE_ID:$VERSION
# docker push $IMAGE_ID:$VERSION
# - name: Login to Docker Hub
# run: echo "${{ secrets.DOCKERHUB_TOKEN }}" | docker login docker.io -u ${{ secrets.DOCKERHUB_USERNAME }} --password-stdin
# - name: Push image to Docker Hub
# run: |
# IMAGE_ID=docker.io/${{ github.repository }}
# # Change all uppercase to lowercase
# IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]')
# VERSION=cache
# docker tag $IMAGE_NAME $IMAGE_ID:$VERSION
# docker push $IMAGE_ID:$VERSION
build-and-push:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: Cache Docker layers
uses: actions/cache@v2
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
- name: Login to GitHub Container Registry
uses: docker/login-action@v1
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker Hub
uses: docker/login-action@v1
with:
registry: docker.io
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
- name: Build and push Docker image
uses: docker/build-push-action@v2
with:
context: .
file: ./tooling/Dockerfile
push: true
tags: |
ghcr.io/${{ github.repository }}:dev
docker.io/${{ github.repository }}:dev
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache