Skip to content

Commit

Permalink
Created Ubuntu 20.04 container
Browse files Browse the repository at this point in the history
  • Loading branch information
maxirmx committed Jun 26, 2024
1 parent db04a61 commit 5e2c9ed
Show file tree
Hide file tree
Showing 4 changed files with 204 additions and 0 deletions.
59 changes: 59 additions & 0 deletions .github/workflows/build-containers.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: build-containers

on:
push:
# branches: [ main ]
# paths-ignore:
# - '**.adoc'
tags: [ 'v*' ]
pull_request:
workflow_dispatch:

concurrency:
group: '${{ github.workflow }}-${{ github.job }}-${{ github.head_ref || github.ref_name }}'
cancel-in-progress: true

jobs:
build-containers:
name: ${{ matrix.container }}
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
strategy:
fail-fast: false
matrix:
container:
- 'ubuntu-20.04'

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Log in to the Container registry
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1
with:
registry: ghcr.io
username: tamatebako
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build and push Docker image
uses: docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671
with:
context: .
file: ./${{ matrix.container }}.Dockerfile
push: ${{ contains(github.ref, 'refs/tags/v') }}
tags: ghcr.io/tamatebako/tebako-${{ matrix.container }}
labels: |
latest
"org.opencontainers.image.source=${{ github.repositoryUrl }}"
- name: Purge old versions
if: contains(github.ref, 'refs/tags/v')
continue-on-error: true
uses: actions/delete-package-versions@v4
with:
package-name: 'tebako-${{ matrix.container }}'
package-type: 'container'
min-versions-to-keep: 1
delete-only-untagged-versions: 'true'
10 changes: 10 additions & 0 deletions test/tebako-test-run.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# frozen_string_literal: true

puts "Hello!"
puts "Gem path: #{Gem.path}"
puts "Rubygems version: #{Gem::rubygems_version}"
if defined?(TebakoRuntime::VERSION)
puts "Using tebako-runtime v#{TebakoRuntime::VERSION}"
else
puts "Tebako runtime not loaded"
end
66 changes: 66 additions & 0 deletions tools/tools.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
#!/bin/bash

# Copyright (c) 2024 [Ribose Inc](https://www.ribose.com).
# All rights reserved.
# This file is a part of tamatebako
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.

set -o errexit -o pipefail -o noclobber -o nounset

: "${LOCAL_BUILDS:=/tmp/tebako}"
: "${CMAKE_VERSION:=3.24.4-1}"
: "${RUBY_VERSION:=3.1.6}"
: "${RUBY_INSTALL_VERSION:=0.9.3}"
: "${ARCH:=x64}"

install_cmake() {
echo "Running install_cmake for CMake version ${CMAKE_VERSION} for ${ARCH}"
local cmake_install=${LOCAL_BUILDS}/cmake
mkdir -p ${cmake_install}
pushd ${cmake_install}
wget -nv https://github.com/xpack-dev-tools/cmake-xpack/releases/download/v${CMAKE_VERSION}/xpack-cmake-${CMAKE_VERSION}-linux-${ARCH}.tar.gz
tar -zxf xpack-cmake-${CMAKE_VERSION}-linux-${ARCH}.tar.gz --directory /usr --strip-components=1 --skip-old-files
popd
rm -rf ${cmake_install}
}

install_ruby() {
echo "Running ruby_install version ${RUBY_INSTALL_VERSION} for Ruby ${RUBY_VERSION}"
local ruby_install=${LOCAL_BUILDS}/ruby_install
mkdir -p ${ruby_install}
pushd ${ruby_install}
wget -nv https://github.com/postmodern/ruby-install/releases/download/v${RUBY_INSTALL_VERSION}/ruby-install-${RUBY_INSTALL_VERSION}.tar.gz && \
tar -xzvf ruby-install-${RUBY_INSTALL_VERSION}.tar.gz
cd ruby-install-${RUBY_INSTALL_VERSION}
make install
ruby-install --system ruby ${RUBY_VERSION} -- --without-gmp --disable-dtrace --disable-debug-env --disable-install-doc CC=${CC}
popd
rm -rf ${ruby_install}
}

DIR0=$( dirname "$0" )
DIR_TOOLS=$( cd "$DIR0" && pwd )

echo "Running tools.sh with args: $@, DIR_TOOLS: ${DIR_TOOLS}"

"$@"
69 changes: 69 additions & 0 deletions ubuntu-20.04.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# Copyright (c) 2024 [Ribose Inc](https://www.ribose.com).
# All rights reserved.
# This file is a part of tamatebako
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.

FROM ubuntu:focal

ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=Etc/UTC
ENV ARCH=x64

RUN apt-get -y update && \
apt-get -y install sudo wget git make pkg-config clang-12 clang++-12 \
binutils-dev libevent-dev acl-dev libfmt-dev libjemalloc-dev \
libdouble-conversion-dev libiberty-dev liblz4-dev liblzma-dev libssl-dev \
libboost-filesystem-dev libboost-program-options-dev libboost-system-dev \
libboost-iostreams-dev libboost-date-time-dev libboost-context-dev \
libboost-regex-dev libboost-thread-dev libbrotli-dev libunwind-dev \
libdwarf-dev libelf-dev libgoogle-glog-dev libffi-dev libgdbm-dev \
libyaml-dev libncurses-dev libreadline-dev libutfcpp-dev libstdc++-10-dev

ENV CC=clang-12
ENV CXX=clang++-12

COPY tools /opt/tools

RUN /opt/tools/tools.sh install_cmake && \
/opt/tools/tools.sh install_ruby

RUN gem install tebako

ENV HOME=/home/tebako
RUN adduser --disabled-password --gecos "" --home $HOME tebako && \
printf "\ntebako\tALL=(ALL)\tNOPASSWD:\tALL" > /etc/sudoers.d/tebako

COPY test $HOME/test
USER tebako
WORKDIR $HOME

# Create packaging environment for Ruby 3.1.5, 3.2.4
# Test and "warm up" since initialization is fully finished after the first packaging
RUN tebako setup -p .tebako -R 3.1.5 && \
tebako setup -p .tebako -R 3.2.4 && \
tebako press -p .tebako -R 3.1.5 -r test -e tebako-test-run.rb -o ruby-3.1.5-package && \
tebako press -p .tebako -R 3.2.4 -r test -e tebako-test-run.rb -o ruby-3.2.4-package && \
rm ruby-*-package

ENV PS1=PS1="\[\]\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ \[\]"
CMD ["bash"]

0 comments on commit 5e2c9ed

Please sign in to comment.