Skip to content

Commit

Permalink
Merge 2d0d12d into aaa7b42
Browse files Browse the repository at this point in the history
  • Loading branch information
benthecarman committed Jun 14, 2021
2 parents aaa7b42 + 2d0d12d commit 9994ebf
Show file tree
Hide file tree
Showing 8 changed files with 313 additions and 31 deletions.
56 changes: 41 additions & 15 deletions .github/workflows/release.yml
@@ -1,7 +1,7 @@
name: Release
on:
push:
branches: [master, main, adaptor-dlc]
branches: [master, main, windows-packaging]
tags: ["*"]

env:
Expand All @@ -19,15 +19,15 @@ jobs:
- uses: olafurpg/setup-scala@v10
with:
java-version: zulu@1.11
- uses: olafurpg/setup-gpg@v3
- run: sbt ci-release docs/publishWebsite
env:
PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }}
PGP_SECRET: ${{ secrets.PGP_SECRET }}
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
GITHUB_DEPLOY_KEY: ${{ secrets.GITHUB_TOKEN }}
GIT_DEPLOY_KEY: ${{ secrets.GIT_DEPLOY_KEY }}
# - uses: olafurpg/setup-gpg@v3
# - run: sbt ci-release docs/publishWebsite
# env:
# PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }}
# PGP_SECRET: ${{ secrets.PGP_SECRET }}
# SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
# SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
# GITHUB_DEPLOY_KEY: ${{ secrets.GITHUB_TOKEN }}
# GIT_DEPLOY_KEY: ${{ secrets.GIT_DEPLOY_KEY }}
osx:
runs-on: [ macos-latest ]
steps:
Expand Down Expand Up @@ -58,15 +58,15 @@ jobs:
pkg-version: ${{steps.previoustag.outputs.tag}}
MACOS_CERTIFICATE_PWD: ${{ secrets.CERTIFICATES_P12_PASSWORD }}
MAC_NOTARIZATION_PW: ${{secrets.MAC_NOTARIZATION_PW}}
# Steps to build a fully signed and notarized krystal bull dmg
# Steps to build a fully signed and notarized bitcoin-s dmg
# 1. Unlock the OS x keychain so we don't have to input passwords via GUI prompts
# 2. Build krystalbull.app that is recursively signed with jpackage --mac-sign
# 3. Build an unsigned dmg that contains krystalbull.app inside of it (no idea why --mac-sign doesn't work with --type dmg)
# 2. Build bitcoin-s.app that is recursively signed with jpackage --mac-sign
# 3. Build an unsigned dmg that contains bitcoin-s.app inside of it (no idea why --mac-sign doesn't work with --type dmg)
# 4. Sign the dmg with codesign (jpackage dmg signing is broken for some reason)
# 5. Submit the dmg to apple's notarization service so can get it whitelisted for installation (see: https://developer.apple.com/documentation/security/notarizing_macos_software_before_distribution)
# 6. Sleep until apple notorization is done
# 7. Retrieve the signature and staple it to the dmg to so network requests do not need to be made to open the dmg
# 8. Check all signatures on krystalbull.app (see: https://developer.apple.com/documentation/security/notarizing_macos_software_before_distribution/resolving_common_notarization_issues#3087735)
# 8. Check all signatures on bitcoin-s.app (see: https://developer.apple.com/documentation/security/notarizing_macos_software_before_distribution/resolving_common_notarization_issues#3087735)
# 9. Check all dmg signatures
# 10. Display information about signed dmg
run: |
Expand Down Expand Up @@ -116,7 +116,7 @@ jobs:
- name: Setup Scala
uses: olafurpg/setup-scala@v10
with:
java-version: openjdk@1.16.0-1
java-version: openjdk@1.15.0-2
- name: 'Get Previous tag'
id: previoustag
uses: "WyriHaximus/github-action-get-previous-tag@v1"
Expand All @@ -139,4 +139,30 @@ jobs:
with:
name: "bitcoin-s-deb-${{steps.previoustag.outputs.tag}}-${{github.sha}}"
path: "${{ env.pkg-name }}_${{ steps.previoustag.outputs.tag }}-1_amd64.deb"
windows:
runs-on: [windows-latest]
steps:
- name: Checkout repo
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Setup Scala
uses: olafurpg/setup-scala@v10
with:
java-version: adopt@1.16.0-1

- name: 'Get Previous tag'
id: previoustag
uses: "WyriHaximus/github-action-get-previous-tag@v1"
with:
fallback: 1.0.0 # Optional fallback tag to use when no tag can be found
- name: Build msi
shell: bash
run: sbt bundle/windows:packageBin
- name: View artifacts
run: ls -R .
- name: Upload installer
uses: actions/upload-artifact@v1
with:
name: bitcoin-s-msi-${{steps.previoustag.outputs.tag}}-${{github.sha}}
path: "D:\\a\\bitcoin-s\\bitcoin-s\\app\\bundle\\target\\windows\\bitcoin-s-bundle.msi"
1 change: 0 additions & 1 deletion .jvmopts

This file was deleted.

49 changes: 49 additions & 0 deletions app/bundle/bundle.sbt
@@ -1,5 +1,10 @@
import com.typesafe.sbt.packager.windows._
import com.typesafe.sbt.SbtNativePackager.Windows

name := "bitcoin-s-bundle"

enablePlugins(WindowsPlugin)

mainClass := Some("org.bitcoins.bundle.gui.BundleGUI")

publish / skip := true
Expand All @@ -11,8 +16,52 @@ assembly / mainClass := Some("org.bitcoins.bundle.gui.BundleGUI")

assembly / assemblyJarName := s"${name.value}.jar"

//need compatibility with windows versioning scheme which is
//w.x.y.z
Windows / version := previousStableVersion.value.get

assembly / assemblyMergeStrategy := {
case PathList("META-INF", _ @_*) => MergeStrategy.discard
case PathList("reference.conf", _ @_*) => MergeStrategy.concat
case _ => MergeStrategy.first
}

mappings in Windows := (mappings in Universal).value

Compile / doc := (target.value / "none")
// general package information (can be scoped to Windows)
maintainer := "Chris Stewart <stewart.chris1234@gmail.com>"
// Will say "Welcome to the <packageSummary> Setup Wizard"
packageSummary := "Bitcoin-S"
// Will be used for drop down menu in setup wizard
packageDescription := "Bitcoin-S"

// wix build information
wixProductId := java.util.UUID.randomUUID().toString
wixProductUpgradeId := java.util.UUID.randomUUID().toString

// Adding the wanted wixFeature:
wixFeatures += WindowsFeature(
id = "shortcuts",
title = "Shortcuts in start menu",
desc = "Add shortcuts for execution and uninstall in start menu",
components = Seq(
AddShortCuts(Seq("bin/bitcoin-s-bundle.bat"))
)
)

// for windows class paths being too long
scriptClasspath := Seq("*")

Universal / mappings += {
// we are using the reference.conf as default application.conf
// the user can override settings here
val conf = (Compile / resourceDirectory).value / "application.conf"
conf -> "conf/application.conf"
}

scriptClasspath += "../conf/application.conf"

// add jvm parameter for typesafe config
bashScriptExtraDefines += """addJava "-Dconfig.file=${app_home}/../conf/application.conf""""
batScriptExtraDefines += """call :add_java "-Dconfig.file=%APP_HOME%\conf\application.conf""""
209 changes: 205 additions & 4 deletions app/bundle/src/main/resources/application.conf
@@ -1,8 +1,209 @@
bitcoin-s {
network = mainnet
network = mainnet # regtest, testnet3, mainnet, signet
datadir = ${HOME}/.bitcoin-s

node {
mode = neutrino # neutrino, spv, bitcoind
peers = ["neutrino.suredbits.com:8333"]
dbDefault = {
dataSourceClass = slick.jdbc.DatabaseUrlDataSource
profile = "slick.jdbc.SQLiteProfile$"

db {
# for information on parameters available here see
# https://scala-slick.org/doc/3.3.1/api/index.html#slick.jdbc.JdbcBackend$DatabaseFactoryDef@forConfig(String,Config,Driver,ClassLoader):Database
path = ${bitcoin-s.datadir}/${bitcoin-s.network}/
driver = org.sqlite.JDBC
user = ""
password = ""
host = localhost
port = 5432

# this needs to be set to 1 for SQLITE as it does not support concurrent database operations
# see: https://github.com/bitcoin-s/bitcoin-s/pull/1840
numThreads = 1
queueSize=5000
connectionPool = "HikariCP"
registerMbeans = true
}
hikari-logging = false
hikari-logging-interval = 10 minute
}

node = ${bitcoin-s.dbDefault}

node {
peers = ["neutrino.suredbits.com:8333"] # a list of peer addresses in form "hostname:portnumber"
# (e.g. "neutrino.testnet3.suredbits.com:18333")
# Port number is optional, the default value is 8333 for mainnet,
# 18333 for testnet and 18444 for regtest.
mode = neutrino # neutrino, spv
# this config key is read by Slick
db {
name = nodedb
poolName = "bitcoin-s-node-db"
}
# PostgreSQL example:
# db {
# name = node
# driver = org.postgresql.Driver
# user = postgres
# password = ""
# }
}


chain = ${bitcoin-s.dbDefault}
chain {
neutrino {
filter-header-batch-size.default = 2000
filter-header-batch-size.regtest = 10
# You can set a network specific filter-header-batch-size
# by adding a trailing `.networkId` (main, test, regtest)
# It is recommended to keep the main and test batch size high
# to keep the sync time fast, however, for regtest it should be small
# so it does not exceed the chain size.

filter-batch-size = 1000
}
# this config key is read by Slick
db {
name = chaindb
poolName = "bitcoin-s-chain-db"
}
# PostgreSQL example:
# db {
# name = chain
# driver = org.postgresql.Driver
# user = postgres
# password = ""
# }
}

wallet = ${bitcoin-s.dbDefault}
# settings for wallet module
wallet {
defaultAccountType = segwit # legacy, segwit, nested-segwit

bloomFalsePositiveRate = 0.0001 # percentage

addressGapLimit = 20

discoveryBatchSize = 100

requiredConfirmations = 6
# How big the address queue size is before we throw an exception
# because of an overflow
addressQueueSize = 10

# How long we attempt to generate an address for
# before we timeout
addressQueueTimeout = 5 seconds

# this config key is read by Slick
db {
name = walletdb
poolName = "bitcoin-s-wallet-db"
}
# PostgreSQL example:
# db {
# name = wallet
# driver = org.postgresql.Driver
# user = postgres
# password = ""
# }
}

server {
# The port we bind our rpc server on
rpcport = 9999
rpcbind = "127.0.0.1"
}

dlc = ${bitcoin-s.dbDefault}
dlc {
# this config key is read by Slick
db {
name = dlcdb
url = "jdbc:sqlite:"${bitcoin-s.dlc.db.path}${bitcoin-s.dlc.db.name}
}
# PostgreSQL example:
# db {
# name = dlcdb
# driver = org.postgresql.Driver
# username = postgres
# password = ""
# }
}

oracle = ${bitcoin-s.dbDefault}
oracle {
# this config key is read by Slick
db {
name = oracle
path = ${bitcoin-s.datadir}/oracle/
poolName = "bitcoin-s-oracle-db"
}
# PostgreSQL example:
# db {
# name = oracle
# driver = org.postgresql.Driver
# user = postgres
# password = ""
# }
}

test = ${bitcoin-s.dbDefault}
test {
# this config key is read by Slick
db {
name = testdb
}
}
}

akka {

# Let Cli commands take 30 seconds
http.server.request-timeout = 30s

# Can parse 20MBs
http.server.parsing.max-content-length = 20m
http.client.parsing.max-content-length = 20m

# Loggers to register at boot time (akka.event.Logging$DefaultLogger logs
# to STDOUT)
loggers = ["akka.event.slf4j.Slf4jLogger"]

# Log level used by the configured loggers (see "loggers") as soon
# as they have been started; before that, see "stdout-loglevel"
# Options: OFF, ERROR, WARNING, INFO, DEBUG
loglevel = "DEBUG"

# Log level for the very basic logger activated during ActorSystem startup.
# This logger prints the log messages to stdout (System.out).
# Options: OFF, ERROR, WARNING, INFO, DEBUG
stdout-loglevel = "DEBUG"

# Filter of log events that is used by the LoggingAdapter before
# publishing log events to the eventStream.
logging-filter = "akka.event.slf4j.Slf4jLoggingFilter"

use-slf4j = on

log-config-on-start = off

actor {
debug {
# enable DEBUG logging of all AutoReceiveMessages (Kill, PoisonPill etc.)
autoreceive= off
# enable function of LoggingReceive, which is to log any received message at
# DEBUG level
receive = on
# enable DEBUG logging of unhandled messages
unhandled = off

# enable DEBUG logging of actor lifecycle changes
lifecycle = off

event-stream=off
}
}
}

0 comments on commit 9994ebf

Please sign in to comment.