Skip to content

Builder: updated code to be compatible with the upcoming Rebol version #116

Builder: updated code to be compatible with the upcoming Rebol version

Builder: updated code to be compatible with the upcoming Rebol version #116

Workflow file for this run

name: 'Build Siskin'
on:
# Triggers the workflow when these files are modified
push:
paths:
- test/**
- tree/rebol/Siskin/**
- tree/rebol/siskin.nest
- .github/workflows/siskin.yml
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
windows:
strategy:
fail-fast: true
runs-on: windows-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Rebol
uses: oldes/[email protected]
# 32bit gcc version would fail for now (requires 32bit mingw)
# - name: Build 32bit Siskin using gcc
# run: |
# ./rebol3 siskin.r3 rebol/siskin siskin-windows-x86
# MOVE ./tree/rebol/Siskin/build/siskin-windows-x86.exe ./siskin-windows-x86-gcc.exe
#
# - name: Build 64bit Siskin using gcc
# run: |
# ./rebol3 siskin.r3 rebol/siskin siskin-windows-x86_64
# MOVE ./tree/rebol/Siskin/build/siskin-windows-x86_64.exe ./siskin-windows-x86_64-gcc.exe
- name: Build 32bit Siskin using msvc
run: |
./rebol3 siskin.r3 rebol/siskin --msvc siskin-windows-x86
MOVE ./tree/rebol/Rebol/msvc/Release-Win32/siskin-windows-x86.exe ./
- name: Build 64bit Siskin using msvc
run: |
./rebol3 siskin.r3 rebol/siskin --msvc siskin-windows-x86_64
MOVE ./tree/rebol/Rebol/msvc/Release-x64/siskin-windows-x86_64.exe ./
#- name: Test 32bit Siskin project (gcc)
# run: ./siskin-windows-x86-gcc.exe
#- name: Test 64bit Siskin project (gcc)
# run: ./siskin-windows-x86_64-gcc.exe
- name: Test 32bit Siskin project (msvc)
run: ./siskin-windows-x86.exe
- name: Test 64bit Siskin project (msvc)
run: ./siskin-windows-x86_64.exe
- name: List all possible test targets
run: ./siskin-windows-x86_64.exe test --list
- name: Test build 1
run: ./siskin-windows-x86_64.exe test test-1
- name: Test build 2
run: ./siskin-windows-x86_64.exe test test-2
- name: Test build 3
run: ./siskin-windows-x86_64.exe test test-3
- name: Test build 4
run: ./siskin-windows-x86_64.exe test test-4
- name: Test build 5
run: ./siskin-windows-x86_64.exe test test-5
- name: Test build 6
run: ./siskin-windows-x86_64.exe test test-6
- name: Test build 7
run: ./siskin-windows-x86_64.exe test test-7
- name: Test build 8
run: ./siskin-windows-x86_64.exe test "test-8 spaced"
- name: Test build multiple at once
run: ./siskin-windows-x86_64.exe test 1 2 "test-8 spaced"
- name: Test build with output override
run: |
./siskin-windows-x86_64.exe test --output new.exe test-1
./new.exe
- name: Test Rebol Preprocessor
run: |
./siskin-windows-x86_64.exe test test.r3
./rebol3 ./test/build/test.r3
- name: Test build 8 (MSVC)
run: ./siskin-windows-x86_64.exe test --msvc 8
- name: Test build 8 with output override (MSVC)
run: |
./siskin-windows-x86_64.exe test --msvc -o new.exe 8
./new.exe
- name: Test only single command
run: ./siskin-windows-x86_64.exe test list-dir
- uses: actions/upload-artifact@v3
with:
name: Siskin-windows
path: |
./siskin-windows-x86.exe
./siskin-windows-x86_64.exe
# ./siskin-windows-x86-gcc.exe
# ./siskin-windows-x86_64-gcc.exe
linux:
strategy:
fail-fast: true
matrix:
os: [ubuntu-20.04]
#os: [ubuntu-latest]
#os: [ubuntu-20.04, ubuntu-18.04]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Rebol
uses: oldes/[email protected]
- name: Install GCC multilib
run: sudo apt-get install gcc-multilib
- name: Build 32bit Siskin using gcc
run: ./rebol3 siskin.r3 rebol/siskin siskin-linux-x86
- name: Build 64bit Siskin using gcc
run: ./rebol3 siskin.r3 rebol/siskin siskin-linux-x86_64
- name: Move results into the root for uploading
run: |
mv ./tree/rebol/Siskin/build/siskin-linux-x86_64 ./
mv ./tree/rebol/Siskin/build/siskin-linux-x86 ./
- name: List all possible test targets
run: ./siskin-linux-x86_64 test --list
- name: Test build 1
run: ./siskin-linux-x86_64 test test-1
- name: Test build 2
run: ./siskin-linux-x86_64 test test-2
- name: Test build 3
run: ./siskin-linux-x86_64 test test-3
- name: Test build 4
run: ./siskin-linux-x86_64 test test-4
- name: Test build 5
run: ./siskin-linux-x86_64 test test-5
- name: Test build 6
run: ./siskin-linux-x86_64 test test-6
- name: Test build 7
run: ./siskin-linux-x86_64 test test-7
- name: Test build 8
run: ./siskin-linux-x86_64 test "test-8 spaced"
- name: Test build multiple at once
run: ./siskin-linux-x86_64 test 1 2 "test-8 spaced"
- name: Test build with output override
run: |
./siskin-linux-x86_64 test --output new test-1
./new
- name: Test Rebol Preprocessor
run: |
./siskin-linux-x86_64 test test.r3
./rebol3 ./test/build/test.r3
- name: Test only single command
run: ./siskin-linux-x86_64 test list-dir
- name: Compress results before uploading
run: |
gzip -9 ./siskin-linux-x86_64
gzip -9 ./siskin-linux-x86
- uses: actions/upload-artifact@v3
with:
name: Siskin-linux
path: ./siskin-linux*
macos:
runs-on: macos-12
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Rebol
uses: oldes/[email protected]
- name: Install the Apple certificate
# https://docs.github.com/en/actions/guides/installing-an-apple-certificate-on-macos-runners-for-xcode-development
env:
BUILD_CERTIFICATE_BASE64: ${{ secrets.MACOS_CERTIFICATE }}
P12_PASSWORD: ${{ secrets.MACOS_CERTIFICATE_PWD }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
run: |
# create variables
CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
# import certificate from secrets
echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode --output $CERTIFICATE_PATH
# create temporary keychain
security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
# import certificate to keychain
security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
security list-keychain -d user -s $KEYCHAIN_PATH
# list available codesigning identities
security find-identity -v -p codesigning
#It looks it's not possible to build 32bit macOS version anymore using GitHub actions!
#
#- name: Build 32bit Siskin
# run: |
# ./rebol3 siskin.r3 rebol/siskin %siskin-windows-x86-osx
# mv ./tree/rebol/Siskin/build/siskin-windows-x86-osx ./
- name: Build x86_64 Siskin
run: ./rebol3 siskin.r3 rebol/siskin siskin-macos-x86_64
- name: Build ARM64 Siskin
run: ./rebol3 siskin.r3 rebol/siskin siskin-macos-aarch64
- name: Move results into the root for uploading
run: |
mv ./tree/rebol/Siskin/build/siskin-macos-x86_64 ./
mv ./tree/rebol/Siskin/build/siskin-macos-aarch64 ./
- name: Codesign executables
env:
MACOS_IDENTITY_ID: ${{ secrets.MACOS_IDENTITY_ID }}
run: |
/usr/bin/codesign --force -s $MACOS_IDENTITY_ID ./siskin-macos-x86_64 -v
/usr/bin/codesign --force -s $MACOS_IDENTITY_ID ./siskin-macos-aarch64 -v
- name: List all possible test targets
run: ./siskin-macos-x86_64 test --list
- name: Test build 1
run: ./siskin-macos-x86_64 test test-1
- name: Test build 2
run: ./siskin-macos-x86_64 test test-2
- name: Test build 3
run: ./siskin-macos-x86_64 test test-3
- name: Test build 4
run: ./siskin-macos-x86_64 test test-4
- name: Test build 5
run: ./siskin-macos-x86_64 test test-5
- name: Test build 6
run: ./siskin-macos-x86_64 test test-6
- name: Test build 7
run: ./siskin-macos-x86_64 test test-7
- name: Test build 8
run: ./siskin-macos-x86_64 test "test-8 spaced"
- name: Test build multiple at once
run: ./siskin-macos-x86_64 test 1 2 "test-8 spaced"
- name: Test build with output override
run: |
./siskin-macos-x86_64 test --output new test-1
./new
- name: Test Rebol Preprocessor
run: |
./siskin-macos-x86_64 test test.r3
./rebol3 ./test/build/test.r3
- name: Test only single command
run: ./siskin-macos-x86_64 test list-dir
- name: Compress results before uploading
run: |
gzip -9 ./siskin-macos-x86_64
gzip -9 ./siskin-macos-aarch64
- uses: actions/upload-artifact@v3
with:
name: Siskin-macos
path: ./siskin-macos-*
script:
runs-on: ubuntu-20.04
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Rebol
uses: oldes/[email protected]
- name: Preprocess Siskin script
run: ./rebol3 siskin.r3 rebol/siskin siskin.r3
- name: Move results into the root for uploading
run: |
mv ./tree/rebol/Siskin/build/siskin.r3 ./build.r3
- name: List all possible test targets
run: ./rebol3 build.r3 test --list
- name: Test build 1
run: ./rebol3 build.r3 test test-1
- name: Test build 2
run: ./rebol3 build.r3 test test-2
- name: Test build 3
run: ./rebol3 build.r3 test test-3
- name: Test build 4
run: ./rebol3 build.r3 test test-4
- name: Test build 5
run: ./rebol3 build.r3 test test-5
- name: Test build 6
run: ./rebol3 build.r3 test test-6
- name: Test build 7
run: ./rebol3 build.r3 test test-7
- name: Test build 8
run: ./rebol3 build.r3 test "test-8 spaced"
- name: Test build multiple at once
run: ./rebol3 build.r3 test 1 2 "test-8 spaced"
- name: Test Rebol Preprocessor
run: |
./rebol3 build.r3 test test.r3
./rebol3 ./test/build/test.r3
- name: Test only single command
run: ./rebol3 build.r3 test list-dir
- name: Compress results before uploading
run: gzip -9 ./build.r3
- uses: actions/upload-artifact@v3
with:
name: Siskin-script
path: ./build.r3.gz
Haiku-x86:
strategy:
fail-fast: false
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
- name: Download Haiku Rebol-dev container
run: docker pull docker.io/oldes/rebol-dev:haiku-x86
- name: Build all Siskin for Haiku OS x86
run: docker run --rm -v $PWD:/siskin oldes/rebol-dev:haiku-x86 bash -c 'cd /siskin; rebol siskin.r3 rebol/siskin siskin-haiku-x86'
- name: Compress result before uploading
run: |
sudo mv ./tree/rebol/Siskin/build/siskin-haiku-x86 ./
sudo gzip -9 ./siskin-haiku-x86
- uses: actions/upload-artifact@v3
with:
name: Siskin-Haiku
path: ./siskin-haiku-x86.gz
Haiku-x86_64:
strategy:
fail-fast: false
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Login to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
- name: Download Haiku Rebol-dev container
run: docker pull docker.io/oldes/rebol-dev:haiku-x64
- name: Build all Siskin for Haiku OS x86_64
run: docker run --rm -v $PWD:/siskin oldes/rebol-dev:haiku-x64 bash -c 'cd /siskin; rebol siskin.r3 rebol/siskin siskin-haiku-x86_64'
- name: Compress result before uploading
run: |
sudo mv ./tree/rebol/Siskin/build/siskin-haiku-x86_64 ./
sudo gzip -9 ./siskin-haiku-x86_64
- uses: actions/upload-artifact@v3
with:
name: Siskin-Haiku
path: ./siskin-haiku-x86_64.gz