Skip to content

Implement transaction-originating algorithms for TDES DUKPT #180

Implement transaction-originating algorithms for TDES DUKPT

Implement transaction-originating algorithms for TDES DUKPT #180

Workflow file for this run

##############################################################################
# Copyright (c) 2022, 2023 Leon Lynch
#
# This file is licensed under the terms of the LGPL v2.1 license.
# See LICENSE file.
##############################################################################
name: MacOS build
on: [push]
env:
TR31_VERSION: 0.5.1
jobs:
build-macos-debug:
strategy:
fail-fast: false
matrix:
include:
- { name: "MacOS 11", os: macos-11, osx_arch: "x86_64;arm64", build_type: "Release", deps: "none", fetch_deps: YES, build_dukpt_ui: NO }
- { name: "MacOS 11", os: macos-11, osx_arch: "x86_64;arm64", build_type: "Debug", deps: "tr31", fetch_deps: YES, build_dukpt_ui: NO }
- { name: "MacOS 11", os: macos-11, osx_arch: "x86_64", build_type: "Release", deps: "tr31/qt", fetch_deps: NO, build_dukpt_ui: YES }
- { name: "MacOS 12", os: macos-12, osx_arch: "x86_64", build_type: "Release", deps: "tr31", fetch_deps: NO, build_dukpt_ui: NO }
- { name: "MacOS 12", os: macos-12, osx_arch: "x86_64", build_type: "Debug", deps: "tr31/qt", fetch_deps: YES, build_dukpt_ui: YES }
name: ${{ matrix.name }} (${{ matrix.osx_arch }}) build (static/${{ matrix.build_type }}/${{ matrix.deps }})
runs-on: ${{ matrix.os }}
steps:
- name: Install MbedTLS and argp-standalone using brew
# Homebrew doesn't support universal binaries so only install dependencies for x86_64 builds
if: ${{ matrix.fetch_deps == 'NO' }}
run: |
brew install mbedtls
brew install argp-standalone
echo "CMAKE_REQUIRE_FIND_PACKAGE_MbedTLS=YES" >> $GITHUB_ENV
- name: Install TR-31 using brew
if: ${{ contains(matrix.deps, 'tr31') && matrix.fetch_deps == 'NO' }}
run: |
brew install openemv/tap/tr31
echo "CMAKE_REQUIRE_FIND_PACKAGE_tr31=YES" >> $GITHUB_ENV
- name: Install Qt5 using brew
# Homebrew doesn't support universal binaries so only install Qt for x86_64 builds
if: contains(matrix.deps, 'qt')
run: |
brew install qt@5
echo "QT5_DIR=$(brew --prefix qt@5)/lib/cmake/Qt5" >> $GITHUB_ENV
- name: Checkout
uses: actions/checkout@v3
with:
submodules: recursive
- name: Build TR-31 from source
# This step must be after the checkout action step to avoid being overwritten
if: ${{ contains(matrix.deps, 'tr31') && matrix.fetch_deps == 'YES' }}
run: |
gh release download --repo openemv/tr31 ${{ env.TR31_VERSION }}
tar xvfz tr31-${{ env.TR31_VERSION }}-src.tar.gz
cd tr31-${{ env.TR31_VERSION }}
cmake -B build -DCMAKE_OSX_ARCHITECTURES="${{ matrix.osx_arch }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_type }}" -DFETCH_MBEDTLS=${{ matrix.fetch_deps }} -DCMAKE_REQUIRE_FIND_PACKAGE_MbedTLS=${{ env.CMAKE_REQUIRE_FIND_PACKAGE_MbedTLS }} -DBUILD_TR31_TOOL=NO
cmake --build build
echo "TR31_DIR=$(pwd)/build/cmake/" >> $GITHUB_ENV
echo "CMAKE_REQUIRE_FIND_PACKAGE_tr31=YES" >> $GITHUB_ENV
cd ..
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Configure CMake
run: cmake -B build -DCMAKE_OSX_ARCHITECTURES="${{ matrix.osx_arch }}" -DCMAKE_BUILD_TYPE="${{ matrix.build_type }}" -DFETCH_MBEDTLS=${{ matrix.fetch_deps }} -DCMAKE_REQUIRE_FIND_PACKAGE_MbedTLS=${{ env.CMAKE_REQUIRE_FIND_PACKAGE_MbedTLS }} -DFETCH_ARGP=${{ matrix.fetch_deps }} -Dtr31_DIR=${{ env.TR31_DIR }} -DCMAKE_REQUIRE_FIND_PACKAGE_tr31=${{ env.CMAKE_REQUIRE_FIND_PACKAGE_tr31 }} -DQt5_DIR=${{ env.QT5_DIR }} -DBUILD_DUKPT_UI=${{ matrix.build_dukpt_ui }}
- name: Build
run: cmake --build build
- name: Test
run: ctest --test-dir build --output-on-failure
build-macos-release:
name: MacOS 11 (release)
runs-on: macos-11
steps:
- name: Install dependencies
run: |
brew install qt@5
echo "QT5_DIR=$(brew --prefix qt@5)/lib/cmake/Qt5" >> $GITHUB_ENV
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
submodules: recursive
- name: Get version from git tag
run: echo "GIT_DESCRIBE=$(git describe --always --dirty)" >> $GITHUB_ENV
- name: Build TR-31 dependency
run: |
gh release download --repo openemv/tr31 ${{ env.TR31_VERSION }}
tar xvfz tr31-${{ env.TR31_VERSION }}-src.tar.gz
cd tr31-${{ env.TR31_VERSION }}
cmake -B build -DCMAKE_OSX_ARCHITECTURES="x86_64" -DCMAKE_BUILD_TYPE="RelWithDebInfo" -DFETCH_MBEDTLS=YES -DFETCH_ARGP=YES
cmake --build build
echo "TR31_DIR=$(pwd)/build/cmake/" >> $GITHUB_ENV
cd ..
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Prepare keychain
env:
OPENEMV_MACOS_CERT_BASE64: ${{ secrets.OPENEMV_MACOS_CERT_BASE64 }}
OPENEMV_MACOS_CERT_PWD: ${{ secrets.OPENEMV_MACOS_CERT_PWD }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
run: scripts/prepare_macos_keychain.sh
- name: Configure CMake
run: cmake -B build -DCMAKE_OSX_ARCHITECTURES="x86_64" -DCMAKE_BUILD_TYPE="RelWithDebInfo" -DFETCH_MBEDTLS=YES -DFETCH_ARGP=YES -Dtr31_DIR=${{ env.TR31_DIR }} -DQt5_DIR=${{ env.QT5_DIR }} -DBUILD_DUKPT_UI=YES -DBUILD_MACOSX_BUNDLE=YES -DSIGN_MACOSX_BUNDLE=openemv.org
- name: Build
run: cmake --build build
- name: Test
run: ctest --test-dir build --output-on-failure
- name: Package
run: cmake --build build --target package
- name: Clean up keychain
if: ${{ always() }}
run: scripts/cleanup_macos_keychain.sh
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: dukpt-${{ env.GIT_DESCRIBE }}-macos
path: build/dukpt-*.dmg
if-no-files-found: error