Add docker build (#1)

This commit is contained in:
Nikolai Rodionov 2023-02-12 09:51:14 +01:00 committed by GitHub
parent 18fd9d827b
commit bf362afb98
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 118 additions and 60 deletions

46
.drone.yml Normal file
View File

@ -0,0 +1,46 @@
---
kind: pipeline
type: kubernetes
name: Containeraztion latest
steps:
- name: Docker build
resources:
limits:
cpu: 100
memory: 2048MiB
when:
branch:
- main
privileged: true
settings:
registry: git.badhouseplants.net
username: allanger
password:
from_secret: GITEA_TOKEN
repo: git.badhouseplants.net/badhouseplants/clever-install
tags: latest
platforms:
- linux/arm64
- linux/amd64
steps:
- name: Docker build
image: thegeeklab/drone-docker-buildx
trigger:
event:
- tag
resources:
limits:
cpu: 100
memory: 2048MiB
privileged: true
settings:
registry: git.badhouseplants.net
username: allanger
password:
from_secret: GITEA_TOKEN
repo: git.badhouseplants.net/badhouseplants/clever-install
tags: latest
platforms:
- linux/arm64
- linux/amd64

View File

@ -21,7 +21,7 @@ jobs:
target: aarch64-apple-darwin
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
@ -34,20 +34,20 @@ jobs:
args: --release --all-features --target=${{ matrix.target }}
- name: Archive build artifacts
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
with:
name: build-${{matrix.target}}
path: ${{ github.workspace }}/target/${{ matrix.target }}/release/clin
path: ${{ github.workspace }}/target/${{ matrix.target }}/release/dudo
release:
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Download artifact
uses: actions/download-artifact@v2
uses: actions/download-artifact@v3
- name: Set version variable
run: echo "CLIN_VERSION=${GITHUB_REF##*/}" >> $GITHUB_ENV

View File

@ -9,9 +9,11 @@ on:
jobs:
containerization:
runs-on: ubuntu-latest
permissions:
packages: write
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Set action link variable
run: echo "LINK=$GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID" >> $GITHUB_ENV
@ -26,14 +28,14 @@ jobs:
uses: docker/setup-buildx-action@master
- name: Login to GitHub Container Registry
uses: docker/login-action@v1
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.CR_PAT }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build
uses: docker/build-push-action@v2
uses: docker/build-push-action@v3
with:
builder: ${{ steps.buildx.outputs.name }}
context: .

View File

@ -9,9 +9,11 @@ on:
jobs:
containerization:
runs-on: ubuntu-latest
permissions:
packages: write
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
- name: Set version variable
run: echo "TAG=${GITHUB_REF##*/}" >> $GITHUB_ENV
@ -29,14 +31,14 @@ jobs:
uses: docker/setup-buildx-action@master
- name: Login to GitHub Container Registry
uses: docker/login-action@v1
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.CR_PAT }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build
uses: docker/build-push-action@v2
uses: docker/build-push-action@v3
with:
builder: ${{ steps.buildx.outputs.name }}
context: .

View File

@ -9,27 +9,11 @@ on:
- "src/**"
jobs:
cargo_udeps:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: nightly
- name: Install cargo-udeps
run: cargo install cargo-udeps --locked
- name: Check dependencies
run: cargo +nightly udeps
cargo_test:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:

25
.github/workflows/udeps_test.yaml vendored Normal file
View File

@ -0,0 +1,25 @@
---
name: "Tests"
on:
pull_request:
branches:
- main
jobs:
cargo_udeps:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: nightly
- name: Install cargo-udeps
run: cargo install cargo-udeps --locked
- name: Check dependencies
run: cargo +nightly udeps

26
Cargo.lock generated
View File

@ -99,19 +99,6 @@ dependencies = [
"os_str_bytes",
]
[[package]]
name = "clin"
version = "0.1.0"
dependencies = [
"clap",
"env_logger",
"handlebars",
"http",
"log",
"reqwest",
"serde",
]
[[package]]
name = "core-foundation"
version = "0.9.3"
@ -157,6 +144,19 @@ dependencies = [
"crypto-common",
]
[[package]]
name = "dudo"
version = "0.1.0"
dependencies = [
"clap",
"env_logger",
"handlebars",
"http",
"log",
"reqwest",
"serde",
]
[[package]]
name = "encoding_rs"
version = "0.8.31"

View File

@ -1,5 +1,5 @@
[package]
name = "clin"
name = "dudo"
version = "0.1.0"
edition = "2021"

View File

@ -6,8 +6,8 @@ RUN cargo build --release
FROM alpine:3.17.1
COPY --from=builder /src/target/release/clin /bin/clin
COPY --from=builder /src/target/release/dudo /bin/dudo
RUN apk update && apk add --no-cache libressl-dev libc6-compat
RUN chmod +x /bin/clin
RUN chmod +x /bin/dudo
WORKDIR /workdir
ENTRYPOINT ["/bin/clin"]
ENTRYPOINT ["/bin/dudo"]

View File

@ -1,5 +1,4 @@
# Clever Install (clin)
> It's actually not and installer, but a downloader, clin just sounds better than cldow IMHO
# Dumb Downloader (dudo)
# What's it about?
It's just a tool to make downloading binaries for different platforms easier.
@ -33,15 +32,15 @@ Prebuilt binaries exist for **Linux x86_64** and **MacOS arm64** and **x86_64**
Don't forget to add the binary to $PATH
```
$ curl https://raw.githubusercontent.com/allanger/clever-install/main/scripts/download_clin.sh | bash
$ clin -h
$ curl https://raw.githubusercontent.com/allanger/clever-install/main/scripts/download_dudo.sh | bash
$ dudo -h
```
### Docker
You can use the `latest` or a `tagged` docker image
```
$ docker pull ghcr.io/allanger/clever-install:latest
$ docker run ghcr.io/allanger/clever-install:latest clin -h
$ docker run ghcr.io/allanger/clever-install:latest dudo -h
```
### Build from source

View File

@ -36,15 +36,15 @@ esac
LATEST_VERSION="v$(curl -s https://raw.githubusercontent.com/allanger/clever-install/main/Cargo.toml | awk -F ' = ' '$1 ~ /version/ { gsub(/[\"]/, "", $2); printf("%s",$2); exit}')"
echo "Downloading $LATEST_VERSION"
RELEASE_NAME=clin-$LATEST_VERSION-$TARGET
RELEASE_NAME=dudo-$LATEST_VERSION-$TARGET
RELEASE_URL="https://github.com/allanger/clever-install/releases/download/$LATEST_VERSION/$RELEASE_NAME"
echo "Link for downloading: $RELEASE_URL"
curl -LJO $RELEASE_URL
mv $RELEASE_NAME clin
chmod +x clin
mv $RELEASE_NAME dudo
chmod +x dudo
echo 'Make sure that clin is in your $PATH'
echo 'Make sure that dudo is in your $PATH'
echo 'Try: '
echo ' $ export PATH=$PATH:$PWD'
echo ' $ clin -h'
echo ' $ dudo -h'

View File

@ -1,10 +1,10 @@
#!/bin/bash
echo 'renaming clin to clin-$VERSION-$SYSTEM format'
echo 'renaming dudo to dudo-$VERSION-$SYSTEM format'
mkdir -p release
echo "version - $CLIN_VERSION"
for BUILD in build*; do
SYSTEM=$(echo $BUILD | sed -e 's/build-//g')
echo "system - $SYSTEM"
cp $BUILD/clin release/clin-$CLIN_VERSION-$SYSTEM
cp $BUILD/dudo release/dudo-$CLIN_VERSION-$SYSTEM
done
ls release