diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e82998f..f54d7f0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -6,34 +6,6 @@ on: - "v*.*.*" jobs: - docker: - runs-on: ubuntu-latest - steps: - - name: Set up QEMU - uses: docker/setup-qemu-action@v1 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 - - name: Docker Labels - id: meta - uses: crazy-max/ghaction-docker-meta@v2 - with: - images: cupcakearmy/autorestic - tags: | - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - type=semver,pattern={{major}} - - name: Login to DockerHub - uses: docker/login-action@v1 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Build and push - uses: docker/build-push-action@v2 - with: - platforms: linux/amd64,linux/arm64 - push: true - tags: ${{ steps.meta.outputs.tags }} - release: runs-on: ubuntu-latest steps: @@ -51,6 +23,9 @@ jobs: - name: Release uses: softprops/action-gh-release@v1 with: - files: dist/* + files: | + dist/*.bz2 + dist/*.zip + dist/SHA256SUMS env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/build/build.go b/build/build.go index 81eaecb..143aa05 100644 --- a/build/build.go +++ b/build/build.go @@ -10,7 +10,7 @@ import ( "path" "path/filepath" "sync" - + "strings" "github.com/cupcakearmy/autorestic/internal" ) @@ -22,6 +22,7 @@ var targets = map[string][]string{ "linux": {"386", "amd64", "arm", "arm64"}, "netbsd": {"386", "amd64"}, "openbsd": {"386", "amd64"}, + "windows": {"386", "amd64"}, } type buildOptions struct { @@ -31,6 +32,12 @@ type buildOptions struct { func build(options buildOptions, wg *sync.WaitGroup) { fmt.Printf("Building %s %s\n", options.Target, options.Arch) out := fmt.Sprintf("autorestic_%s_%s_%s", options.Version, options.Target, options.Arch) + + // append .exe for Windows + if (options.Target == "windows") { + out += ".exe" + } + out = path.Join(DIR, out) out, _ = filepath.Abs(out) fmt.Println(out) @@ -53,7 +60,17 @@ func build(options buildOptions, wg *sync.WaitGroup) { // Compress { - c := exec.Command("bzip2", out) + var c *exec.Cmd + switch options.Target { + // use zip for Windows + case "windows": + zipFile := strings.TrimSuffix(out, ".exe") + ".zip" + c = exec.Command("zip", "-j", "-q", "-X", zipFile, out) + // use bzip2 for everything else + default: + c = exec.Command("bzip2", out) + } + c.Dir = DIR c.Stdout = os.Stdout c.Stderr = os.Stderr