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'], ''))