Skip to content

Commit

Permalink
release: create a release for pop-cli (#119)
Browse files Browse the repository at this point in the history
* create release

* add a production profile

* build: enable vendored-openssl via feature to ease cross compilation (#122)

---------

Co-authored-by: Frank Bell <[email protected]>
  • Loading branch information
brunopgalvao and evilrobot-01 committed Apr 29, 2024
1 parent 15ce5fc commit dbcf6ba
Show file tree
Hide file tree
Showing 4 changed files with 108 additions and 3 deletions.
84 changes: 84 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
name: pop-cli release

on:
release:
types: [ published ]
workflow_dispatch:
inputs:
ref:
description: ref to build binary from
required: false

jobs:
build-node:
runs-on: ${{ matrix.platform.os }}
permissions:
contents: write
strategy:
matrix:
platform:
# Linux
- os: ubuntu-22.04
target: aarch64-unknown-linux-gnu
- os: ubuntu-22.04
target: x86_64-unknown-linux-gnu
# macOS
- os: macos-14
target: aarch64-apple-darwin
- os: macos-14
target: x86_64-apple-darwin
env:
RUSTFLAGS: "${{ matrix.platform.cpu != '' && format('-C target-cpu={0}', matrix.platform.cpu) || '' }} ${{ matrix.platform.target == 'aarch64-unknown-linux-gnu' && '-C linker=aarch64-linux-gnu-gcc' || '' }}"
path: "target/${{ matrix.platform.target }}/production"
package: "pop-${{ matrix.platform.target }}${{ matrix.platform.cpu != '' && format('-{0}', matrix.platform.cpu) || '' }}.tar.gz"
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ github.event.inputs.ref }}

- name: Install packages (Linux)
if: contains(matrix.platform.target, 'linux')
run: |
sudo apt-get install -y protobuf-compiler ${{ contains(matrix.platform.target, 'aarch64') && 'crossbuild-essential-arm64' || '' }}
protoc --version
- name: Install packages (macOS)
if: contains(matrix.platform.target, 'apple')
run: |
brew install protobuf
protoc --version
- name: Add target
run: rustup target add ${{ matrix.platform.target }}

- name: Build pop-cli
run: cargo build --profile=production -p pop-cli --target ${{ matrix.platform.target }} --features static-ssl

- name: Package binary (Linux)
if: contains(matrix.platform.target, 'linux')
run: |
cd ${{ env.path }}
sha256sum pop > pop.sha256
tar -czf ${{ env.package }} pop pop.sha256
- name: Package binary (macOS)
if: contains(matrix.platform.target, 'apple')
run: |
cd ${{ env.path }}
shasum -a 256 pop > pop.sha256
tar -czf ${{ env.package }} pop pop.sha256
- name: Upload binary
uses: actions/upload-artifact@v3
with:
name: binaries
path: ${{ env.path }}/${{ env.package }}

- name: Add binary to release
if: github.event_name == 'release'
uses: softprops/action-gh-release@v1
with:
files: |
${{ env.path }}/${{ env.package }}
10 changes: 10 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
[profile.release]
panic = "unwind"
opt-level = 3
debug = false

[profile.production]
inherits = "release"
lto = true
codegen-units = 1

[workspace]
resolver = "2"
members = ["crates/*"]
Expand Down
7 changes: 4 additions & 3 deletions crates/pop-cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -23,21 +23,22 @@ strum.workspace = true
strum_macros.workspace = true

# contracts
pop-contracts = { path = "../pop-contracts", optional = true}
pop-contracts = { path = "../pop-contracts", optional = true }
sp-core = { workspace = true, optional = true }
sp-weights = { workspace = true, optional = true }

# parachains
pop-parachains = { path = "../pop-parachains", optional = true }
dirs = { version = "5.0", optional = true}
git2.workspace = true
dirs = { version = "5.0", optional = true }
git2.workspace = true

[dev-dependencies]
assert_cmd = "2.0.14"
predicates = "3.1.0"

[features]
default = ["contract", "parachain"]
static-ssl = ["git2/vendored-openssl"]
contract = [
"dep:pop-contracts",
"dep:sp-core",
Expand Down

0 comments on commit dbcf6ba

Please sign in to comment.