Skip to content

Build Rebol

Build Rebol #40

Workflow file for this run

name: 'Build Rebol'
on:
# Triggers the workflow on push or pull request events but only for the master branch
#push:
# branches: [ master ]
#pull_request:
# branches: [ master ]
# 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 Siskin Builder
uses: oldes/install-siskin@v0.13.0
- name: Build 64bit Rebol/Base using MSVC
run: |
./siskin.exe make/rebol3.nest --msvc %rebol3-base-windows-x64
MOVE ./msvc/Release-x64/rebol3-base-windows-x64.exe ./
./rebol3-base-windows-x64.exe -v
- name: Build 64bit Rebol/Core using MSVC
run: |
./siskin.exe make/rebol3.nest --msvc %rebol3-core-windows-x64
MOVE ./msvc/Release-x64/rebol3-core-windows-x64.exe ./
./rebol3-core-windows-x64.exe -v
- name: Build 64bit Rebol/Bulk using MSVC
run: |
./siskin.exe make/rebol3.nest --msvc %rebol3-bulk-windows-x64
MOVE ./msvc/Release-x64/rebol3-bulk-windows-x64.exe ./
./rebol3-bulk-windows-x64.exe -v
- name: Build 32bit Rebol/Base using MSVC
run: |
./siskin.exe make/rebol3.nest --msvc %rebol3-base-windows-x86
MOVE ./msvc/Release-Win32/rebol3-base-windows-x86.exe ./
./rebol3-base-windows-x86.exe -v
- name: Build 32bit Rebol/Core using MSVC
run: |
./siskin.exe make/rebol3.nest --msvc %rebol3-core-windows-x86
MOVE ./msvc/Release-Win32/rebol3-core-windows-x86.exe ./
./rebol3-core-windows-x86.exe -v
- name: Build 32bit Rebol/Bulk using MSVC
run: |
./siskin.exe make/rebol3.nest --msvc %rebol3-bulk-windows-x86
MOVE ./msvc/Release-Win32/rebol3-bulk-windows-x86.exe ./
./rebol3-bulk-windows-x86.exe -v
###############################################################################
# Building Rebol as a shared library...
- name: Build 32bit Rebol/Core as a shared library using MSVC
run: ./siskin.exe make/rebol3.nest --msvc %lib-rebol3-core-windows-x86
- name: Build 64bit Rebol/Core as a shared library using MSVC
run: ./siskin.exe make/rebol3.nest --msvc %lib-rebol3-core-windows-x64
###############################################################################
# Building sample host applications using Rebol as a shared library...
- name: Build 32bit Rebol/Core as a host application using MSVC
run: ./siskin.exe make/rebol3.nest --msvc %host-core-windows-x86
- name: Build 64bit Rebol/Core as a host application using MSVC
run: ./siskin.exe make/rebol3.nest --msvc %host-core-windows-x64
- name: Move library and host files into root
run: |
MOVE ./msvc/Release-Win32/lib-rebol3-core-windows-x86.dll ./
MOVE ./msvc/Release-Win32/lib-rebol3-core-windows-x86.lib ./
MOVE ./msvc/Release-Win32/host-core-windows-x86.exe ./
MOVE ./msvc/Release-x64/lib-rebol3-core-windows-x64.dll ./
MOVE ./msvc/Release-x64/lib-rebol3-core-windows-x64.lib ./
MOVE ./msvc/Release-x64/host-core-windows-x64.exe ./
###############################################################################
# Collecting 32bit build artifacts...
- uses: actions/upload-artifact@v3
with:
name: Rebol-32bit-Windows-${{github.run_id}}
path: ./rebol3-*-x86.exe
# and lib/host variant...
- uses: actions/upload-artifact@v3
with:
name: Rebol-32bit-Windows-lib-${{github.run_id}}
path: ./lib-*-x86.dll
- uses: actions/upload-artifact@v3
with:
name: Rebol-32bit-Windows-lib-${{github.run_id}}
path: ./lib-*-x86.lib
- uses: actions/upload-artifact@v3
with:
name: Rebol-32bit-Windows-lib-${{github.run_id}}
path: ./host-*-x86.exe
# Collecting 64bit build artifacts...
- uses: actions/upload-artifact@v3
with:
name: Rebol-64bit-Windows-${{github.run_id}}
path: ./rebol3-*-x64.exe
# and lib/host variant...
- uses: actions/upload-artifact@v3
with:
name: Rebol-64bit-Windows-lib-${{github.run_id}}
path: ./lib-*-x64.dll
- uses: actions/upload-artifact@v3
with:
name: Rebol-64bit-Windows-lib-${{github.run_id}}
path: ./lib-*-x64.lib
- uses: actions/upload-artifact@v3
with:
name: Rebol-64bit-Windows-lib-${{github.run_id}}
path: ./host-*-x64.exe
linux:
strategy:
fail-fast: true
matrix:
os: [ubuntu-20.04]
#os: [ubuntu-20.04, ubuntu-18.04]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Siskin Builder
uses: oldes/install-siskin@v0.13.0
- name: Install GCC multilib
run: sudo apt-get install gcc-multilib
- name: Build 32bit Rebol/Base using gcc
run: ./siskin make/rebol3.nest %rebol3-base-linux-x86
- name: Build 32bit Rebol/Core using gcc
run: ./siskin make/rebol3.nest %rebol3-core-linux-x86
- name: Build 32bit Rebol/Bulk using gcc
run: ./siskin make/rebol3.nest %rebol3-bulk-linux-x86
- name: Build 64bit Rebol/Base using gcc
run: ./siskin make/rebol3.nest %rebol3-base-linux-x64
- name: Build 64bit Rebol/Core using gcc
run: ./siskin make/rebol3.nest %rebol3-core-linux-x64
- name: Build 64bit Rebol/Bulk using gcc
run: ./siskin make/rebol3.nest %rebol3-bulk-linux-x64
# - name: Build 64bit Rebol/Base using clang
# run: ./siskin make/rebol3.nest %rebol3-base-x64-libc-clang
# - name: Build 64bit Rebol/Core using clang
# run: ./siskin make/rebol3.nest %rebol3-core-x64-libc-clang
# - name: Build 64bit Rebol/Bulk using clang
# run: ./siskin make/rebol3.nest %rebol3-bulk-x64-libc-clang
- name: Test 64bit linux versions
run: |
./build/rebol3-base-linux-x64 -v
./build/rebol3-core-linux-x64 -v
./build/rebol3-bulk-linux-x64 -v
- name: Prepare 32bit Rebol/Base for upload
run: |
mv ./build/rebol3-base-linux-x86 ./
gzip -9 ./rebol3-base-linux-x86
- name: Prepare 32bit Rebol/Core for upload
run: |
mv ./build/rebol3-core-linux-x86 ./
gzip -9 ./rebol3-core-linux-x86
- name: Prepare 32bit Rebol/Bulk for upload
run: |
mv ./build/rebol3-bulk-linux-x86 ./
gzip -9 ./rebol3-bulk-linux-x86
- uses: actions/upload-artifact@v3
with:
name: Rebol-32bit-Linux-${{github.run_id}}
path: ./rebol3-*-x86.gz
- name: Prepare 64bit Rebol/Base for upload
run: |
mv ./build/rebol3-base-linux-x64 ./rebol3-base-linux-x64
gzip -9 ./rebol3-base-linux-x64
- name: Prepare 64bit Rebol/Core for upload
run: |
mv ./build/rebol3-core-linux-x64 ./rebol3-core-linux-x64
gzip -9 ./rebol3-core-linux-x64
- name: Prepare 64bit Rebol/Bulk for upload
run: |
mv ./build/rebol3-bulk-linux-x64 ./rebol3-bulk-linux-x64
gzip -9 ./rebol3-bulk-linux-x64
- uses: actions/upload-artifact@v3
with:
name: Rebol-64bit-Linux-${{github.run_id}}
path: ./rebol3-*-x64.gz
# musl versions...
##################
- name: Login to Docker Hub
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_HUB_USERNAME }}
password: ${{ secrets.DOCKER_HUB_ACCESS_TOKEN }}
- name: Download Rebol-dev container
run: docker pull oldes/rebol-dev:alpine
- name: Build all Rebol Alpine (musl) x64 versions
run: |
cd .github/workflows/alpine/
chmod +x ./build-all-alpine.sh
docker run -v $PWD:/out/ oldes/rebol-dev:alpine /out/build-all-alpine.sh
- uses: actions/upload-artifact@v3
with:
name: Rebol-64bit-Linux-musl-${{github.run_id}}
path: .github/workflows/alpine/*.gz
macos:
runs-on: macos-12
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Install Siskin Builder
uses: oldes/install-siskin@v0.13.0
- name: Build 64bit Rebol/Base using clang
run: |
./siskin make/rebol3.nest %rebol3-base-macos-x64
file ./build/rebol3-base-macos-x64
- name: Build 64bit Rebol/Core using clang
run: |
./siskin make/rebol3.nest %rebol3-core-macos-x64
file ./build/rebol3-core-macos-x64
- name: Build 64bit Rebol/Bulk using clang
run: |
./siskin make/rebol3.nest %rebol3-bulk-macos-x64
file ./build/rebol3-bulk-macos-x64
- name: Build ARM64 Rebol/Base using clang
run: |
./siskin make/rebol3.nest %rebol3-base-macos-arm64
file ./build/rebol3-base-macos-arm64
- name: Build ARM64 Rebol/Core using clang
run: |
./siskin make/rebol3.nest %rebol3-core-macos-arm64
file ./build/rebol3-core-macos-arm64
- name: Build ARM64 Rebol/Bulk using clang
run: |
./siskin make/rebol3.nest %rebol3-bulk-macos-arm64
file ./build/rebol3-bulk-macos-arm64
# - name: Build 64bit Rebol/Core as a shared library
# run: ./siskin make/rebol3.nest %lib-rebol3-core-macos-x64
# - name: Build 64bit Rebol/Core as a host application
# run: ./siskin make/rebol3.nest %host-core-macos-x64
- 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
- name: Codesign executables
env:
MACOS_IDENTITY_ID: ${{ secrets.MACOS_IDENTITY_ID }}
run: |
/usr/bin/codesign --force -s $MACOS_IDENTITY_ID ./build/rebol3-base-macos-x64 -v
/usr/bin/codesign --force -s $MACOS_IDENTITY_ID ./build/rebol3-core-macos-x64 -v
/usr/bin/codesign --force -s $MACOS_IDENTITY_ID ./build/rebol3-bulk-macos-x64 -v
/usr/bin/codesign --force -s $MACOS_IDENTITY_ID ./build/rebol3-base-macos-arm64 -v
/usr/bin/codesign --force -s $MACOS_IDENTITY_ID ./build/rebol3-core-macos-arm64 -v
/usr/bin/codesign --force -s $MACOS_IDENTITY_ID ./build/rebol3-bulk-macos-arm64 -v
continue-on-error: true
- name: Test x64 macOS versions
run: |
./build/rebol3-base-macos-x64 -v
./build/rebol3-core-macos-x64 -v
./build/rebol3-bulk-macos-x64 -v
- name: Prepare 64bit Rebol/Base for upload
run: |
mv ./build/rebol3-base-macos-x64 ./
gzip -9 ./rebol3-base-macos-x64
- name: Prepare 64bit Rebol/Core for upload
run: |
mv ./build/rebol3-core-macos-x64 ./
gzip -9 ./rebol3-core-macos-x64
- name: Prepare 64bit Rebol/Bulk for upload
run: |
mv ./build/rebol3-bulk-macos-x64 ./
gzip -9 ./rebol3-bulk-macos-x64
- name: Prepare ARM64 Rebol/Base for upload
run: |
mv ./build/rebol3-base-macos-arm64 ./
gzip -9 ./rebol3-base-macos-arm64
- name: Prepare ARM64 Rebol/Core for upload
run: |
mv ./build/rebol3-core-macos-arm64 ./
gzip -9 ./rebol3-core-macos-arm64
- name: Prepare ARM64 Rebol/Bulk for upload
run: |
mv ./build/rebol3-bulk-macos-arm64 ./
gzip -9 ./rebol3-bulk-macos-arm64
# - name: Prepare 64bit Rebol/Core as a shared library for upload
# run: |
# mv ./build/lib-rebol3-core-macos-x64 ./lib-rebol3-core-macos-x64
# gzip -9 ./lib-rebol3-core-macos-x64
# - name: Prepare 64bit Rebol/Core as a host application for upload
# run: |
# mv ./build/host-core-macos-x64 ./host-core-macos-x64
# gzip -9 ./host-core-macos-x64
- uses: actions/upload-artifact@v3
with:
name: Rebol-64bit-macOS-intel-${{github.run_id}}
path: ./*-x64.gz
- uses: actions/upload-artifact@v3
with:
name: Rebol-64bit-macOS-arm-${{github.run_id}}
path: ./*-arm64.gz