diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..345c99b --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,33 @@ +name: test-pr +on: + push: + #pull_request: + # types: + # - opened + # - synchronize + # - reopened +jobs: + lint: + runs-on: ubuntu-22.04 + container: + image: lomorage/lomo-backup:1.0 + env: + PATH: /bin:/usr/bin:/usr/local/bin:/usr/local/go/bin + GOFLAGS: "-buildvcs=false" + steps: + - uses: actions/checkout@v4 + - run: make lint + + install: + runs-on: ubuntu-22.04 + container: + image: lomorage/lomo-backup:1.0 + env: + PATH: /bin:/usr/bin:/usr/local/bin:/usr/local/go/bin + GOBIN: /usr/local/bin + GOFLAGS: "-buildvcs=false" + steps: + - uses: actions/checkout@v4 + with: + submodules: 'true' + - run: make install diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..a040473 --- /dev/null +++ b/Makefile @@ -0,0 +1,26 @@ +.PHONY: vendor + +SHELL=/bin/bash # Use bash syntax +GOPATH=/go + +vendor: + go mod vendor + +lint: + golangci-lint run --modules-download-mode vendor -v --max-same-issues 10 + +install: + go install -v ./cmd/... + +dev-container: + docker build --tag "lomorage/lomo-backup:1.0" -f dockerfiles/dev-image . + +dev: + docker build --tag "lomorage/lomo-backup" -f dockerfiles/dev-run . + docker rm -f lomo-backup + docker run \ + --name lomo-backup --hostname lomo-backup \ + --privileged --cap-add=ALL -v /dev:/dev -v /lib/modules:/lib/modules \ + -v "${PWD}:/go/src/github.com/lomorage/lomo-backup" \ + --net host --dns-search local \ + -it "lomorage/lomo-backup" -d bash diff --git a/README.md b/README.md index 0a8aea2..b02a43c 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,9 @@ +# Lomo-backup - Most cost saving 2-stages cloud backup solution + +[![GitHub Actions](https://github.com/lomorage/lomo-backup/workflows/main/badge.svg)](https://github.com/lomorage/lomo-backup/actions?query=workflow%3Amain) + + + # Motivation Photos/videos are very import personal assets and we want to store in our home instead of clouds. We developped lomorage application to self host our own google photo alternative solutions, which has met our main goal. diff --git a/dockerfiles/dev-image b/dockerfiles/dev-image new file mode 100644 index 0000000..72f32b1 --- /dev/null +++ b/dockerfiles/dev-image @@ -0,0 +1,19 @@ +FROM ubuntu:22.04 + +ENV DEBIAN_FRONTEND noninteractive +ENV GOPATH=/go + +RUN apt-get -yqq update && apt-get install -yq --no-install-recommends man-db vim build-essential \ + sqlite3 curl apt-transport-https ca-certificates software-properties-common \ + && apt-get install -yq sqlite3 \ + && apt-get clean autoclean && apt-get autoremove -y && rm -rf /var/lib/{apt,dpkg,cache,log}/ + +# install docker +RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg +RUN echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null +RUN apt-get -yqq update && apt-get install -yq docker-ce && apt-get clean autoclean && apt-get autoremove -y && rm -rf /var/lib/{apt,dpkg,cache,log}/ + + +RUN curl -fsSL https://go.dev/dl/go1.21.0.linux-amd64.tar.gz | tar xz -C /usr/local + +RUN curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.55.2 diff --git a/dockerfiles/dev-run b/dockerfiles/dev-run new file mode 100644 index 0000000..d64b995 --- /dev/null +++ b/dockerfiles/dev-run @@ -0,0 +1,9 @@ +FROM "lomorage/lomo-backup:1.0" +ENV GOPATH=/go +ENV GOROOT=/usr/local/go +ENV PATH=$PATH:$GOROOT/bin:$GOPATH/bin +WORKDIR /go/src/github.com/lomorage/lomo-backup + +COPY ./dockerfiles/entrypoint.sh /entrypoint.sh +RUN chmod 755 /entrypoint.sh +ENTRYPOINT /entrypoint.sh "$@" diff --git a/dockerfiles/entrypoint.sh b/dockerfiles/entrypoint.sh new file mode 100755 index 0000000..1648ce8 --- /dev/null +++ b/dockerfiles/entrypoint.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +set -x + +echo user: $USER +echo uid: $UID + +$@