diff --git a/.github/workflows/deploy-binary.yml b/.github/workflows/deploy-binary.yml new file mode 100644 index 00000000..02d5b9e3 --- /dev/null +++ b/.github/workflows/deploy-binary.yml @@ -0,0 +1,40 @@ +name: Publish binaries + +on: + push: + tags: + - "v3.*.*" + +jobs: + goreleaser: + runs-on: ubuntu-latest + steps: + # pull code + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 0 + + # install latest node + - name: Set up Node.js + uses: actions/setup-node@v3 + with: + node-version: latest + + # build sveltekit frontend + - name: Build frontend + run: npm --prefix=./frontend ci && npm --prefix=./frontend run build && cp -r ./frontend/build/* ./backend/pb_public/ + + # install latest golang + - name: Set up Go + uses: actions/setup-go@v3 + + # build + - name: Run GoReleaser + uses: goreleaser/goreleaser-action@v4 + with: + distribution: goreleaser + version: latest + args: release --rm-dist + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/deploy-docker.yml b/.github/workflows/deploy-docker.yml new file mode 100644 index 00000000..3fd96ec1 --- /dev/null +++ b/.github/workflows/deploy-docker.yml @@ -0,0 +1,59 @@ +name: Publish docker images + +on: + push: + tags: + - "v3.*.*" + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Check Out Repo + uses: actions/checkout@v3 + + - name: Prepare tags + id: prep + run: | + DOCKER_IMAGE=${{ secrets.DOCKER_HUB_USERNAME }}/upsnap + VERSION=${GITHUB_REF#refs/tags/} + TAGS="${DOCKER_IMAGE}:${VERSION},${DOCKER_IMAGE}:${VERSION:0:2},${DOCKER_IMAGE}:latest" + echo ::set-output name=tags::${TAGS} + + - 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: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v2 + + - name: Log in to the Container registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Build and push + id: docker_build + uses: docker/build-push-action@v3 + with: + context: . + file: ./Dockerfile + platforms: linux/amd64,linux/arm64,linux/arm/v7 + builder: ${{ steps.buildx.outputs.name }} + push: true + tags: ${{ steps.prep.outputs.tags }} + cache-from: type=local,src=/tmp/.buildx-cache + cache-to: type=local,dest=/tmp/.buildx-cache + + - name: Image digest + run: echo ${{ steps.docker_build.outputs.digest }} diff --git a/.goreleaser.yml b/.goreleaser.yml new file mode 100644 index 00000000..29a486ff --- /dev/null +++ b/.goreleaser.yml @@ -0,0 +1,44 @@ +project_name: upsnap + +dist: .builds + +before: + hooks: + - go mod tidy + +builds: + - main: ./backend + binary: upsnap + ldflags: + - -s -w -X github.com/seriousm4x/UpSnap.Version={{ .Version }} + env: + - CGO_ENABLED=0 + goos: + - linux + - windows + - darwin + goarch: + - amd64 + - arm64 + - arm + goarm: + - 7 + ignore: + - goos: windows + goarch: arm + - goos: darwin + goarch: arm + +release: + draft: true + +archives: + - format: zip + files: + - LICENSE* + +checksum: + name_template: "checksums.txt" + +snapshot: + name_template: "{{ incpatch .Version }}-next" diff --git a/README.md b/README.md index 3a56c646..cdf23a31 100644 --- a/README.md +++ b/README.md @@ -52,5 +52,5 @@ Open up [http://localhost:5173/](http://localhost:5173/) - [x] [~~#32 API available?~~](https://github.com/seriousm4x/UpSnap/issues/32) - [x] ~~add db import from v2~~ -- [ ] move docker images to github packages and setup new workflow file -- [ ] create dockerfile and docker-compose.yml +- [x] ~~move docker images to github packages and setup new workflow file~~ +- [x] ~~create dockerfile and docker-compose.yml~~