Files
2026-04-03 17:47:03 +01:00

155 lines
4.9 KiB
YAML

name: Build Versioned Images
on:
push:
branches:
- main
paths:
- "build/latest/Dockerfile*"
- "build/latest/defaults/**"
- "build/latest/docker-entrypoint.sh"
workflow_dispatch:
permissions:
contents: read
packages: write
jobs:
build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- version: "0.9.2.0"
tag: >
soupbowl/opensimulator:0.9.2.0,
ghcr.io/${{ github.repository }}:0.9.2.0,
folder: build/latest
file: Dockerfile.mono
platforms: linux/amd64,linux/arm64
target: final
- version: "0.9.2.1"
tag: >
soupbowl/opensimulator:0.9.2.1,
ghcr.io/${{ github.repository }}:0.9.2.1,
folder: build/latest
file: Dockerfile.mono
platforms: linux/amd64,linux/arm64
target: final
- version: "0.9.2.2"
tag: >
soupbowl/opensimulator:0.9.2,
soupbowl/opensimulator:0.9.2.2,
ghcr.io/${{ github.repository }}:0.9.2,
ghcr.io/${{ github.repository }}:0.9.2.2,
folder: build/latest
file: Dockerfile.mono
platforms: linux/amd64,linux/arm64
target: final
- version: "0.9.3.0"
tag: >
soupbowl/opensimulator:latest,
soupbowl/opensimulator:0.9,
soupbowl/opensimulator:0.9.3,
soupbowl/opensimulator:0.9.3.0,
ghcr.io/${{ github.repository }}:latest,
ghcr.io/${{ github.repository }}:0.9,
ghcr.io/${{ github.repository }}:0.9.3,
ghcr.io/${{ github.repository }}:0.9.3.0,
folder: build/latest
file: Dockerfile
platforms: linux/amd64,linux/arm64
target: final
- version: "0.9.3.0"
tag: >
soupbowl/opensimulator:0.9.3-screen,
soupbowl/opensimulator:0.9.3.0-screen,
ghcr.io/${{ github.repository }}:0.9.3-screen,
ghcr.io/${{ github.repository }}:0.9.3.0-screen,
folder: build/latest
file: Dockerfile
platforms: linux/amd64,linux/arm64
target: final-screen
skip-test: true
- version: "0.9.3.0"
tag: >
ghcr.io/${{ github.repository }}:alpine-beta
folder: build/latest
file: Dockerfile.alpine
platforms: linux/amd64,linux/arm64
target: final
steps:
- name: Checkout Codebase
uses: actions/checkout@v6
- name: Login to GitHub CR
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Docker Hub
uses: docker/login-action@v4
with:
username: ${{ secrets.DOCKER_USER }}
password: ${{ secrets.DOCKER_SECRET }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v4
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v4
- name: Build for test (amd64)
if: ${{ !matrix.skip-test }}
uses: docker/build-push-action@v7
with:
push: false
load: true
context: "{{defaultContext}}:${{ matrix.folder }}"
file: "${{ matrix.file }}"
tags: opensimulator-ci:${{ github.run_id }}
platforms: linux/amd64
target: "${{ matrix.target }}"
build-args: |
OPENSIM_VERSION=${{ matrix.version }}
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Cache CST
if: ${{ !matrix.skip-test }}
id: cache-cst
uses: actions/cache@v4
with:
path: ./container-structure-test
key: container-structure-test-linux-amd64
- name: Download CST
if: ${{ !matrix.skip-test && steps.cache-cst.outputs.cache-hit != 'true' }}
run: |
curl -fsSL -o container-structure-test https://storage.googleapis.com/container-structure-test/latest/container-structure-test-linux-amd64
chmod +x container-structure-test
- name: Run CST
if: ${{ !matrix.skip-test }}
run: |
./container-structure-test test --image opensimulator-ci:${{ github.run_id }} --config unit-test.yaml
- name: Build and Push Container
uses: docker/build-push-action@v7
with:
push: true
context: "{{defaultContext}}:${{ matrix.folder }}"
tags: ${{ matrix.tag }}
platforms: ${{ matrix.platforms }}
file: "${{ matrix.file }}"
target: "${{ matrix.target }}"
build-args: |
OPENSIM_VERSION=${{ matrix.version }}
cache-from: type=gha
cache-to: type=gha,mode=max