159 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
		
		
			
		
	
	
			159 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| 
								 | 
							
								parameters:
							 | 
						||
| 
								 | 
							
								  name: ''
							 | 
						||
| 
								 | 
							
								  vmImage: ''
							 | 
						||
| 
								 | 
							
								  arch: '' # hxcpp's target arch (HXCPP_Mxx), can be '32' or '64'
							 | 
						||
| 
								 | 
							
								  platform: '' # can be linux64, mac, windows, or windows64
							 | 
						||
| 
								 | 
							
								  listPlatform32: ['linux32', 'windows']
							 | 
						||
| 
								 | 
							
								  listPlatform64: ['linux64', 'mac', 'windows64']
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								jobs:
							 | 
						||
| 
								 | 
							
								  - job: ${{ parameters.name }}
							 | 
						||
| 
								 | 
							
								    pool:
							 | 
						||
| 
								 | 
							
								      vmImage: ${{ parameters.vmImage }}
							 | 
						||
| 
								 | 
							
								    variables:
							 | 
						||
| 
								 | 
							
								      ${{ if startsWith(parameters.vmImage, 'ubuntu-') }}:
							 | 
						||
| 
								 | 
							
								        libExt: .dso
							 | 
						||
| 
								 | 
							
								        sep: '/'
							 | 
						||
| 
								 | 
							
								      ${{ if contains(parameters.vmImage, 'mac') }}:
							 | 
						||
| 
								 | 
							
								        libExt: .dylib
							 | 
						||
| 
								 | 
							
								        sep: '/'
							 | 
						||
| 
								 | 
							
								      ${{ if contains(parameters.vmImage, 'win') }}:
							 | 
						||
| 
								 | 
							
								        libExt: .dll
							 | 
						||
| 
								 | 
							
								        sep: '\'
							 | 
						||
| 
								 | 
							
								    steps:
							 | 
						||
| 
								 | 
							
								      - ${{ if startsWith(parameters.vmImage, 'ubuntu-') }}:
							 | 
						||
| 
								 | 
							
								        - script: |
							 | 
						||
| 
								 | 
							
								            set -ex
							 | 
						||
| 
								 | 
							
								            sudo rm -R /var/lib/mysql/
							 | 
						||
| 
								 | 
							
								            # mariadb
							 | 
						||
| 
								 | 
							
								            curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup > mariadb_repo_setup
							 | 
						||
| 
								 | 
							
								            curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup.sha256 > mariadb_repo_setup.sha256
							 | 
						||
| 
								 | 
							
								            sha256sum --check mariadb_repo_setup.sha256
							 | 
						||
| 
								 | 
							
								            sudo bash mariadb_repo_setup
							 | 
						||
| 
								 | 
							
								            sudo apt-get update -qqy
							 | 
						||
| 
								 | 
							
								            sudo apt-get remove -qqy mysql-common
							 | 
						||
| 
								 | 
							
								            sudo apt-get autoremove -qqy
							 | 
						||
| 
								 | 
							
								            sudo apt-get install -qqy mariadb-server
							 | 
						||
| 
								 | 
							
								            # remaining packages
							 | 
						||
| 
								 | 
							
								            sudo apt-get install -qqy gcc-multilib g++-multilib
							 | 
						||
| 
								 | 
							
								          displayName: Install dependencies
							 | 
						||
| 
								 | 
							
								        - script: |
							 | 
						||
| 
								 | 
							
								            set -ex
							 | 
						||
| 
								 | 
							
								            sudo systemctl start mysql
							 | 
						||
| 
								 | 
							
								            sudo mysql -u root -e "create database hxcpp; grant all privileges on hxcpp.* to hxcpp@localhost identified by 'hxcpp'; flush privileges;"
							 | 
						||
| 
								 | 
							
								          displayName: Configure MariaDB
							 | 
						||
| 
								 | 
							
								      - template: install-neko-snapshot.yaml
							 | 
						||
| 
								 | 
							
								        parameters:
							 | 
						||
| 
								 | 
							
								          platform: ${{ parameters.platform }}
							 | 
						||
| 
								 | 
							
								      - template: install-haxe-snapshot.yaml
							 | 
						||
| 
								 | 
							
								        parameters:
							 | 
						||
| 
								 | 
							
								          platform: ${{ parameters.platform }}
							 | 
						||
| 
								 | 
							
								      - script: |
							 | 
						||
| 
								 | 
							
								          set -ex
							 | 
						||
| 
								 | 
							
								          mkdir -p ~/haxelib
							 | 
						||
| 
								 | 
							
								          haxelib setup ~/haxelib
							 | 
						||
| 
								 | 
							
								          haxelib install utest
							 | 
						||
| 
								 | 
							
								          haxelib dev hxcpp $(Build.SourcesDirectory)
							 | 
						||
| 
								 | 
							
								          haxelib list
							 | 
						||
| 
								 | 
							
								        displayName: Install Haxe libraries
							 | 
						||
| 
								 | 
							
								      - script: haxe compile.hxml
							 | 
						||
| 
								 | 
							
								        workingDirectory: tools/run
							 | 
						||
| 
								 | 
							
								        displayName: Build run.n
							 | 
						||
| 
								 | 
							
								      - script: haxe compile.hxml
							 | 
						||
| 
								 | 
							
								        workingDirectory: tools/hxcpp
							 | 
						||
| 
								 | 
							
								        displayName: Build hxcpp
							 | 
						||
| 
								 | 
							
								      - script: haxe compile-cppia.hxml
							 | 
						||
| 
								 | 
							
								        workingDirectory: project
							 | 
						||
| 
								 | 
							
								        displayName: Build cppia
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      # cffi
							 | 
						||
| 
								 | 
							
								      - script: haxelib run hxcpp build.xml -debug -DHXCPP_M${{parameters.arch}}
							 | 
						||
| 
								 | 
							
								        workingDirectory: test/cffi/project
							 | 
						||
| 
								 | 
							
								        displayName: Build cffi project
							 | 
						||
| 
								 | 
							
								      - bash: |
							 | 
						||
| 
								 | 
							
								          set -ex
							 | 
						||
| 
								 | 
							
								          haxe compile.hxml      -debug -D HXCPP_M${{parameters.arch}}
							 | 
						||
| 
								 | 
							
								          haxe compile-utf8.hxml -debug -D HXCPP_M${{parameters.arch}}
							 | 
						||
| 
								 | 
							
								          haxe compile-neko.hxml -debug -D HXCPP_M${{parameters.arch}}
							 | 
						||
| 
								 | 
							
								        workingDirectory: test/cffi
							 | 
						||
| 
								 | 
							
								        displayName: cffi test - Compile
							 | 
						||
| 
								 | 
							
								      - script: bin$(sep)cpp$(sep)TestMain-debug
							 | 
						||
| 
								 | 
							
								        workingDirectory: test/cffi
							 | 
						||
| 
								 | 
							
								        displayName: cffi test - Run
							 | 
						||
| 
								 | 
							
								      - script: bin$(sep)cpp-utf8$(sep)TestMain-debug
							 | 
						||
| 
								 | 
							
								        workingDirectory: test/cffi
							 | 
						||
| 
								 | 
							
								        displayName: cffi-utf8 test - Run
							 | 
						||
| 
								 | 
							
								      - ${{ if or(and(containsValue(parameters.listPlatform32, parameters.platform), eq(parameters.arch, '32')), and(containsValue(parameters.listPlatform64, parameters.platform), eq(parameters.arch, '64'))) }}:
							 | 
						||
| 
								 | 
							
								        - bash: cp test/cffi/project/ndll/*/prime$(libExt) test/cffi/bin/neko/prime.ndll
							 | 
						||
| 
								 | 
							
								          displayName: Copy prime.ndll
							 | 
						||
| 
								 | 
							
								        - script: neko TestMain.n
							 | 
						||
| 
								 | 
							
								          workingDirectory: test/cffi/bin/neko
							 | 
						||
| 
								 | 
							
								          displayName: cffi-neko test - Run
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      # haxe
							 | 
						||
| 
								 | 
							
								      - script: haxe compile.hxml -debug -D HXCPP_M${{parameters.arch}}
							 | 
						||
| 
								 | 
							
								        workingDirectory: test/haxe
							 | 
						||
| 
								 | 
							
								        displayName: haxe test - Compile
							 | 
						||
| 
								 | 
							
								      - script: bin$(sep)TestMain-debug
							 | 
						||
| 
								 | 
							
								        workingDirectory: test/haxe
							 | 
						||
| 
								 | 
							
								        displayName: haxe test - Run
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      # telemetry, should work in debug and non-debug modes
							 | 
						||
| 
								 | 
							
								      - script: haxe compile.hxml -debug -D HXCPP_M${{parameters.arch}}
							 | 
						||
| 
								 | 
							
								        workingDirectory: test/telemetry
							 | 
						||
| 
								 | 
							
								        displayName: telemetry test (debug) - Compile
							 | 
						||
| 
								 | 
							
								      - script: bin$(sep)TestMain-debug
							 | 
						||
| 
								 | 
							
								        workingDirectory: test/telemetry
							 | 
						||
| 
								 | 
							
								        displayName: telemetry test (debug) - Run
							 | 
						||
| 
								 | 
							
								      - script: haxe compile.hxml -D HXCPP_M${{parameters.arch}}
							 | 
						||
| 
								 | 
							
								        workingDirectory: test/telemetry
							 | 
						||
| 
								 | 
							
								        displayName: telemetry test - Compile
							 | 
						||
| 
								 | 
							
								      - script: bin$(sep)TestMain
							 | 
						||
| 
								 | 
							
								        workingDirectory: test/telemetry
							 | 
						||
| 
								 | 
							
								        displayName: telemetry test - Run
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      # std
							 | 
						||
| 
								 | 
							
								      - script: haxe compile${{parameters.arch}}.hxml
							 | 
						||
| 
								 | 
							
								        workingDirectory: test/std
							 | 
						||
| 
								 | 
							
								        displayName: std test - Compile
							 | 
						||
| 
								 | 
							
								      - script: cpp${{parameters.arch}}$(sep)Test
							 | 
						||
| 
								 | 
							
								        workingDirectory: test/std
							 | 
						||
| 
								 | 
							
								        displayName: std test - Run
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      # debugger
							 | 
						||
| 
								 | 
							
								      - script: haxe compile.hxml -D HXCPP_M${{parameters.arch}}
							 | 
						||
| 
								 | 
							
								        workingDirectory: test/debugger
							 | 
						||
| 
								 | 
							
								        displayName: debugger test - Compile
							 | 
						||
| 
								 | 
							
								      - script: bin$(sep)App-debug
							 | 
						||
| 
								 | 
							
								        workingDirectory: test/debugger
							 | 
						||
| 
								 | 
							
								        displayName: debugger test - Run
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      # native
							 | 
						||
| 
								 | 
							
								      - script: haxe compile.hxml -D HXCPP_M${{parameters.arch}}
							 | 
						||
| 
								 | 
							
								        workingDirectory: test/native
							 | 
						||
| 
								 | 
							
								        displayName: native test - Compile
							 | 
						||
| 
								 | 
							
								      - script: bin$(sep)Native
							 | 
						||
| 
								 | 
							
								        workingDirectory: test/native
							 | 
						||
| 
								 | 
							
								        displayName: native test - Run
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      # haxe unit test
							 | 
						||
| 
								 | 
							
								      - bash: |
							 | 
						||
| 
								 | 
							
								          set -ex
							 | 
						||
| 
								 | 
							
								          HAXE_VERSION=`haxe -version`
							 | 
						||
| 
								 | 
							
								          HAXE_HASH=`[[ "$HAXE_VERSION" =~ ^.+\+(.+) ]] && echo ${BASH_REMATCH[1]}`
							 | 
						||
| 
								 | 
							
								          git clone -q https://github.com/HaxeFoundation/haxe.git
							 | 
						||
| 
								 | 
							
								          pushd haxe
							 | 
						||
| 
								 | 
							
								          git reset --hard "$HAXE_HASH"
							 | 
						||
| 
								 | 
							
								          git clean -fdx
							 | 
						||
| 
								 | 
							
								          popd
							 | 
						||
| 
								 | 
							
								        displayName: haxe unit test - Clone haxe repo
							 | 
						||
| 
								 | 
							
								      - script: haxelib install compile-cpp.hxml --always
							 | 
						||
| 
								 | 
							
								        workingDirectory: haxe/tests/unit
							 | 
						||
| 
								 | 
							
								        displayName: haxe unit test - Install haxelibs
							 | 
						||
| 
								 | 
							
								      - script: haxe compile-cpp.hxml -D HXCPP_M${{parameters.arch}} -D no_http
							 | 
						||
| 
								 | 
							
								        workingDirectory: haxe/tests/unit
							 | 
						||
| 
								 | 
							
								        displayName: haxe unit test - Compile
							 | 
						||
| 
								 | 
							
								      - script: bin$(sep)cpp$(sep)TestMain-debug
							 | 
						||
| 
								 | 
							
								        workingDirectory: haxe/tests/unit
							 | 
						||
| 
								 | 
							
								        displayName: haxe unit test - Run
							 |