diff --git a/Dockerfile b/Dockerfile index f69d67c15b..54588672dd 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,15 +1,29 @@ # vim:ft=dockerfile -FROM ubuntu:18.04 +# Base image +FROM ubuntu:20.04 AS base -RUN apt-get update && apt-get -y install \ - g++ \ - cmake libgmp-dev libmpfr-dev libmpc-dev libboost-all-dev bison \ - zlib1g-dev \ - perl texinfo +RUN apt-get update && \ + DEBIAN_FRONTEND=noninteractive apt-get install -y \ + cmake libgmp-dev libmpfr-dev libmpc-dev \ + libboost-all-dev bison texinfo \ + ruby flex curl g++ git + +# Add toolchain to default PATH +ENV PATH=/Retro68-build/toolchain/bin:$PATH +WORKDIR /root + +# Build image +FROM base AS build ADD . /Retro68 -RUN mkdir /Retro68-build +RUN mkdir /Retro68-build && \ + bash -c "cd /Retro68-build && bash /Retro68/build-toolchain.bash" -RUN bash -c "cd /Retro68-build && bash /Retro68/build-toolchain.bash --clean-after-build" +# Release image +FROM base AS release + +COPY --from=build /Retro68-build/toolchain /Retro68-build/toolchain + +LABEL org.opencontainers.image.source https://github.com/autc04/Retro68 diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 172434818b..834a658ba4 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -5,36 +5,53 @@ jobs: - job: Linux pool: - vmImage: 'ubuntu-20.04' + vmImage: 'ubuntu-latest' timeoutInMinutes: 90 + variables: + - group: Tokens steps: - checkout: self submodules: true - - script: | - sudo apt-get update - DEBIAN_FRONTEND=noninteractive sudo apt-get install -y \ - cmake libgmp-dev libmpfr-dev libmpc-dev \ - libboost-all-dev bison texinfo \ - ruby flex curl - displayName: 'Install prerequisites' - - script: | - mkdir build - cd build - ../build-toolchain.bash + + - 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: | - cd 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 + 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: