meshchat-build/.github/workflows/build.yml
brooke 94fa70ec60
Some checks failed
Build Linux AppImages / build_linux_amd64 (push) Failing after 6m1s
Build Linux AppImages / build_linux_aarch64 (push) Failing after 34m53s
set working directory for release
2025-05-04 15:00:24 -04:00

162 lines
5.1 KiB
YAML

name: Build Linux AppImages
on:
push:
branches:
- main
jobs:
build_linux_amd64:
runs-on: ubuntu-22.04
permissions:
contents: write
steps:
- name: Clone Main Repo
run: |
git clone --depth 1 https://github.com/liamcottle/reticulum-meshchat reticulum-meshchat
- name: Get Latest Tag
working-directory: ./reticulum-meshchat
run: |
git fetch --tags --quiet https://github.com/liamcottle/reticulum-meshchat
LATEST_TAG=$(git describe --tags --abbrev=0)
echo "LATEST_TAG=$LATEST_TAG" >> $GITHUB_ENV
echo "Latest tag is $LATEST_TAG"
git checkout $LATEST_TAG
- name: Install NodeJS
uses: https://github.com/actions/setup-node@v3
with:
node-version: 18
- name: Install Python
uses: https://github.com/actions/setup-python@v5
with:
python-version: "3.11"
- name: Install Python Deps
working-directory: ./reticulum-meshchat
run: pip install -r requirements.txt
- name: Install NodeJS Deps
working-directory: ./reticulum-meshchat
run: npm install
- name: Build Electron App for AMD64
working-directory: ./reticulum-meshchat
run: npm run dist
env:
ELECTRON_BUILDER_ARCH: x64
- name: Rename AppImage with AMD64 Label
run: |
for file in reticulum-meshchat/dist/*.AppImage; do
FILENAME=$(basename "$file")
NAME_WITHOUT_EXT="${FILENAME%.AppImage}"
mv "$file" "reticulum-meshchat/dist/${NAME_WITHOUT_EXT}-amd64.AppImage"
done
- name: Create Release
working-directory: ./reticulum-meshchat
uses: https://github.com/ncipollo/release-action@v1
with:
allowUpdates: true
replacesArtifacts: true
artifacts: "dist/ReticulumMeshChat-${{ env.LATEST_TAG }}-linux-amd64.AppImage"
build_linux_aarch64:
runs-on: ubuntu-22.04
permissions:
contents: write
steps:
- name: Set up QEMU
uses: https://github.com/docker/setup-qemu-action@v3
with:
platforms: arm64
- name: Clone Main Repo
run: |
git clone --depth 1 https://github.com/liamcottle/reticulum-meshchat reticulum-meshchat
- name: Get Latest Tag
working-directory: ./reticulum-meshchat
run: |
git fetch --tags --quiet https://github.com/liamcottle/reticulum-meshchat
LATEST_TAG=$(git describe --tags --abbrev=0)
echo "LATEST_TAG=$LATEST_TAG" >> $GITHUB_ENV
echo "Latest tag is $LATEST_TAG"
git checkout $LATEST_TAG
- name: Setup ARM64 Build Environment
run: |
sudo apt-get update
sudo apt-get install -y qemu-user-static binfmt-support
sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build in ARM64 Container
run: |
cat > Dockerfile << 'EOF'
FROM arm64v8/ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive
# Install dependencies
RUN apt-get update && apt-get install -y \
git curl wget python3 python3-pip \
build-essential libssl-dev \
fakeroot rpm libsqlite3-dev libffi-dev \
libx11-dev libxkbfile-dev libsecret-1-dev \
libasound2 libnss3 libxtst6 libglib2.0-0 libgconf-2-4
# Install Node.js 18
RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash -
RUN apt-get install -y nodejs
# Set up working directory
WORKDIR /app
# Copy application code
COPY ./reticulum-meshchat /app
# Install dependencies
RUN pip3 install -r requirements.txt
RUN npm install
# Build the AppImage
CMD npm run dist
EOF
docker buildx build --platform linux/arm64 -t arm64-build-env .
# Run the build process in the container
docker run --platform linux/arm64 --rm -v $(pwd)/reticulum-meshchat:/app \
-e ELECTRON_BUILDER_ARCH=arm64 \
-v $(pwd)/dist:/app/dist \
arm64-build-env
# Copy the built artifacts
mkdir -p reticulum-meshchat/dist
cp -r dist/* reticulum-meshchat/dist/ || true
- name: Rename AppImage with ARM64 Label
run: |
mkdir -p reticulum-meshchat/dist
for file in output/*.AppImage; do
if [ -f "$file" ]; then
FILENAME=$(basename "$file")
NAME_WITHOUT_EXT="${FILENAME%.AppImage}"
cp "$file" "reticulum-meshchat/dist/${NAME_WITHOUT_EXT}-arm64.AppImage"
fi
done
ls -la reticulum-meshchat/dist/
- name: Create Release
working-directory: ./reticulum-meshchat
uses: https://github.com/ncipollo/release-action@v1
with:
allowUpdates: true
replacesArtifacts: true
artifacts: "reticulum-meshchat/dist/ReticulumMeshChat-${{ env.LATEST_TAG }}-linux-arm64.AppImage"