diff --git a/.github/workflows/start-registry.yaml b/.github/workflows/start-registry.yaml index b83df5448..36bf5f9c7 100644 --- a/.github/workflows/start-registry.yaml +++ b/.github/workflows/start-registry.yaml @@ -98,3 +98,94 @@ jobs: with: name: start-registry_${{ matrix.arch }}.deb path: results/start-registry-*_${{ matrix.arch }}.deb + + create-image: + name: Create Docker Image + needs: [compile] + permissions: + contents: read + packages: write + strategy: + fail-fast: true + matrix: + arch: >- + ${{ + fromJson('{ + "x86_64": ["x86_64"], + "aarch64": ["aarch64"], + "riscv64": ["riscv64"], + "ALL": ["x86_64", "aarch64", "riscv64"] + }')[github.event.inputs.platform || 'ALL'] + }} + runs-on: ${{ fromJson('["ubuntu-latest", "buildjet-32vcpu-ubuntu-2204"]')[github.event.inputs.runner == 'fast'] }} + steps: + - name: Cleaning up unnecessary files + run: | + sudo apt-get remove --purge -y google-chrome-stable firefox mono-devel + sudo apt-get autoremove -y + sudo apt-get clean + + - run: | + sudo mount -t tmpfs tmpfs . + if: ${{ github.event.inputs.runner == 'fast' }} + + - name: Set up docker QEMU + uses: docker/setup-qemu-action@v3 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: "Login to GitHub Container Registry" + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{github.actor}} + password: ${{secrets.GITHUB_TOKEN}} + + - name: Docker meta + id: meta + uses: docker/metadata-action@v5 + with: + images: ghcr.io/Start9Labs/startos-registry + tags: | + type=raw,value=${{ github.ref_name }} + + - name: Download debian package + uses: actions/download-artifact@v4 + with: + name: start-registry_${{ matrix.arch }}.deb + + - name: Map matrix.arch to docker platform + run: | + case "${{ matrix.arch }}" in + x86_64) + platform="linux/amd64" + ;; + aarch64) + platform="linux/arm64" + ;; + riscv64) + platform="linux/riscv64" + ;; + *) + echo "Unknown matrix.arch: ${{ matrix.arch }}" >&2 + exit 1 + ;; + esac + echo "DOCKER_PLATFORM=$platform" >> "$GITHUB_ENV" + + - run: | + cat | docker buildx build --platform "$DOCKER_PLATFORM" --push -t ${{ steps.meta.outputs.tags }} -f - . << EOF + FROM debian:trixie + + ADD *.deb . + + RUN apt-get install -y ./*.deb && rm *.deb + + VOLUME /var/lib/startos + + ENV RUST_LOG=startos=debug + + ENTRYPOINT ["start-registryd"] + + EOF