-
Notifications
You must be signed in to change notification settings - Fork 26
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
gh workflow refactoring; bump release to 0.99.0
- Loading branch information
Showing
37 changed files
with
968 additions
and
536 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,5 @@ | ||
# cargo build --all --target=aarch64-unknown-linux-gnu | ||
[target.aarch64-unknown-linux-gnu] | ||
linker = "aarch64-linux-gnu-gcc" | ||
[target.x86_64-pc-windows-msvc] | ||
rustflags = ["-C", "target-feature=+crt-static"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
name: Build Docker | ||
|
||
on: | ||
workflow_call: | ||
|
||
jobs: | ||
build-docker-images: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout code | ||
uses: actions/checkout@v4 | ||
|
||
- name: Set up Python | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: '3.x' | ||
|
||
- name: Install dependencies | ||
run: | | ||
python -m pip install --upgrade pip | ||
pip install toml | ||
# Install any other dependencies your script might need | ||
- name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v2 | ||
|
||
- name: Login to Docker Hub | ||
if: github.event_name != 'pull_request' | ||
uses: docker/login-action@v2 | ||
with: | ||
username: ${{ secrets.DOCKERHUB_USERNAME }} | ||
password: ${{ secrets.DOCKERHUB_TOKEN }} | ||
|
||
- name: Determine version | ||
id: version | ||
run: | | ||
if [[ $GITHUB_REF == refs/tags/* ]]; then | ||
echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT | ||
else | ||
echo "VERSION=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT | ||
fi | ||
- name: Build and Push Docker images | ||
run: python build-tools/docker/build.py --push --docker-hub-user ${{ secrets.DOCKERHUB_USERNAME }} --version ${{ steps.version.outputs.VERSION }} --latest | ||
|
||
env: | ||
DOCKER_BUILDKIT: 1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,214 @@ | ||
name: Build Linux | ||
|
||
on: | ||
workflow_call: | ||
inputs: | ||
binary_list: | ||
required: true | ||
type: string | ||
|
||
jobs: | ||
build: | ||
runs-on: ubuntu-latest | ||
strategy: | ||
matrix: | ||
arch: [aarch64, x86_64] | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
submodules: recursive | ||
|
||
- name: Extract version from tag | ||
id: get_version | ||
run: | | ||
VERSION=${GITHUB_REF#refs/tags/} | ||
VERSION=${VERSION#v} | ||
echo "VERSION=$VERSION" >> $GITHUB_OUTPUT | ||
echo "Version extracted: $VERSION" | ||
- name: Set up Rust | ||
uses: dtolnay/rust-toolchain@stable | ||
with: | ||
toolchain: stable | ||
targets: ${{ matrix.arch }}-unknown-linux-gnu | ||
|
||
- name: Install cross-compilation tools | ||
run: | | ||
sudo apt-get update | ||
sudo apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu | ||
- name: Install dependencies | ||
run: | | ||
sudo apt-get install -y debhelper zip imagemagick | ||
if [ "${{ matrix.arch }}" = "x86_64" ]; then | ||
sudo apt-get install -y rpm | ||
fi | ||
- name: Build | ||
run: | | ||
cargo build --release --target ${{ matrix.arch }}-unknown-linux-gnu | ||
- name: Create Debian package for GUI | ||
run: | | ||
mkdir -p debian-gui/DEBIAN | ||
mkdir -p debian-gui/usr/bin | ||
mkdir -p debian-gui/usr/share/applications | ||
mkdir -p debian-gui/usr/share/icons/hicolor/512x512/apps | ||
mkdir -p debian-gui/usr/share/icons/hicolor/256x256/apps | ||
mkdir -p debian-gui/usr/share/icons/hicolor/128x128/apps | ||
mkdir -p debian-gui/usr/share/icons/hicolor/64x64/apps | ||
cp target/${{ matrix.arch }}-unknown-linux-gnu/release/node-gui debian-gui/usr/bin/ | ||
# Copy and convert icon files | ||
cp build-tools/assets/node-gui-icon_512.png debian-gui/usr/share/icons/hicolor/512x512/apps/mintlayer-node-gui.png | ||
convert build-tools/assets/node-gui-icon_512.png -resize 256x256 debian-gui/usr/share/icons/hicolor/256x256/apps/mintlayer-node-gui.png | ||
convert build-tools/assets/node-gui-icon_512.png -resize 128x128 debian-gui/usr/share/icons/hicolor/128x128/apps/mintlayer-node-gui.png | ||
convert build-tools/assets/node-gui-icon_512.png -resize 64x64 debian-gui/usr/share/icons/hicolor/64x64/apps/mintlayer-node-gui.png | ||
# Create .desktop file | ||
cat << EOF > debian-gui/usr/share/applications/mintlayer-node-gui.desktop | ||
[Desktop Entry] | ||
Name=Mintlayer Node GUI | ||
Exec=/usr/bin/node-gui | ||
Icon=mintlayer-node-gui | ||
Type=Application | ||
Categories=Utility;Network; | ||
EOF | ||
cat << EOF > debian-gui/DEBIAN/control | ||
Package: mintlayer-node-gui | ||
Version: ${{ steps.get_version.outputs.VERSION }} | ||
Section: utils | ||
Priority: optional | ||
Architecture: ${{ matrix.arch == 'x86_64' && 'amd64' || 'arm64' }} | ||
Maintainer: Mintlayer <[email protected]> | ||
Description: Mintlayer Node GUI | ||
A graphical user interface for the Mintlayer node. | ||
EOF | ||
dpkg-deb --build debian-gui | ||
mv debian-gui.deb Mintlayer_Node_GUI_linux_${{ steps.get_version.outputs.VERSION }}_${{ matrix.arch == 'x86_64' && 'amd64' || 'arm64' }}.deb | ||
- name: Create Debian package for Node (without GUI) | ||
run: | | ||
mkdir -p debian-node/DEBIAN | ||
mkdir -p debian-node/usr/bin | ||
IFS=',' read -ra BINARIES <<< "${{ inputs.binary_list }}" | ||
for binary in "${BINARIES[@]}"; do | ||
cp target/${{ matrix.arch }}-unknown-linux-gnu/release/$binary debian-node/usr/bin/ | ||
done | ||
cat << EOF > debian-node/DEBIAN/control | ||
Package: mintlayer-node | ||
Version: ${{ steps.get_version.outputs.VERSION }} | ||
Section: utils | ||
Priority: optional | ||
Architecture: ${{ matrix.arch == 'x86_64' && 'amd64' || 'arm64' }} | ||
Maintainer: Mintlayer <[email protected]> | ||
Description: Mintlayer Node | ||
Mintlayer node and associated tools. | ||
EOF | ||
dpkg-deb --build debian-node | ||
mv debian-node.deb Mintlayer_Node_linux_${{ steps.get_version.outputs.VERSION }}_${{ matrix.arch == 'x86_64' && 'amd64' || 'arm64' }}.deb | ||
- name: Create RPM package for GUI | ||
if: matrix.arch == 'x86_64' | ||
run: | | ||
mkdir -p rpm-gui/{BUILD,RPMS,SOURCES,SPECS,SRPMS} | ||
mkdir -p rpm-gui/BUILDROOT/mintlayer-node-gui-${{ steps.get_version.outputs.VERSION }}-1.x86_64 | ||
cp -r debian-gui/usr rpm-gui/BUILDROOT/mintlayer-node-gui-${{ steps.get_version.outputs.VERSION }}-1.x86_64/ | ||
cat << EOF > rpm-gui/SPECS/mintlayer-node-gui.spec | ||
Name: mintlayer-node-gui | ||
Version: ${{ steps.get_version.outputs.VERSION }} | ||
Release: 1 | ||
Summary: Mintlayer Node GUI | ||
License: MIT | ||
BuildArch: x86_64 | ||
%description | ||
A graphical user interface for the Mintlayer node. | ||
%files | ||
/usr/bin/node-gui | ||
/usr/share/applications/mintlayer-node-gui.desktop | ||
/usr/share/icons/hicolor/512x512/apps/mintlayer-node-gui.png | ||
/usr/share/icons/hicolor/256x256/apps/mintlayer-node-gui.png | ||
/usr/share/icons/hicolor/128x128/apps/mintlayer-node-gui.png | ||
/usr/share/icons/hicolor/64x64/apps/mintlayer-node-gui.png | ||
%changelog | ||
* $(date "+%a %b %d %Y") Mintlayer <[email protected]> - ${{ steps.get_version.outputs.VERSION }}-1 | ||
- Initial RPM release | ||
EOF | ||
rpmbuild -bb --define "_topdir $(pwd)/rpm-gui" --buildroot $(pwd)/rpm-gui/BUILDROOT/mintlayer-node-gui-${{ steps.get_version.outputs.VERSION }}-1.x86_64 rpm-gui/SPECS/mintlayer-node-gui.spec | ||
mv rpm-gui/RPMS/x86_64/mintlayer-node-gui-${{ steps.get_version.outputs.VERSION }}-1.x86_64.rpm Mintlayer_Node_GUI_linux_${{ steps.get_version.outputs.VERSION }}_x86_64.rpm | ||
- name: Create RPM package for Node (without GUI) | ||
if: matrix.arch == 'x86_64' | ||
run: | | ||
mkdir -p rpm-node/{BUILD,RPMS,SOURCES,SPECS,SRPMS} | ||
mkdir -p rpm-node/BUILDROOT/mintlayer-node-${{ steps.get_version.outputs.VERSION }}-1.x86_64 | ||
cp -r debian-node/usr rpm-node/BUILDROOT/mintlayer-node-${{ steps.get_version.outputs.VERSION }}-1.x86_64/ | ||
cat << EOF > rpm-node/SPECS/mintlayer-node.spec | ||
Name: mintlayer-node | ||
Version: ${{ steps.get_version.outputs.VERSION }} | ||
Release: 1 | ||
Summary: Mintlayer Node | ||
License: MIT | ||
BuildArch: x86_64 | ||
%description | ||
Mintlayer node and associated tools. | ||
%files | ||
/usr/bin/* | ||
%changelog | ||
* $(date "+%a %b %d %Y") Mintlayer <[email protected]> - ${{ steps.get_version.outputs.VERSION }}-1 | ||
- Initial RPM release | ||
EOF | ||
rpmbuild -bb --define "_topdir $(pwd)/rpm-node" --buildroot $(pwd)/rpm-node/BUILDROOT/mintlayer-node-${{ steps.get_version.outputs.VERSION }}-1.x86_64 rpm-node/SPECS/mintlayer-node.spec | ||
mv rpm-node/RPMS/x86_64/mintlayer-node-${{ steps.get_version.outputs.VERSION }}-1.x86_64.rpm Mintlayer_Node_linux_${{ steps.get_version.outputs.VERSION }}_x86_64.rpm | ||
- name: Package Mintlayer Node (without GUI) as ZIP | ||
run: | | ||
mkdir -p Mintlayer_Node_linux_${{ steps.get_version.outputs.VERSION }}_${{ matrix.arch }} | ||
IFS=',' read -ra BINARIES <<< "${{ inputs.binary_list }}" | ||
for binary in "${BINARIES[@]}"; do | ||
cp target/${{ matrix.arch }}-unknown-linux-gnu/release/$binary Mintlayer_Node_linux_${{ steps.get_version.outputs.VERSION }}_${{ matrix.arch }}/ | ||
done | ||
zip -r Mintlayer_Node_linux_${{ steps.get_version.outputs.VERSION }}_${{ matrix.arch }}.zip Mintlayer_Node_linux_${{ steps.get_version.outputs.VERSION }}_${{ matrix.arch }} | ||
- name: Upload GUI DEB Artifact | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: Mintlayer_Node_GUI_linux_${{ steps.get_version.outputs.VERSION }}_${{ matrix.arch }}_deb | ||
path: Mintlayer_Node_GUI_linux_${{ steps.get_version.outputs.VERSION }}_${{ matrix.arch == 'x86_64' && 'amd64' || 'arm64' }}.deb | ||
|
||
- name: Upload Node DEB Artifact (without GUI) | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: Mintlayer_Node_linux_${{ steps.get_version.outputs.VERSION }}_${{ matrix.arch }}_deb | ||
path: Mintlayer_Node_linux_${{ steps.get_version.outputs.VERSION }}_${{ matrix.arch == 'x86_64' && 'amd64' || 'arm64' }}.deb | ||
|
||
- name: Upload GUI RPM Artifact | ||
if: matrix.arch == 'x86_64' | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: Mintlayer_Node_GUI_linux_${{ steps.get_version.outputs.VERSION }}_x86_64_rpm | ||
path: Mintlayer_Node_GUI_linux_${{ steps.get_version.outputs.VERSION }}_x86_64.rpm | ||
|
||
- name: Upload Node RPM Artifact (without GUI) | ||
if: matrix.arch == 'x86_64' | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: Mintlayer_Node_linux_${{ steps.get_version.outputs.VERSION }}_x86_64_rpm | ||
path: Mintlayer_Node_linux_${{ steps.get_version.outputs.VERSION }}_x86_64.rpm | ||
|
||
- name: Upload Node ZIP Artifact (without GUI) | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: Mintlayer_Node_linux_${{ steps.get_version.outputs.VERSION }}_${{ matrix.arch }}_zip | ||
path: Mintlayer_Node_linux_${{ steps.get_version.outputs.VERSION }}_${{ matrix.arch }}.zip |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
name: Build macOS | ||
|
||
on: | ||
workflow_call: | ||
inputs: | ||
binary_list: | ||
required: true | ||
type: string | ||
|
||
jobs: | ||
build: | ||
runs-on: macos-12 | ||
strategy: | ||
matrix: | ||
arch: [aarch64, x86_64] | ||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
submodules: recursive | ||
|
||
- name: Extract version from tag | ||
id: get_version | ||
run: | | ||
VERSION=${GITHUB_REF#refs/tags/} | ||
VERSION=${VERSION#v} | ||
echo "VERSION=$VERSION" >> $GITHUB_OUTPUT | ||
echo "Version extracted: $VERSION" | ||
- name: Set up Rust | ||
uses: dtolnay/rust-toolchain@stable | ||
with: | ||
toolchain: stable | ||
targets: ${{ matrix.arch }}-apple-darwin | ||
|
||
- name: Build | ||
run: | | ||
cargo build --release --target ${{ matrix.arch }}-apple-darwin | ||
- name: Sign and Notarize GUI | ||
env: | ||
MACOS_CERTIFICATE_BASE64: ${{ secrets.MACOS_CERTIFICATE }} | ||
MACOS_CERTIFICATE_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PASSWORD }} | ||
MACOS_CERTIFICATE_NAME: ${{ secrets.MACOS_CERTIFICATE_NAME }} | ||
APPLE_ID: ${{ secrets.APPLE_ID }} | ||
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} | ||
APPLE_ID_PASSWORD: ${{ secrets.APPLE_ID_PASSWORD }} | ||
VERSION: ${{ steps.get_version.outputs.VERSION }} | ||
run: | | ||
./build-tools/osx/sign_and_notarize.sh ${{ matrix.arch }} ${{ steps.get_version.outputs.VERSION }} | ||
- name: Package Mintlayer Node (without GUI) | ||
run: | | ||
mkdir -p Mintlayer_Node_macos_${{ steps.get_version.outputs.VERSION }}_${{ matrix.arch }} | ||
IFS=',' read -ra BINARIES <<< "${{ inputs.binary_list }}" | ||
for binary in "${BINARIES[@]}"; do | ||
cp target/${{ matrix.arch }}-apple-darwin/release/$binary Mintlayer_Node_macos_${{ steps.get_version.outputs.VERSION }}_${{ matrix.arch }}/ | ||
done | ||
zip -r Mintlayer_Node_macos_${{ steps.get_version.outputs.VERSION }}_${{ matrix.arch }}.zip Mintlayer_Node_macos_${{ steps.get_version.outputs.VERSION }}_${{ matrix.arch }} | ||
- name: Upload DMG Artifact (GUI) | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: Mintlayer_Node_GUI_macos_${{ steps.get_version.outputs.VERSION }}_${{ matrix.arch }} | ||
path: Mintlayer_Node_GUI_macos_${{ steps.get_version.outputs.VERSION }}_${{ matrix.arch }}.dmg | ||
|
||
- name: Upload Node Artifact (without GUI) | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: Mintlayer_Node_macos_${{ steps.get_version.outputs.VERSION }}_${{ matrix.arch }} | ||
path: Mintlayer_Node_macos_${{ steps.get_version.outputs.VERSION }}_${{ matrix.arch }}.zip |
Oops, something went wrong.