summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Dirk Best <mail@dirk-best.de>2020-10-21 13:42:17 +0200
committer GitHub <noreply@github.com>2020-10-21 22:42:17 +1100
commit3eaf1be30c5ada8c04221432e13465931f2419b5 (patch)
treeb7d7510a0507b66d84624ee8424f18ff327f21a8
parent48f2dc146fdfad115fa88c602d410beb87e1eac3 (diff)
Create GitHub Actions for CI (#7335)
This is intended as a replacement for AppVeyor and parts of TravisCI. It will create full builds of MAME (including tools) for the following platforms: - Linux (GCC and Clang) - macOS (Clang) - Windows (GCC and MSVC 2019) It will also upload the resulting executable as artifact so that it can be used for regression testing. This commit also removes the unused TeaCI drone files.
-rw-r--r--.appveyor.yml58
-rw-r--r--.drone.sec1
-rw-r--r--.drone.yml48
-rw-r--r--.github/workflows/ci-linux.yml40
-rw-r--r--.github/workflows/ci-macos.yml24
-rw-r--r--.github/workflows/ci-windows.yml58
-rw-r--r--.gitignore2
-rw-r--r--.travis.yml20
-rw-r--r--README.md10
9 files changed, 129 insertions, 132 deletions
diff --git a/.appveyor.yml b/.appveyor.yml
deleted file mode 100644
index c65cf92b580..00000000000
--- a/.appveyor.yml
+++ /dev/null
@@ -1,58 +0,0 @@
-version: 1.0.{build}
-image:
- - Visual Studio 2017
- - Visual Studio 2019
-
-shallow_clone: true
-clone_depth: 1
-
-environment:
- matrix:
- - BUILD: GCC
- - BUILD: MSVC
-
-matrix:
- exclude:
- - image: Visual Studio 2017
- BUILD: MSVC
- - image: Visual Studio 2019
- BUILD: GCC
-
-install:
- - set "PATH=C:\msys64\usr\bin;C:\msys64\mingw64\bin;C:\Windows\System32;C:\Windows;%PATH%"
- - set MSYSTEM=MINGW64
-
-build_script:
- - bash -lc "exec 0</dev/null && cd $APPVEYOR_BUILD_FOLDER && export MINGW64=/mingw64 && make SUBTARGET=ci PTR64=1 TOOLS=1 OPTIMIZE=0 vs2019 -j3"
- - msbuild "build\projects\windows\mameci\vs2019\mameci.sln" /m /p:ContinueOnError=false /p:StopOnFirstFailure=true /property:Configuration=Debug /property:Platform=x64 /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll"
-for:
- -
- matrix:
- only:
- - BUILD: GCC
- cache:
- - C:\msys64\var\cache\pacman\pkg
- install:
- - set "PATH=C:\msys64\usr\bin;C:\msys64\mingw64\bin;C:\Windows\System32;C:\Windows;%PATH%"
- - set MSYSTEM=MINGW64
- - bash -lc "curl -O http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz"
- - bash -lc "curl -O http://repo.msys2.org/msys/x86_64/msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz.sig"
- - bash -lc "pacman-key --verify msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz.sig"
- - bash -lc "pacman -U --noconfirm msys2-keyring-r21.b39fb11-1-any.pkg.tar.xz"
- - bash -lc "pacman -Syu --noconfirm"
- - taskkill /f /fi "MODULES eq msys-2.0.dll"
- - bash -lc "pacman -Syu --noconfirm"
- build_script:
- - bash -lc "exec 0</dev/null && cd $APPVEYOR_BUILD_FOLDER && export MINGW64=/mingw64 && make SUBTARGET=ci PTR64=1 TOOLS=1 OPTIMIZE=3 IGNORE_GIT=1 -j3"
- test_script:
- - \projects\mame\mameci64.exe -validate
- after_test:
- - 7z a mameci64-appveyor-%APPVEYOR_REPO_BRANCH%-%APPVEYOR_REPO_COMMIT%-%APPVEYOR_BUILD_NUMBER%.7z %APPVEYOR_BUILD_FOLDER%\*.exe %APPVEYOR_BUILD_FOLDER%\artwork %APPVEYOR_BUILD_FOLDER%\bgfx %APPVEYOR_BUILD_FOLDER%\ctrlr %APPVEYOR_BUILD_FOLDER%\docs %APPVEYOR_BUILD_FOLDER%\hash %APPVEYOR_BUILD_FOLDER%\hlsl %APPVEYOR_BUILD_FOLDER%\ini %APPVEYOR_BUILD_FOLDER%\language %APPVEYOR_BUILD_FOLDER%\nl_examples %APPVEYOR_BUILD_FOLDER%\plugins %APPVEYOR_BUILD_FOLDER%\roms %APPVEYOR_BUILD_FOLDER%\samples
- - appveyor PushArtifact mameci64-appveyor-%APPVEYOR_REPO_BRANCH%-%APPVEYOR_REPO_COMMIT%-%APPVEYOR_BUILD_NUMBER%.7z
-
-test_script:
- - \projects\mame\mameci64d.exe -validate
-
-after_test:
- - 7z a mameci64d-appveyor-%APPVEYOR_REPO_BRANCH%-%APPVEYOR_REPO_COMMIT%-%APPVEYOR_BUILD_NUMBER%.7z %APPVEYOR_BUILD_FOLDER%\*.exe %APPVEYOR_BUILD_FOLDER%\artwork %APPVEYOR_BUILD_FOLDER%\bgfx %APPVEYOR_BUILD_FOLDER%\ctrlr %APPVEYOR_BUILD_FOLDER%\docs %APPVEYOR_BUILD_FOLDER%\hash %APPVEYOR_BUILD_FOLDER%\hlsl %APPVEYOR_BUILD_FOLDER%\ini %APPVEYOR_BUILD_FOLDER%\language %APPVEYOR_BUILD_FOLDER%\nl_examples %APPVEYOR_BUILD_FOLDER%\plugins %APPVEYOR_BUILD_FOLDER%\roms %APPVEYOR_BUILD_FOLDER%\samples
- - appveyor PushArtifact mameci64d-appveyor-%APPVEYOR_REPO_BRANCH%-%APPVEYOR_REPO_COMMIT%-%APPVEYOR_BUILD_NUMBER%.7z
diff --git a/.drone.sec b/.drone.sec
deleted file mode 100644
index 5fc79c939f0..00000000000
--- a/.drone.sec
+++ /dev/null
@@ -1 +0,0 @@
-eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExMjhHQ00ifQ.doN0hM3F1JcAqSRhxCrxPkeVEUj0cLHZ74LchLsP7JFE4-9udW0VQRRVEeQ8rrqtOb7X2am-hI2s9aLp6nq9duMdToFP5bJaUC0yxtAPCZbMgEZVB1BBxl04pgafswVXHUVR_yC4ToZlzuiKvsz1tjB2wFmyxowqqfbJILJVScobwYvIt5Mxp60A9vqBb1Xg77pR9EqYRmUiff_3Vrs4CEm2l39MXVuG8kwy9NOmJ3EStiVCh8iP0JwD-ZLBi3IMGGcGX73RyrNPAyFgwoXDEvSBflURc7ge3336wjfi2e7edeVmHBP-BhrI6Tng1BqyaNplZMtxZZ9vN-NqWYsXMg.4fOuhgSIsHgPVx6P.l9pmIM652sG1JvnBGjj-Aqr9k1U243w4acruslIkWcAzD9rxQOBK18011eQ3QyuFW4T1EjPvQMKflfGJNaPA74B2Is7HmSzG1NWrBkS0hv7uyf_WNwA83kdcoD0lyahtMG_td8AN4L7dlh0rh8BmOaPYHQ.VX42VcsvXuj9zYiZ41rzGg
diff --git a/.drone.yml b/.drone.yml
deleted file mode 100644
index 02ed6ee6f18..00000000000
--- a/.drone.yml
+++ /dev/null
@@ -1,48 +0,0 @@
-# Build configure for https://www.tea-ci.org (fork of Drone CI with Msys2 support)
-# 32-bit until release including https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;a=commitdiff;h=0aa738220bb9dea2ad479e484560767b36701947
-build:
- image: teaci/msys32
- shell: mingw32
- pull: true
- branches:
- -master
- environment:
- - SUBTARGET=tiny
- - MINGW32=/c/msys32/mingw32
- - MAME_EXE=mametiny.exe
- - IGNORE_GIT=1
- - TOOLS=1
-# - SOURCES=src/mame/drivers/pacman.cpp
- commands:
-# - pacman -S -q --noprogressbar --noconfirm winpty
- - make
- - ./$MAME_EXE -validate && echo "Validation successful"
-
-notify:
- irc:
- prefix: build
- nick: $$IRC_USER
- channel: mame-dev
- server:
- host: $$IRC_HOST
- port: $$IRC_PORT
- password: $$IRC_PASS
- tls: true
- when:
- success: false
- failure: true
- change: true
-
-# Need to regen secrets file (.drone.sec) from within tea-ci.org to enable
-#notify:
-# email:
-# from: git@mamedev.org
-# host: $$EMAIL_SERVER
-# username: $$EMAIL_USERNAME
-# password: $$EMAIL_PASSWORD
-# recipients:
-# - $$EMAIL_LISTADDR
-# when:
-# success: false
-# failure: false
-# change: true
diff --git a/.github/workflows/ci-linux.yml b/.github/workflows/ci-linux.yml
new file mode 100644
index 00000000000..953eefbe971
--- /dev/null
+++ b/.github/workflows/ci-linux.yml
@@ -0,0 +1,40 @@
+name: CI (Linux)
+
+on: [push, pull_request]
+
+jobs:
+ build-linux:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ compiler: [gcc, clang]
+ include:
+ - compiler: gcc
+ cc: gcc
+ cxx: g++
+ archopts: -U_FORTIFY_SOURCE
+ - compiler: clang
+ cc: clang
+ cxx: clang++
+ steps:
+ - uses: actions/checkout@master
+ - name: Install dependencies
+ run: |
+ sudo apt-get update
+ sudo apt-get install -y libsdl2-dev libsdl2-ttf-dev libasound2-dev libxinerama-dev libxi-dev qt5-default
+ - name: Install clang
+ if: matrix.compiler == 'clang'
+ run: sudo apt-get install -y clang
+ - name: Build
+ env:
+ OVERRIDE_CC: ${{ matrix.cc }}
+ OVERRIDE_CXX: ${{ matrix.cxx }}
+ ARCHOPTS: ${{ matrix.archopts }}
+ TOOLS: 1
+ run: make -j2
+ - name: Validate
+ run: ./mame64 -validate
+ - uses: actions/upload-artifact@master
+ with:
+ name: mame64-linux-${{ matrix.compiler }}-${{ github.sha }}
+ path: mame64
diff --git a/.github/workflows/ci-macos.yml b/.github/workflows/ci-macos.yml
new file mode 100644
index 00000000000..0337945a251
--- /dev/null
+++ b/.github/workflows/ci-macos.yml
@@ -0,0 +1,24 @@
+name: CI (macOS)
+
+on: [push, pull_request]
+
+jobs:
+ build-macos:
+ runs-on: macOS-latest
+ steps:
+ - uses: actions/checkout@master
+ - name: Install dependencies
+ run: |
+ brew update
+ brew install sdl2
+ - name: Build
+ env:
+ USE_LIBSDL: 1
+ TOOLS: 1
+ run: make -j2
+ - name: Validate
+ run: ./mame64 -validate
+ - uses: actions/upload-artifact@master
+ with:
+ name: mame64-macos-${{ github.sha }}
+ path: mame64
diff --git a/.github/workflows/ci-windows.yml b/.github/workflows/ci-windows.yml
new file mode 100644
index 00000000000..bdd2fe85166
--- /dev/null
+++ b/.github/workflows/ci-windows.yml
@@ -0,0 +1,58 @@
+name: CI (Windows)
+
+on: [push, pull_request]
+
+jobs:
+
+ build-windows-gcc:
+ runs-on: windows-latest
+ defaults:
+ run:
+ shell: msys2 {0}
+ steps:
+ - uses: msys2/setup-msys2@v2
+ with:
+ update: true
+ install: git make mingw-w64-x86_64-gcc mingw-w64-x86_64-python mingw-w64-x86_64-lld
+ - uses: actions/checkout@master
+ - name: Build
+ env:
+ MINGW64: "/mingw64"
+ ARCHOPTS: "-fuse-ld=lld"
+ TOOLS: 1
+ run: make -j2
+ - name: Validate
+ run: ./mame64 -validate
+ - uses: actions/upload-artifact@master
+ with:
+ name: mame64-windows-gcc-${{ github.sha }}
+ path: mame64.exe
+
+ build-windows-msvc:
+ runs-on: windows-latest
+ steps:
+ - uses: msys2/setup-msys2@v2
+ with:
+ update: true
+ install: git make mingw-w64-x86_64-gcc mingw-w64-x86_64-python
+ - uses: actions/checkout@master
+ - name: Add msbuild to PATH
+ uses: microsoft/setup-msbuild@v1.0.1
+ - name: Generate build files
+ shell: msys2 {0}
+ env:
+ MINGW64: "/mingw64"
+ TOOLS: 1
+ run: make -j2 vs2019
+ - name: Build
+ shell: cmd
+ env:
+ PreferredToolArchitecture: x64
+ run: msbuild "build\projects\windows\mame\vs2019\mame.sln" /m:2 /p:ContinueOnError=false /p:StopOnFirstFailure=true /property:Configuration=Release /property:Platform=x64
+ - name: Validate
+ shell: cmd
+ run: mame64 -validate
+ - uses: actions/upload-artifact@master
+ with:
+ name: mame64-windows-msvc-${{ github.sha }}
+ path: mame64.exe
diff --git a/.gitignore b/.gitignore
index 2b7b463e391..4cd57d9f2bf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,6 +11,7 @@
/*
/*/
+!/.github/
!/3rdparty/
!/android-project/
!/benchmarks/
@@ -32,7 +33,6 @@
!/tests/
!/doxygen/
!/web/
-!/.drone.yml
!/.gitattributes
!/.gitignore
!/.travis.yml
diff --git a/.travis.yml b/.travis.yml
index e195a1df821..a6afe57517c 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -14,21 +14,8 @@ addons:
- libxi-dev
- qt5-default
update: true
- homebrew:
- packages:
- - sdl2
- - sdl2_ttf
- update: true
jobs:
include:
- - os: osx
- osx_image: xcode11.6
- compiler: clang
- env: SUBTARGET=ci MAME=mameci64
- - os: linux
- arch: amd64
- compiler: gcc
- env: SUBTARGET=ci MAME=mameci64
- os: linux
arch: arm64
compiler: gcc
@@ -45,17 +32,12 @@ jobs:
- arch: ppc64le
fast_finish: true
script:
- - if [ $TRAVIS_OS_NAME == 'linux' ]; then
- if [ $CC == 'clang' ]; then
+ - if [ $CC == 'clang' ]; then
make -j2 IGNORE_GIT=1 OVERRIDE_CXX="clang++-3.6" OVERRIDE_CC="clang-3.6" TOOLS=1 && ./$MAME -validate;
else make -j4 IGNORE_GIT=1 OPTIMIZE=0 OVERRIDE_CC="gcc-10" OVERRIDE_CXX="g++-10" TOOLS=1 && ./$MAME -validate;
fi
- elif [ $TRAVIS_OS_NAME == 'osx' ]; then
- unset LDOPTS && make -j2 OPTIMIZE=0 USE_LIBSDL=1 TOOLS=1 && ./$MAME -validate;
- fi
branches:
only:
- master
notifications:
email: false
-
diff --git a/README.md b/README.md
index 56646f7ffff..b124bd3ee23 100644
--- a/README.md
+++ b/README.md
@@ -3,13 +3,13 @@
[![Join the chat at https://gitter.im/mamedev/mame](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/mamedev/mame?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
-Build status for tiny build only, containing just core parts of project:
+Build status:
-| OS/Compiler | Status |
+| OS/Compiler | Status |
| ------------- |:-------------:|
-|Linux GCC / OSX Clang| [![Build Status](https://travis-ci.org/mamedev/mame.svg?branch=master)](https://travis-ci.org/mamedev/mame) |
-|Windows MinGW | [![Build Status](https://tea-ci.org/api/badges/mamedev/mame/status.svg)](https://tea-ci.org/mamedev/mame) |
-|Windows MSVC | [![Build status](https://ci.appveyor.com/api/projects/status/te0qy56b72tp5kmo?svg=true)](https://ci.appveyor.com/project/startaq/mame) |
+| Linux/GCC and Clang | ![CI (Linux)](https://github.com/mamedev/mame/workflows/CI%20(Linux)/badge.svg) [![Build Status](https://travis-ci.org/mamedev/mame.svg?branch=master)](https://travis-ci.org/mamedev/mame) |
+| Windows/GCC and MSVC | ![CI (Windows)](https://github.com/mamedev/mame/workflows/CI%20(Windows)/badge.svg) |
+| macOS/Clang | ![CI (macOS)](https://github.com/mamedev/mame/workflows/CI%20(macOS)/badge.svg) |
Static analysis status for entire build (except for third-party parts of project):