mirror of
https://github.com/KRTirtho/spotube.git
synced 2026-05-09 16:54:37 +00:00
Cd/docker linux ar (#1468)
* cd: use docker buildx * cd: use linux host for linux arm instead of macos m1 m1 doesn't support nested virtualization. (Apple truly sucks) * cd: don't specify arch in Dockerfile * cd: use custom Dockerfile from ubuntu instead of flutter image * cd: add setup java for android * cd: add flutter distributor pre-built docker image for arm * cd: save me from this cursed arm build * cd: ?? * cd: ?? * cd: use docker build
This commit is contained in:
parent
747d40d681
commit
cad44a0f12
@ -2,3 +2,5 @@ build
|
|||||||
dist
|
dist
|
||||||
.dart_tool
|
.dart_tool
|
||||||
.idea
|
.idea
|
||||||
|
.github
|
||||||
|
.git
|
||||||
23
.github/Dockerfile
vendored
23
.github/Dockerfile
vendored
@ -1,32 +1,27 @@
|
|||||||
ARG FLUTTER_VERSION
|
ARG FLUTTER_VERSION
|
||||||
ARG BUILD_VERSION
|
|
||||||
|
|
||||||
FROM --platform=arm64 fischerscode/flutter-sudo:${FLUTTER_VERSION}
|
FROM --platform=linux/arm64 krtirtho/flutter_distributor_arm64:${FLUTTER_VERSION}
|
||||||
|
|
||||||
|
ARG BUILD_VERSION
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# Install dependencies
|
|
||||||
RUN sudo apt-get update &&\
|
|
||||||
sudo apt-get install -y tar clang cmake ninja-build pkg-config libgtk-3-dev make python3-pip python3-setuptools desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace fuse libunwind-dev locate patchelf gir1.2-appindicator3-0.1 libappindicator3-1 libappindicator3-dev libsecret-1-0 libjsoncpp25 libsecret-1-dev libjsoncpp-dev libnotify-bin libnotify-dev mpv libmpv-dev rpm &&\
|
|
||||||
sudo rm -rf /var/lib/apt/lists/*
|
|
||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
RUN sudo chown -R $(whoami) /app
|
RUN chown -R $(whoami) /app
|
||||||
|
|
||||||
RUN flutter pub get &&\
|
RUN flutter pub get &&\
|
||||||
flutter config --enable-linux-desktop &&\
|
flutter config --enable-linux-desktop &&\
|
||||||
flutter pub get &&\
|
flutter pub get &&\
|
||||||
dart run build_runner build --delete-conflicting-outputs
|
dart run build_runner build --delete-conflicting-outputs
|
||||||
|
|
||||||
RUN dart pub global activate flutter_distributor &&\
|
RUN alias dpkg-deb="dpkg-deb --Zxz" &&\
|
||||||
alias dpkg-deb="dpkg-deb --Zxz" &&\
|
flutter_distributor package --platform=linux --targets=deb
|
||||||
flutter_distributor package --platform=linux --targets=deb &&\
|
|
||||||
flutter_distributor package --platform=linux --targets=rpm
|
|
||||||
|
|
||||||
|
|
||||||
RUN make tar VERSION=${BUILD_VERSION} ARCH=arm64 PKG_ARCH=aarch64
|
RUN make tar VERSION=${BUILD_VERSION} ARCH=arm64 PKG_ARCH=aarch64
|
||||||
|
|
||||||
RUN mv build/spotube-linux-*-aarch64.tar.xz dist/ &&\
|
RUN mv build/spotube-linux-*-aarch64.tar.xz dist/ &&\
|
||||||
mv dist/**/spotube-*-linux.deb dist/Spotube-linux-aarch64.deb &&\
|
mv dist/**/spotube-*-linux.deb dist/Spotube-linux-aarch64.deb
|
||||||
mv dist/**/spotube-*-linux.rpm dist/Spotube-linux-aarch64.rpm
|
|
||||||
|
CMD [ "sleep", "5000000" ]
|
||||||
23
.github/Dockerfile.flutter_distributor
vendored
Normal file
23
.github/Dockerfile.flutter_distributor
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
FROM --platform=linux/arm64 ubuntu:22.04
|
||||||
|
|
||||||
|
ARG FLUTTER_VERSION
|
||||||
|
|
||||||
|
RUN apt-get clean &&\
|
||||||
|
apt-get update &&\
|
||||||
|
apt-get install -y bash curl file git unzip xz-utils zip libglu1-mesa cmake tar clang ninja-build pkg-config libgtk-3-dev make python3-pip python3-setuptools desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace fuse libunwind-dev locate patchelf gir1.2-appindicator3-0.1 libappindicator3-1 libappindicator3-dev libsecret-1-0 libjsoncpp25 libsecret-1-dev libjsoncpp-dev libnotify-bin libnotify-dev mpv libmpv-dev rpm && \
|
||||||
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
WORKDIR /home/flutter
|
||||||
|
|
||||||
|
RUN git clone https://github.com/flutter/flutter.git -b ${FLUTTER_VERSION} --single-branch flutter-sdk
|
||||||
|
|
||||||
|
RUN flutter-sdk/bin/flutter precache
|
||||||
|
|
||||||
|
RUN flutter-sdk/bin/flutter config --no-analytics
|
||||||
|
|
||||||
|
ENV PATH="$PATH:/home/flutter/flutter-sdk/bin"
|
||||||
|
ENV PATH="$PATH:/home/flutter/flutter-sdk/bin/cache/dart-sdk/bin"
|
||||||
|
ENV PATH="$PATH:/home/flutter/.pub-cache/bin"
|
||||||
|
ENV PUB_CACHE="/home/flutter/.pub-cache"
|
||||||
|
|
||||||
|
RUN dart pub global activate flutter_distributor
|
||||||
83
.github/workflows/spotube-release-binary.yml
vendored
83
.github/workflows/spotube-release-binary.yml
vendored
@ -207,34 +207,35 @@ jobs:
|
|||||||
limit-access-to-actor: true
|
limit-access-to-actor: true
|
||||||
|
|
||||||
linux_arm:
|
linux_arm:
|
||||||
runs-on: macos-14
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
- name: Set up QEMU
|
||||||
- name: Install Docker
|
uses: docker/setup-qemu-action@v3
|
||||||
run: brew install --cask docker
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
- name: Replace pubspec version and BUILD_VERSION Env (nightly)
|
|
||||||
if: ${{ inputs.channel == 'nightly' }}
|
|
||||||
run: |
|
|
||||||
brew install yq
|
|
||||||
yq -i '.version |= sub("\+\d+", "+${{ inputs.channel }}.")' pubspec.yaml
|
|
||||||
yq -i '.version += strenv(GITHUB_RUN_NUMBER)' pubspec.yaml
|
|
||||||
echo "BUILD_VERSION=${{ inputs.version }}+${{ inputs.channel }}.${{ github.run_number }}" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
|
|
||||||
- name: BUILD_VERSION Env (stable)
|
|
||||||
if: ${{ inputs.channel == 'stable' }}
|
|
||||||
run: |
|
|
||||||
echo "BUILD_VERSION=${{ inputs.version }}" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Get current date
|
- name: Get current date
|
||||||
id: date
|
id: date
|
||||||
run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
|
run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
|
||||||
|
|
||||||
- name: Replace Version in files
|
- name: Install Dependencies
|
||||||
run: |
|
run: |
|
||||||
sed -i '' 's|%{{APPDATA_RELEASE}}%|<release version="${{ env.BUILD_VERSION }}" date="${{ steps.date.outputs.date }}" />|' linux/com.github.KRTirtho.Spotube.appdata.xml
|
sudo apt-get update -y
|
||||||
|
sudo apt-get install -y pkg-config make python3-pip python3-setuptools
|
||||||
|
|
||||||
|
- name: Replace pubspec version and BUILD_VERSION Env (nightly)
|
||||||
|
if: ${{ inputs.channel == 'nightly' }}
|
||||||
|
run: |
|
||||||
|
curl -sS https://webi.sh/yq | sh
|
||||||
|
yq -i '.version |= sub("\+\d+", "+${{ inputs.channel }}.")' pubspec.yaml
|
||||||
|
yq -i '.version += strenv(GITHUB_RUN_NUMBER)' pubspec.yaml
|
||||||
|
echo "BUILD_VERSION=${{ inputs.version }}+${{ inputs.channel }}.${{ github.run_number }}" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: BUILD_VERSION Env (stable)
|
||||||
|
if: ${{ inputs.channel == 'stable' }}
|
||||||
|
run: |
|
||||||
|
echo "BUILD_VERSION=${{ inputs.version }}" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Create Stable .env
|
- name: Create Stable .env
|
||||||
if: ${{ inputs.channel == 'stable' }}
|
if: ${{ inputs.channel == 'stable' }}
|
||||||
@ -244,20 +245,42 @@ jobs:
|
|||||||
if: ${{ inputs.channel == 'nightly' }}
|
if: ${{ inputs.channel == 'nightly' }}
|
||||||
run: echo '${{ secrets.DOTENV_NIGHTLY }}' > .env
|
run: echo '${{ secrets.DOTENV_NIGHTLY }}' > .env
|
||||||
|
|
||||||
- name: Build Linux Arm
|
- name: Replace Version in files
|
||||||
run: |
|
run: |
|
||||||
docker build -t spotube-linux-arm -f .github/Dockerfile . --build-arg BUILD_VERSION=${{ env.BUILD_VERSION }} --build-arg FLUTTER_VERSION=${{ env.FLUTTER_VERSION }}
|
sed -i 's|%{{APPDATA_RELEASE}}%|<release version="${{ env.BUILD_VERSION }}" date="${{ steps.date.outputs.date }}" />|' linux/com.github.KRTirtho.Spotube.appdata.xml
|
||||||
docker create --name spotube-linux-arm spotube-linux-arm
|
|
||||||
docker cp spotube-linux-arm:/app/dist .
|
- name: Build Binaries (stable)
|
||||||
docker rm -f spotube-linux-arm
|
if: ${{ inputs.channel == 'stable' }}
|
||||||
|
run: |
|
||||||
|
docker buildx build --platform=linux/arm64 -f .github/Dockerfile . --build-arg FLUTTER_VERSION=${{env.FLUTTER_VERSION}} --build-arg BUILD_VERSION=${{env.BUILD_VERSION}} -t krtirtho/spotube_linux_arm:latest --load
|
||||||
|
|
||||||
|
- name: Build Binaries (nightly)
|
||||||
|
if: ${{ inputs.channel == 'nightly' }}
|
||||||
|
run: |
|
||||||
|
docker buildx build --platform=linux/arm64 -f .github/Dockerfile . --build-arg FLUTTER_VERSION=${{env.FLUTTER_VERSION}} --build-arg BUILD_VERSION=nightly -t krtirtho/spotube_linux_arm:latest --load
|
||||||
|
|
||||||
|
- name: Copy the built packages
|
||||||
|
run: |
|
||||||
|
docker images ls
|
||||||
|
docker create --name spotube_linux_arm krtirtho/spotube_linux_arm:latest
|
||||||
|
docker cp spotube_linux_arm:/app/dist/ dist/
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v3
|
- uses: actions/upload-artifact@v3
|
||||||
|
if: ${{ inputs.channel == 'stable' }}
|
||||||
|
with:
|
||||||
|
if-no-files-found: error
|
||||||
|
name: Spotube-Release-Binaries
|
||||||
|
path: |
|
||||||
|
dist/Spotube-linux-aarch64.deb
|
||||||
|
dist/spotube-linux-${{ env.BUILD_VERSION }}-aarch64.tar.xz
|
||||||
|
|
||||||
|
- uses: actions/upload-artifact@v3
|
||||||
|
if: ${{ inputs.channel == 'nightly' }}
|
||||||
with:
|
with:
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
name: Spotube-Release-Binaries
|
name: Spotube-Release-Binaries
|
||||||
path: |
|
path: |
|
||||||
dist/Spotube-linux-aarch64.deb
|
dist/Spotube-linux-aarch64.deb
|
||||||
dist/Spotube-linux-aarch64.rpm
|
|
||||||
dist/spotube-linux-nightly-aarch64.tar.xz
|
dist/spotube-linux-nightly-aarch64.tar.xz
|
||||||
|
|
||||||
- name: Debug With SSH When fails
|
- name: Debug With SSH When fails
|
||||||
@ -266,7 +289,6 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
limit-access-to-actor: true
|
limit-access-to-actor: true
|
||||||
|
|
||||||
|
|
||||||
android:
|
android:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
@ -275,6 +297,13 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
cache: true
|
cache: true
|
||||||
flutter-version: ${{ env.FLUTTER_VERSION }}
|
flutter-version: ${{ env.FLUTTER_VERSION }}
|
||||||
|
- name: Setup Java
|
||||||
|
uses: actions/setup-java@v4
|
||||||
|
with:
|
||||||
|
distribution: 'zulu'
|
||||||
|
java-version: '17'
|
||||||
|
cache: 'gradle'
|
||||||
|
check-latest: true
|
||||||
|
|
||||||
- name: Install Dependencies
|
- name: Install Dependencies
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user