diff --git a/.github/workflows/create-nightly-release.yml b/.github/workflows/create-nightly-release.yml new file mode 100644 index 00000000..d3a93ef4 --- /dev/null +++ b/.github/workflows/create-nightly-release.yml @@ -0,0 +1,81 @@ +name: Create nightly release and packages +on: + schedule: + - cron: "0 0 * * *" + +jobs: + goreleaser: + runs-on: ubuntu-20.04 + steps: + - name: Install Go + uses: actions/setup-go@v2 + with: + go-version: 1.15.x + - name: Checkout code + uses: actions/checkout@v2 + with: + fetch-depth: 0 + - name: Configure GPG Key + run: | + mkdir -p ~/.gnupg/ + chmod 700 ~/.gnupg/ + printf "$GPG_SIGNING_KEY" | base64 --decode > ~/.gnupg/private.key + gpg --import --no-tty --batch --yes ~/.gnupg/private.key + env: + GPG_SIGNING_KEY: ${{ secrets.GPG_SIGNING_KEY }} + - name: Run GoReleaser + uses: goreleaser/goreleaser-action@v2 + with: + version: latest + args: release --rm-dist -f .goreleaser-nightly.yml + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SCOOP_BUCKET_GITHUB_TOKEN: ${{ secrets.SCOOP_BUCKET_GITHUB_TOKEN }} + HOMEBREW_TAP_GITHUB_TOKEN: ${{ secrets.SCOOP_BUCKET_GITHUB_TOKEN }} + + windows-msi: + needs: goreleaser + runs-on: windows-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + - name: Download zipped binaries + id: download_binaries + shell: bash + run: | + hub release download "${GITHUB_REF#refs/tags/}" -i '*windows_64bit*.zip' + printf "::set-output name=zip::%s\n" *.zip + unzip -o *.zip && rm -v *.zip + env: + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} + - name: Install go-msi + run: choco install -y "go-msi" + - name: Prepare PATH + shell: bash + run: | + echo "$WIX\\bin" >> $GITHUB_PATH + echo "C:\\Program Files\\go-msi" >> $GITHUB_PATH + - name: Build MSI + id: buildmsi + shell: bash + run: | + mkdir -p build + + # Convert license to rtf + go-msi to-rtf --src LICENSE --out LICENSE.rtf + + msi="$(basename "${{ steps.download_binaries.outputs.zip }}" ".zip").msi" + printf "::set-output name=msi::%s\n" "$msi" + go-msi make --msi "$PWD/$msi" --out "$PWD/build" --version "${GITHUB_REF#refs/tags/}" --arch x64 + - name: Decode cert + shell: bash + run: | + echo "${{ secrets.MSI_CODESIGN_CERT }}" | base64 -d > codesign.cert + - name: Sign MSI + run: | + .\buildscripts\signtool.exe sign /f codesign.cert /d "BitMaelum Suite" /p ${{ secrets.MSI_CODESIGN_PASS }} /v /fd sha256 /sha1 ${{ secrets.MSI_CODESIGN_FINGERPRINT }} /t "http://timestamp.comodoca.com/authenticode" ${{ steps.buildmsi.outputs.msi }} + - name: Upload MSI + shell: bash + run: hub release edit "${GITHUB_REF#refs/tags/}" -m "" --draft=false -a "${{ steps.buildmsi.outputs.msi }}" + env: + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} diff --git a/.goreleaser-nightly.yml b/.goreleaser-nightly.yml new file mode 100644 index 00000000..58df09fb --- /dev/null +++ b/.goreleaser-nightly.yml @@ -0,0 +1,94 @@ +before: + hooks: + - go mod download + +builds: + - <<: &build_defaults + env: + - CGO_ENABLED=0 + - PKG=github.com/bitmaelum/bitmaelum-suite/internal + ldflags: + - -X '{{.Env.PKG}}.BuildDate={{.Date}}' -X '{{.Env.PKG}}.GitCommit={{.FullCommit}}' -X '{{.Env.PKG}}.VersionTag=develop-nightly' + goarch: + - amd64 + - arm64 + goos: + - linux + - darwin + - windows + ignore: + - goos: windows + goarch: arm64 + - goos: darwin + goarch: arm64 + + main: ./cmd/bm-client/main.go + id: "bm-client" + binary: bm-client + + - <<: *build_defaults + main: ./cmd/bm-config/main.go + id: "bm-config" + binary: bm-config + + - <<: *build_defaults + main: ./cmd/bm-json/main.go + id: "bm-json" + binary: bm-json + + - <<: *build_defaults + main: ./cmd/bm-send/main.go + id: "bm-send" + binary: bm-send + + - <<: *build_defaults + main: ./cmd/bm-server/main.go + id: "bm-server" + binary: bm-server + + - <<: *build_defaults + main: ./cmd/bm-mail/main.go + id: "bm-mail" + binary: bm-mail + + - <<: *build_defaults + main: ./cmd/bm-bridge/main.go + id: "bm-bridge" + binary: bm-bridge + + +archives: + - id: nix +# builds: [darwin, linux] + <<: &archive_defaults + name_template: "{{ .ProjectName }}_nightly_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}" + files: + - LICENSE + wrap_in_directory: true + format: tar.gz + replacements: + amd64: x86_64 + - id: windows +# builds: [windows] + <<: *archive_defaults + wrap_in_directory: false + format: zip + replacements: + amd64: 64bit + +checksum: + name_template: 'checksums.txt' + +signs: + - artifacts: checksum + args: ["-u", "C2D6C816449D7AF38853F6FEDFD61AEF353E9701", "--no-tty", "--output", "${signature}", "--detach-sign", "${artifact}"] + +nfpms: + - license: MIT + maintainer: GitHub + homepage: https://bitmaelum.org + bindir: /usr + description: BitMaelum Suite + formats: + - deb + - rpm