Retro68/azure-pipelines.yml
2024-05-01 23:31:10 +02:00

160 lines
5.1 KiB
YAML

trigger:
- master
jobs:
- job: Linux
pool:
vmImage: 'ubuntu-latest'
timeoutInMinutes: 90
variables:
- group: Tokens
steps:
- checkout: self
submodules: true
- task: Docker@2
inputs:
command: build
repository: ghcr.io/autc04/retro68-build
tags: latest
arguments: --target build
displayName: 'Build'
- task: Docker@2
inputs:
command: build
repository: ghcr.io/autc04/retro68
tags: latest
arguments: --target release
displayName: 'Build release'
- script: |
docker run --name retro68-build --rm -i -d ghcr.io/autc04/retro68-build:latest
docker exec -i retro68-build /bin/bash <<"EOF"
cd /Retro68-build
curl -L -O https://github.com/autc04/executor/releases/download/v0.1.0/Executor2000-0.1.0-Linux.tar.bz2
tar xfvj Executor2000-0.1.0-Linux.tar.bz2 Executor2000-0.1.0-Linux/bin/executor-headless
echo "executor-path=`pwd`/Executor2000-0.1.0-Linux/bin/executor-headless" > ~/.LaunchAPPL.cfg
echo "emulator=executor" >> ~/.LaunchAPPL.cfg
ctest --no-compress-output -T test -E Carbon || true
EOF
mkdir build && docker cp retro68-build:/Retro68-build/Testing build
docker stop retro68-build
displayName: Run Tests using Executor 2000
- task: PublishTestResults@2
inputs:
testResultsFormat: 'CTest'
testResultsFiles: build/Testing/**/*.xml
buildPlatform: 'x86_64-linux'
- script: |
docker login ghcr.io/autc04 -u autc04 -p $GHCR_TOKEN
docker push ghcr.io/autc04/retro68
env:
GHCR_TOKEN: $(GHCR_TOKEN)
displayName: 'Push release to GHCR'
condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
- job: macOS
pool:
vmImage: 'macOS-13'
timeoutInMinutes: 90
steps:
- checkout: self
submodules: true
- script: |
brew install boost cmake gmp mpfr libmpc bison texinfo
displayName: 'Brew prerequisites'
- script: |
mkdir build
cd build
../build-toolchain.bash
displayName: Build
- script: |
cd build
curl -L -O https://github.com/autc04/executor/releases/download/v0.1.0/Executor2000-0.1.0-Darwin.tar.bz2
tar xfvj Executor2000-0.1.0-Darwin.tar.bz2 Executor2000-0.1.0-Darwin/bin/executor-headless
echo "executor-path=`pwd`/Executor2000-0.1.0-Darwin/bin/executor-headless" > ~/.LaunchAPPL.cfg
echo "emulator=executor" >> ~/.LaunchAPPL.cfg
ctest --no-compress-output -T test -E Carbon || true
displayName: Run Tests using Executor 2000
- task: PublishTestResults@2
inputs:
testResultsFormat: 'CTest'
testResultsFiles: build/Testing/**/*.xml
buildPlatform: 'x86_64-macos'
- job: NixLinux
strategy:
matrix:
M68K:
TARGET: m68k
PowerPC:
TARGET: powerpc
Carbon:
TARGET: carbon
pool:
vmImage: 'ubuntu-latest'
steps:
- script: |
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix \
| sh -s -- install --no-confirm --extra-conf "trusted-users = root vsts"
displayName: Install Nix
- script: |
. /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
nix profile install --accept-flake-config nixpkgs#cachix
cachix use autc04
displayName: Setup Cachix
- checkout: self
submodules: false
- script: |
. /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
nix develop .#${TARGET} --profile dev-profile -c true
nix build .#samples-${TARGET} --out-link CompiledSamples
displayName: Build
- publish: CompiledSamples
artifact: Samples ($(TARGET))
- script: |
. /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
export CACHIX_AUTH_TOKEN=$(CACHIX_AUTH_TOKEN)
cachix push autc04 dev-profile
cachix push autc04 CompiledSamples
displayName: Push to Cachix
condition: and(succeeded(), ne(variables['CACHIX_AUTH_TOKEN'], ''))
- job: NixMac
strategy:
matrix:
M68K:
TARGET: m68k
PowerPC:
TARGET: powerpc
Carbon:
TARGET: carbon
pool:
vmImage: 'macOS-latest'
timeoutInMinutes: 90
steps:
- script: |
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix \
| sh -s -- install --no-confirm --extra-conf "trusted-users = root runner"
displayName: Install Nix
- script: |
. /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
nix profile install --accept-flake-config nixpkgs#cachix
cachix use autc04
displayName: Setup Cachix
- checkout: self
submodules: false
- script: |
. /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
nix develop .#${TARGET} --profile dev-profile -c true
nix build .#samples-${TARGET} --out-link CompiledSamples
displayName: Build
- script: |
. /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
export CACHIX_AUTH_TOKEN=$(CACHIX_AUTH_TOKEN)
cachix push autc04 dev-profile
cachix push autc04 CompiledSamples
displayName: Push to Cachix
condition: and(succeeded(), ne(variables['CACHIX_AUTH_TOKEN'], ''))