From a0e48e3dfa24436f456d3fb783a04f2ef24a6ea2 Mon Sep 17 00:00:00 2001 From: Ayman Bagabas Date: Mon, 3 Jan 2022 18:44:16 +0300 Subject: [PATCH] Add develop and nightly builds --- .github/workflows/build.yml | 127 ++++++++++++++++++++++- .github/workflows/goreleaser-publish.yml | 60 ----------- .github/workflows/goreleaser.yml | 28 ++++- .goreleaser.yml | 2 +- README.md | 1 + docker.md | 3 +- 6 files changed, 155 insertions(+), 66 deletions(-) delete mode 100644 .github/workflows/goreleaser-publish.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3901f38d5..3c7d41e98 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,7 +1,12 @@ name: build + on: [push, pull_request] + +permissions: + packages: write + jobs: - test: + build: strategy: matrix: go-version: [~1.17, ^1] @@ -25,4 +30,122 @@ jobs: run: go build -v ./... - name: Test - run: go test ./... \ No newline at end of file + run: go test ./... + + nightly: + env: + GO111MODULE: "on" + DOCKER_CLI_EXPERIMENTAL: enabled + runs-on: ubuntu-latest + steps: + - name: Install Go + uses: actions/setup-go@v2 + with: + go-version: "~1.17" + + - name: Checkout code + uses: actions/checkout@v2 + + - name: Login to GitHub Container Registry + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1 + + - name: Run GoReleaser + uses: goreleaser/goreleaser-action@v2 + with: + distribution: goreleaser + version: latest + args: release --snapshot --rm-dist --skip-sign + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + HOMEBREW_TAP_GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }} + + - name: Push docker images + run: | + GIT_HASH=$(git rev-parse --short "$GITHUB_SHA") + + docker tag ghcr.io/$GITHUB_REPOSITORY:latest-amd64 ghcr.io/$GITHUB_REPOSITORY:devel-$GIT_HASH-amd64 + docker tag ghcr.io/$GITHUB_REPOSITORY:latest-arm64 ghcr.io/$GITHUB_REPOSITORY:devel-$GIT_HASH-arm64 + docker tag ghcr.io/$GITHUB_REPOSITORY:latest-armv7 ghcr.io/$GITHUB_REPOSITORY:devel-$GIT_HASH-armv7 + docker tag ghcr.io/$GITHUB_REPOSITORY:latest-i386 ghcr.io/$GITHUB_REPOSITORY:devel-$GIT_HASH-i386 + + docker push ghcr.io/$GITHUB_REPOSITORY:devel-$GIT_HASH-amd64 + docker push ghcr.io/$GITHUB_REPOSITORY:devel-$GIT_HASH-arm64 + docker push ghcr.io/$GITHUB_REPOSITORY:devel-$GIT_HASH-armv7 + docker push ghcr.io/$GITHUB_REPOSITORY:devel-$GIT_HASH-i386 + + docker manifest create ghcr.io/$GITHUB_REPOSITORY:devel-$GIT_HASH \ + ghcr.io/$GITHUB_REPOSITORY:devel-$GIT_HASH-amd64 \ + ghcr.io/$GITHUB_REPOSITORY:devel-$GIT_HASH-arm64 \ + ghcr.io/$GITHUB_REPOSITORY:devel-$GIT_HASH-armv7 \ + ghcr.io/$GITHUB_REPOSITORY:devel-$GIT_HASH-i386 + docker manifest push ghcr.io/$GITHUB_REPOSITORY:devel-$GIT_HASH + + if [[ $GITHUB_REF = 'refs/heads/main' && $GITHUB_EVENT_NAME = 'push' ]]; then + docker tag ghcr.io/$GITHUB_REPOSITORY:latest-amd64 ghcr.io/$GITHUB_REPOSITORY:devel-amd64 + docker tag ghcr.io/$GITHUB_REPOSITORY:latest-arm64 ghcr.io/$GITHUB_REPOSITORY:devel-arm64 + docker tag ghcr.io/$GITHUB_REPOSITORY:latest-armv7 ghcr.io/$GITHUB_REPOSITORY:devel-armv7 + docker tag ghcr.io/$GITHUB_REPOSITORY:latest-i386 ghcr.io/$GITHUB_REPOSITORY:devel-i386 + + docker push ghcr.io/$GITHUB_REPOSITORY:devel-amd64 + docker push ghcr.io/$GITHUB_REPOSITORY:devel-arm64 + docker push ghcr.io/$GITHUB_REPOSITORY:devel-armv7 + docker push ghcr.io/$GITHUB_REPOSITORY:devel-i386 + + docker manifest create ghcr.io/$GITHUB_REPOSITORY:devel \ + ghcr.io/$GITHUB_REPOSITORY:devel-amd64 \ + ghcr.io/$GITHUB_REPOSITORY:devel-arm64 \ + ghcr.io/$GITHUB_REPOSITORY:devel-armv7 \ + ghcr.io/$GITHUB_REPOSITORY:devel-i386 + docker manifest push ghcr.io/$GITHUB_REPOSITORY:devel + fi + + - uses: actions/upload-artifact@v2 + with: + name: Linux (x86_64) + path: | + dist/soft-serve_linux_amd64/* + LICENSE + README.md + + - uses: actions/upload-artifact@v2 + with: + name: Linux (arm64) + path: | + dist/soft-serve_linux_arm64/* + LICENSE + README.md + + - uses: actions/upload-artifact@v2 + with: + name: MacOS (x86_64) + path: | + dist/soft-serve_darwin_amd64/* + LICENSE + README.md + + - uses: actions/upload-artifact@v2 + with: + name: MacOS (arm64) + path: | + dist/soft-serve_darwin_arm64/* + LICENSE + README.md + + - uses: actions/upload-artifact@v2 + with: + name: Windows (x86_64) + path: | + dist/soft-serve_windows_amd64/* + LICENSE + README.md diff --git a/.github/workflows/goreleaser-publish.yml b/.github/workflows/goreleaser-publish.yml deleted file mode 100644 index 89f65fac6..000000000 --- a/.github/workflows/goreleaser-publish.yml +++ /dev/null @@ -1,60 +0,0 @@ -name: goreleaser-publish - -on: - push: - tags: - - v*.*.* - -concurrency: - group: goreleaser - cancel-in-progress: true - -permissions: - contents: write - packages: write - -jobs: - goreleaser: - runs-on: ubuntu-latest - env: - DOCKER_CLI_EXPERIMENTAL: enabled - steps: - - name: Checkout - uses: actions/checkout@v2 - with: - fetch-depth: 0 - - - name: Set up Go - uses: actions/setup-go@v2 - with: - go-version: 1.17 - - - name: Login to DockerHub - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Login to GitHub Container Registry - uses: docker/login-action@v1 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Set up QEMU - uses: docker/setup-qemu-action@v1 - - - name: Set up Docker Buildx - id: buildx - uses: docker/setup-buildx-action@v1 - - - name: Run GoReleaser - uses: goreleaser/goreleaser-action@v2 - with: - distribution: goreleaser - version: latest - args: release --rm-dist --skip-sign - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - HOMEBREW_TAP_GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }} diff --git a/.github/workflows/goreleaser.yml b/.github/workflows/goreleaser.yml index 54debb989..6d1008d94 100644 --- a/.github/workflows/goreleaser.yml +++ b/.github/workflows/goreleaser.yml @@ -1,6 +1,17 @@ name: goreleaser -on: [push, pull_request] +on: + push: + tags: + - v*.*.* + +concurrency: + group: goreleaser + cancel-in-progress: true + +permissions: + contents: write + packages: write jobs: goreleaser: @@ -18,6 +29,19 @@ jobs: with: go-version: 1.17 + - name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Login to GitHub Container Registry + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Set up QEMU uses: docker/setup-qemu-action@v1 @@ -30,7 +54,7 @@ jobs: with: distribution: goreleaser version: latest - args: release --snapshot --rm-dist --skip-sign + args: release --rm-dist --skip-sign env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} HOMEBREW_TAP_GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }} diff --git a/.goreleaser.yml b/.goreleaser.yml index f4952badb..40fab7e76 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -76,7 +76,7 @@ signs: checksum: name_template: "checksums.txt" snapshot: - name_template: "{{ .Tag }}-next" + name_template: "{{ incpatch .Version }}-devel" changelog: sort: asc filters: diff --git a/README.md b/README.md index 088690c10..bdc4d185d 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ Soft Serve
Latest Release Build Status +

A tasty, self-hostable Git server for the command line. 🍦 diff --git a/docker.md b/docker.md index 0e6619b5a..40f171936 100644 --- a/docker.md +++ b/docker.md @@ -1,6 +1,6 @@ # Running Soft-Serve with Docker -The official Soft Serve Docker images are available at [charmcli/soft-serve][docker]. +The official Soft Serve Docker images are available at [charmcli/soft-serve][docker]. Development and nightly builds are available at [ghcr.io/charmbracelet/soft-serve][ghcr] ```sh docker pull charmcli/soft-serve:latest @@ -36,6 +36,7 @@ services: ``` [docker]: https://hub.docker.com/r/charmcli/soft-serve +[ghcr]: https://github.com/charmbracelet/soft-serve/pkgs/container/soft-serve ***