Build Rebol #40
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |