Skip to content

package for release #130

package for release

package for release #130

name: package for release
on:
workflow_dispatch: {}
jobs:
# linux:
# runs-on: ubuntu-latest
# steps:
# - name: 🛠 Install system dependencies
# run: |
# sudo add-apt-repository ppa:ubuntuhandbook1/ffmpeg6
# sudo apt-get update -y -qq
# sudo apt-get install -y libegl1-mesa-dev libgl1-mesa-dri libxcb-xfixes0-dev ffmpeg libavcodec-dev libavformat-dev libavfilter-dev libavdevice-dev libopus-dev
# - name: 🔧 Install the rust toolchain
# uses: dtolnay/rust-toolchain@stable
#
# - name: 📥 Checkout repo
# uses: actions/checkout@v4
#
# - name: 📦 Package
# run: cargo run --bin package_for_release
#
# - uses: actions/upload-artifact@v4
# with:
# name: smelter_linux_x86_64.tar.gz
# path: smelter_linux_x86_64.tar.gz
#
# - uses: actions/upload-artifact@v4
# with:
# name: smelter_with_web_renderer_linux_x86_64.tar.gz
# path: smelter_with_web_renderer_linux_x86_64.tar.gz
#
# linux-aarch64:
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v4
# with:
# path: "repo"
# - uses: uraimo/run-on-arch-action@v2
# name: Build artifact
# id: build
# with:
# arch: aarch64
# distro: ubuntu22.04
#
# # Not required, but speeds up builds
# githubToken: ${{ github.token }}
#
# # Create an artifacts directory
# setup: |
# mkdir -p "${PWD}/artifacts"
#
# # Mount the artifacts directory as /artifacts in the container
# dockerRunArgs: |
# --volume "${PWD}/artifacts:/artifacts"
# --volume "${PWD}/repo:/repo"
#
# # The shell to run commands with in the container
# shell: /bin/sh
#
# install: |
# apt update -y -qq
# apt install software-properties-common -y
# add-apt-repository ppa:ubuntuhandbook1/ffmpeg6
# apt-get update -y -qq
# apt-get install -y libegl1-mesa-dev libgl1-mesa-dri libxcb-xfixes0-dev ffmpeg libavcodec-dev libavformat-dev libavfilter-dev libavdevice-dev libopus-dev curl git build-essential libssl-dev pkg-config libclang-dev
# curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
# rm -rf /var/lib/apt/lists/*
#
# # Produce a binary artifact and place it in the mounted volume
# run: |
# . "$HOME/.cargo/env"
# cd "/repo"
# cargo run --bin package_for_release
# cp *.tar.gz /artifacts
# - uses: actions/upload-artifact@v4
# with:
# name: smelter_linux_aarch64.tar.gz
# path: artifacts/smelter_linux_aarch64.tar.gz
#
# macos_x86_64:
# runs-on: macos-12
# steps:
# - name: 🛠 Install system dependencies
# run: brew install ffmpeg
#
# - name: 🔧 Install the rust toolchain
# uses: dtolnay/rust-toolchain@stable
#
# - name: 📥 Checkout repo
# uses: actions/checkout@v4
#
# - name: 📦 Package
# run: cargo run --bin package_for_release
#
# - uses: actions/upload-artifact@v4
# with:
# name: smelter_darwin_x86_64.tar.gz
# path: smelter_darwin_x86_64.tar.gz
#
# - uses: actions/upload-artifact@v4
# with:
# name: smelter_with_web_renderer_darwin_x86_64.tar.gz
# path: smelter_with_web_renderer_darwin_x86_64.tar.gz
#
# macos-aarch64:
# runs-on: macos-14
# steps:
# - name: 🛠 Install system dependencies
# run: brew install ffmpeg
#
# - name: 🔧 Install the rust toolchain
# uses: dtolnay/rust-toolchain@stable
#
# - name: 📥 Checkout repo
# uses: actions/checkout@v4
#
# - name: 📦 Package
# run: cargo run --bin package_for_release
#
# - uses: actions/upload-artifact@v4
# with:
# name: smelter_darwin_aarch64.tar.gz
# path: smelter_darwin_aarch64.tar.gz
#
# - uses: actions/upload-artifact@v4
# with:
# name: smelter_with_web_renderer_darwin_aarch64.tar.gz
# path: smelter_with_web_renderer_darwin_aarch64.tar.gz
docker-amd64:
runs-on: ubuntu-latest
outputs:
image_id: ${{ steps.upload_image.outputs.image_id }}
steps:
- name: 📥 Checkout repo
uses: actions/checkout@v4
- name: 🛠️ Setup Docker
run: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
- name: 🔨 Build Smelter image
run: |
docker buildx build --platform linux/amd64 -t ghcr.io/software-mansion/smelter:${{ github.sha }} -f build_tools/docker/slim.Dockerfile .
- id: upload_image
name: 📤 Upload image
run: |
docker push ghcr.io/software-mansion/smelter:${{ github.sha }}
echo "image_id=$(docker inspect --format='{{index .RepoDigests 0}}' ghcr.io/software-mansion/smelter:${{ github.sha }})" >> "$GITHUB_ENV"
docker-arm64:
needs: docker-amd64
runs-on: ubuntu-latest
steps:
- name: 📥 Checkout repo
uses: actions/checkout@v4
- name: 🛠️ Setup Docker
run: |
docker run --privileged --rm tonistiigi/binfmt --install all
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
- name: 🎣 Pull Smleter AMD64 image
run: |
docker pull ghcr.io/software-mansion/smelter:${{ github.sha }}
- name: 🔨 Build Smelter ARM64 image
run: |
docker buildx build --platform linux/arm64 -t ghcr.io/software-mansion/smelter:${{ github.sha }} -f build_tools/docker/slim.Dockerfile .
- name: ⏩ Push ARM64 image
run: |
docker push ghcr.io/software-mansion/smelter:${{ github.sha }}
echo "ARM64_IMAGE_ID=$(docker inspect --format='{{index .RepoDigests 0}}' ghcr.io/software-mansion/smelter:${{ github.sha }})" >> "$GITHUB_ENV"
- name: 🔗 Merge AMD64 and ARM64 images
env:
AMD64_IMAGE_ID: ${{ needs.docker-amd64.outputs.image_id }}
ARM64_IMAGE_ID: ${{ env.ARM64_IMAGE_ID }}
run: |
docker manifest create ghcr.io/software-mansion/smelter:${{ github.sha }} $AMD64_IMAGE_ID $ARM64_IMAGE_ID
docker manifest annotate ghcr.io/software-mansion/smelter:${{ github.sha }} $AMD64_IMAGE_ID --arch amd64
docker manifest annotate ghcr.io/software-mansion/smelter:${{ github.sha }} $ARM64_IMAGE_ID --arch arm64
- name: 📤 Upload image
run: docker manifest push ghcr.io/software-mansion/smelter:${{ github.sha }}
docker-with-web-renderer-amd64:
runs-on: ubuntu-latest
outputs:
image_id: ${{ steps.upload_image.outputs.image_id }}
steps:
- name: 📥 Checkout repo
uses: actions/checkout@v4
- name: 🛠️ Setup Docker
run: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
- name: 🔨 Build Smelter with Web Renderer image
run: |
docker buildx build --platform linux/amd64 -t ghcr.io/software-mansion/smelter:${{ github.sha }}-web-renderer -f build_tools/docker/full.Dockerfile .
- id: upload_image
name: 📤 Upload image
run: |
docker push ghcr.io/software-mansion/smelter:${{ github.sha }}-web-renderer
echo "image_id=$(docker inspect --format='{{index .RepoDigests 0}}' ghcr.io/software-mansion/smelter:${{ github.sha }}-web-renderer)" >> "$GITHUB_ENV"
docker-with-web-renderer-arm64:
needs: docker-with-web-renderer-amd64
runs-on: ubuntu-latest
steps:
- name: 📥 Checkout repo
uses: actions/checkout@v4
- name: 🛠️ Setup Docker
run: |
docker run --privileged --rm tonistiigi/binfmt --install all
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin
- name: 🔨 Build Smelter ARM64 image
run: |
docker buildx build --platform linux/arm64 -t ghcr.io/software-mansion/smelter:${{ github.sha }}-web-renderer -f build_tools/docker/full.Dockerfile .
- name: ⏩ Push ARM64 image
run: |
docker push ghcr.io/software-mansion/smelter:${{ github.sha }}-web-renderer
echo "ARM64_IMAGE_ID=$(docker inspect --format='{{index .RepoDigests 0}}' ghcr.io/software-mansion/smelter:${{ github.sha }}-web-renderer)" >> "$GITHUB_ENV"
- name: 🔗 Merge AMD64 and ARM64 images
env:
AMD64_IMAGE_ID: ${{ needs.docker-with-web-renderer-amd64.outputs.image_id }}
ARM64_IMAGE_ID: ${{ env.ARM64_IMAGE_ID }}
run: |
docker manifest create ghcr.io/software-mansion/smelter:${{ github.sha }}-web-renderer $AMD64_IMAGE_ID ${{ env.ARM64_IMAGE_ID }}
docker manifest annotate ghcr.io/software-mansion/smelter:${{ github.sha }}-web-renderer $AMD64_IMAGE_ID --arch amd64
docker manifest annotate ghcr.io/software-mansion/smelter:${{ github.sha }}-web-renderer $ARM64_IMAGE_ID --arch arm64
- name: 📤 Upload image
run: docker manifest push ghcr.io/software-mansion/smelter:${{ github.sha }}-web-renderer