Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Re-adding CI #1

Merged
merged 15 commits into from
Apr 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 111 additions & 0 deletions .github/actions/manylinux_2014_setup/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
name: "Setup manylinux2014 image"
description: "Installs/configures additional CI dependencies"
inputs:
aws-cli:
description: 'Setup aws-cli'
default: 0
ninja-build:
description: 'Setup ninja-build'
default: 0
vcpkg:
description: 'Setup vcpkg (installs to $GITHUB_WORKSPACE/vcpkg)'
default: 0
openssl:
description: 'Setup OpenSSL (requires vcpkg to also be installed)'
default: 0
ccache:
description: 'Setup Ccache'
default: 0
jdk:
description: 'Setup JDK'
default: 0
odbc:
description: 'Setup ODBC'
default: 0
ssh:
description: 'Setup SSH'
default: 0
glibc32:
description: 'Setup 32bit glibc'
default: 0
nodejs:
description: 'Setup NodeJS'
default: 0
gcc_4_8:
description: 'Setup GCC 4.8 (installs to /usr/bin/g++, default will still be GCC 10)'
default: 0
python_alias:
description: 'Create an alias for python3 to python3.9'
default: 0

runs:
using: "composite"
steps:
- name: Setup general dependencies
shell: bash
run: scripts/setup_manylinux2014.sh general

- name: Install AWS CLI
if: ${{ inputs.aws-cli == 1 }}
shell: bash
run: scripts/setup_manylinux2014.sh aws-cli

- name: Setup dependencies for ODBC
if: ${{ inputs.odbc == 1 }}
shell: bash
run: scripts/setup_manylinux2014.sh odbc

- name: Setup dependencies for ccache
if: ${{ inputs.ccache == 1 }}
shell: bash
run: scripts/setup_manylinux2014.sh ccache

- name: Setup JDK
if: ${{ inputs.jdk == 1 }}
shell: bash
run: scripts/setup_manylinux2014.sh jdk

- name: Setup SSH
if: ${{ inputs.ssh == 1 }}
shell: bash
run: scripts/setup_manylinux2014.sh ssh

- name: Setup NodeJS
if: ${{ inputs.nodejs == 1 }}
shell: bash
run: scripts/setup_manylinux2014.sh nodejs

- name: Setup 32bit compiler
if: ${{ inputs.glibc32 == 1 }}
shell: bash
run: scripts/setup_manylinux2014.sh glibc32

- name: Setup python3 as python3.9
if: ${{ inputs.python_alias == 1 }}
shell: bash
run: scripts/setup_manylinux2014.sh python_alias

- name: Setup old (GCC 4.8) compiler
if: ${{ inputs.gcc_4_8 == 1 }}
shell: bash
run: scripts/setup_manylinux2014.sh gcc_4_8

# Note instead of using scripts/setup_manylinux2014.sh vcpkg, we prefer to use
# lukka/[email protected] here as it configures vcpkg to cache to GH actions.
- name: Setup vcpkg
if: ${{ inputs.vcpkg == 1 }}
uses: lukka/[email protected]
with:
vcpkgGitCommitId: a1a1cbc975abf909a6c8985a6a2b8fe20bbd9bd6

- name: Install OpenSSL
if: ${{ inputs.openssl == 1 }}
shell: bash
run: scripts/setup_manylinux2014.sh openssl

- name: Setup Ccache
if: ${{ inputs.ccache == 1 }}
uses: hendrikmuhs/[email protected] # Note: pinned due to GLIBC incompatibility in later releases
with:
key: ${{ github.job }}
save: ${{ github.ref == 'refs/heads/main' || github.repository != 'duckdb/duckdb-java' }}
100 changes: 100 additions & 0 deletions .github/actions/ubuntu_18_setup/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
name: "Setup Ubuntu 18"
description: "Setup an Ubuntu 18 docker container with the required libraries"
inputs:
openssl:
description: 'OpenSSL'
default: 0
python:
description: 'Python'
default: 1
aarch64_cross_compile:
description: 'Install dependencies for aarch64 cross-compiling'
default: 0
vcpkg:
description: 'Install vcpkg'
default: 0
ccache:
description: 'Install ccache'
default: 0

runs:
using: "composite"
steps:
- name: Install
shell: bash
run: |
apt-get update -y -qq
apt-get install -y -qq software-properties-common
add-apt-repository ppa:git-core/ppa
apt-get update -y -qq
apt-get install -y -qq ninja-build make gcc-multilib g++-multilib libssl-dev wget openjdk-8-jdk zip maven unixodbc-dev libc6-dev-i386 lib32readline6-dev libssl-dev libcurl4-gnutls-dev libexpat1-dev gettext unzip build-essential checkinstall libffi-dev curl libz-dev openssh-client pkg-config

- name: Install
shell: bash
if: ${{ inputs.aarch64_cross_compile == 1 }}
run: |
apt-get install -y -qq gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

- name: Install Git 2.18.5
shell: bash
run: |
wget https://github.com/git/git/archive/refs/tags/v2.18.5.tar.gz
tar xvf v2.18.5.tar.gz
cd git-2.18.5
make
make prefix=/usr install
git --version

- uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Install CMake 3.21
shell: bash
run: |
wget https://github.com/Kitware/CMake/releases/download/v3.21.3/cmake-3.21.3-linux-x86_64.sh
chmod +x cmake-3.21.3-linux-x86_64.sh
./cmake-3.21.3-linux-x86_64.sh --skip-license --prefix=/usr/local
cmake --version

- name: Install Python 3.8
if: ${{ inputs.python }} == 1
shell: bash
run: |
wget https://www.python.org/ftp/python/3.8.17/Python-3.8.17.tgz
tar xvf Python-3.8.17.tgz
cd Python-3.8.17
mkdir -p pythonbin
./configure --with-ensurepip=install
make -j
make install
python3.8 --version
python3.8 -m pip install pip
python3.8 -m pip install requests awscli

- name: Version Check
shell: bash
run: |
ldd --version ldd
python3 --version
git --version
git log -1 --format=%h

- name: Setup vcpkg
if: ${{ inputs.vcpkg == 1 }}
uses: lukka/[email protected]
with:
vcpkgGitCommitId: a1a1cbc975abf909a6c8985a6a2b8fe20bbd9bd6

- name: Setup Ccache
if: ${{ inputs.ccache == 1 }}
uses: hendrikmuhs/[email protected] # Note: pinned due to GLIBC incompatibility in later releases
with:
key: ${{ github.job }}
save: ${{ github.ref == 'refs/heads/main' || github.repository != 'duckdb/duckdb-java' }}

- name: Instal OpenSSL through vcpkg
if: ${{ inputs.openssl == 1 }}
shell: bash
run: |
cd $VCPKG_ROOT && ./vcpkg install openssl --triplet=${{ inputs.aarch64_cross_compile == 1 && 'arm64-linux' || 'x64-linux' }}
Loading
Loading