Setup cross compilation in release GitHub action #13
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: Deploy Dependencies | |
on: | |
workflow_dispatch: | |
push: | |
branches: ['main', 'release-*'] | |
paths: ['.github/workflows/deploy-deps.yml'] | |
env: | |
openssl_args: no-dso no-shared no-tests no-threads --libdir=lib | |
jobs: | |
build-osxcross: | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
repository: tpoechtrager/osxcross | |
- run: sudo apt-get update | |
- run: sudo apt-get install libxml2-dev llvm-dev lzma-dev | |
- run: curl -fsSL https://cdn.thelang.io/MacOSX12.3.sdk.tar.xz -o tarballs/MacOSX12.3.sdk.tar.xz | |
- run: sudo mkdir -p /usr/local/the | |
- run: sudo chown -R $USER /usr/local/the | |
- run: TARGET_DIR="/usr/local/the/osxcross" UNATTENDED=1 ./build.sh | |
- run: sudo mv /usr/local/the/osxcross . | |
- run: tar -czf build-osxcross.tar.gz osxcross | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: build-osxcross | |
path: build-osxcross.tar.gz | |
build-cross-compile-macos-arm64: | |
needs: build-osxcross | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
repository: openssl/openssl | |
ref: openssl-3.1.0 | |
- uses: actions/download-artifact@v4 | |
with: | |
name: build-osxcross | |
- run: sudo mkdir -p /usr/local/the | |
- run: sudo chown -R $USER /usr/local/the | |
- run: tar -xzf build-osxcross.tar.gz -C /usr/local/the | |
- run: echo "/usr/local/the/osxcross/bin" >> $GITHUB_PATH | |
- run: CC=clang perl Configure darwin64-arm64 --cross-compile-prefix=arm64-apple-darwin21.4- --prefix="$PWD/build" ${{ env.openssl_args }} | |
- run: perl configdata.pm --dump | |
- run: make -j4 | |
- run: make install_sw | |
- run: tar -czf build-cross-compile-macos-arm64.tar.gz build | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: build-cross-compile-macos-arm64 | |
path: build-cross-compile-macos-arm64.tar.gz | |
build-cross-compile-macos-x86_64: | |
needs: build-osxcross | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
repository: openssl/openssl | |
ref: openssl-3.1.0 | |
- uses: actions/download-artifact@v4 | |
with: | |
name: build-osxcross | |
- run: sudo mkdir -p /usr/local/the | |
- run: sudo chown -R $USER /usr/local/the | |
- run: tar -xzf build-osxcross.tar.gz -C /usr/local/the | |
- run: echo "/usr/local/the/osxcross/bin" >> $GITHUB_PATH | |
- run: CC=clang perl Configure darwin64-x86_64 --cross-compile-prefix=x86_64-apple-darwin21.4- --prefix="$PWD/build" ${{ env.openssl_args }} | |
- run: perl configdata.pm --dump | |
- run: make -j4 | |
- run: make install_sw | |
- run: tar -czf build-cross-compile-macos-x86_64.tar.gz build | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: build-cross-compile-macos-x86_64 | |
path: build-cross-compile-macos-x86_64.tar.gz | |
build-cross-compile-windows: | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
repository: openssl/openssl | |
ref: openssl-3.1.0 | |
- run: sudo apt-get update | |
- run: sudo apt-get install build-essential mingw-w64 | |
- run: perl Configure mingw64 --cross-compile-prefix=x86_64-w64-mingw32- --prefix="$PWD/build" ${{ env.openssl_args }} | |
- run: perl configdata.pm --dump | |
- run: make -j4 | |
- run: make install_sw | |
- run: tar -czf build-cross-compile-windows.tar.gz build | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: build-cross-compile-windows | |
path: build-cross-compile-windows.tar.gz | |
build-linux: | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
repository: openssl/openssl | |
ref: openssl-3.1.0 | |
- run: CC=clang perl Configure --prefix="$PWD/build" ${{ env.openssl_args }} | |
- run: perl configdata.pm --dump | |
- run: make -j4 | |
- run: make install_sw | |
- run: tar -czf build-linux.tar.gz build | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: build-linux | |
path: build-linux.tar.gz | |
build-macos-arm64: | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
repository: openssl/openssl | |
ref: openssl-3.1.0 | |
- run: CC=clang perl Configure darwin64-arm64 --prefix="$PWD/build" ${{ env.openssl_args }} | |
- run: perl configdata.pm --dump | |
- run: make -j4 | |
- run: make install_sw | |
- run: tar -czf build-macos-arm64.tar.gz build | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: build-macos-arm64 | |
path: build-macos-arm64.tar.gz | |
build-macos-x86_64: | |
runs-on: macos-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
repository: openssl/openssl | |
ref: openssl-3.1.0 | |
- run: CC=clang perl Configure darwin64-x86_64 --prefix="$PWD/build" ${{ env.openssl_args }} | |
- run: perl configdata.pm --dump | |
- run: make -j4 | |
- run: make install_sw | |
- run: tar -czf build-macos-x86_64.tar.gz build | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: build-macos-x86_64 | |
path: build-macos-x86_64.tar.gz | |
build-windows: | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
repository: openssl/openssl | |
ref: openssl-3.1.0 | |
- uses: ilammy/msvc-dev-cmd@v1 | |
- uses: ilammy/setup-nasm@v1 | |
- run: perl Configure VC-WIN64A --prefix="$PWD/build" ${{ env.openssl_args }} | |
- run: perl configdata.pm --dump | |
- run: nmake | |
- run: nmake install_sw | |
- run: cp build/lib/libssl.lib build/lib/ssl.lib | |
- run: cp build/lib/libcrypto.lib build/lib/crypto.lib | |
- run: tar -czf build-windows.tar.gz build | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: build-windows | |
path: build-windows.tar.gz | |
deploy: | |
needs: | |
- build-osxcross | |
- build-cross-compile-macos-arm64 | |
- build-cross-compile-macos-x86_64 | |
- build-cross-compile-windows | |
- build-linux | |
- build-macos-arm64 | |
- build-macos-x86_64 | |
- build-windows | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/download-artifact@v4 | |
- run: | | |
config=( | |
build-linux:the/cross-compile/linux | |
build-cross-compile-macos-arm64:the/cross-compile/macos/arm64 | |
build-cross-compile-macos-x86_64:the/cross-compile/macos/x86_64 | |
build-cross-compile-windows:the/cross-compile/windows | |
build-linux:the/native/linux | |
build-macos-arm64:the/native/macos/arm64 | |
build-macos-x86_64:the/native/macos/x86_64 | |
build-windows:the/native/windows | |
build-osxcross:the/osxcross | |
) | |
for item in "${config[@]}"; do | |
artifact="${item%%:*}" | |
location="${item#*:}" | |
tarball_location="$artifact/$artifact.tar.gz" | |
echo Creating directory "$location" | |
mkdir -p "$location" | |
echo Unpacking tarball "$tarball_location" | |
tar -xzf "$tarball_location" -C "$location" --strip-components=1 | |
done | |
- run: tar -czf deps.tar.gz the | |
- uses: aws-actions/configure-aws-credentials@v4 | |
with: | |
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY }} | |
aws-secret-access-key: ${{ secrets.AWS_ACCESS_SECRET }} | |
aws-region: ${{ secrets.AWS_REGION }} | |
- run: aws s3 cp deps.tar.gz s3://${{ secrets.AWS_S3_BUCKET }}/deps.tar.gz --content-type application/x-gzip | |
- run: aws cloudfront create-invalidation --distribution-id ${{ secrets.AWS_CLOUDFRONT_DISTRIBUTION }} --paths '/deps.tar.gz' |