Skip to content

Package

Package #1391

Workflow file for this run

name: Package
on:
push:
branches:
- master
- 'maintenance/**'
tags:
- '*'
pull_request:
schedule:
- cron: |
0 0 * * *
concurrency:
group: ${{ github.head_ref || github.sha }}-${{ github.workflow }}
cancel-in-progress: true
jobs:
source:
name: Source
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Install dependencies
run: |
sudo apt update -o="APT::Acquire::Retries=3"
sudo apt install -y -V -o="APT::Acquire::Retries=3" \
autoconf-archive \
devscripts \
python3-pip \
ruby \
zip
sudo pip3 install -U pip
- name: Install Sphinx
run: |
sudo pip3 install -U \
Jinja2 \
Pygments \
"Sphinx==5.3.0" \
pydata_sphinx_theme
- name: Clone dependencies
run: |
cd ..
git clone --depth 1 https://github.com/groonga/groonga.org.git
git clone --depth 1 https://github.com/clear-code/cutter.git
- name: Generate configure
run: |
./autogen.sh
- name: Configure for archive
run: |
./configure \
--enable-document \
--enable-mruby \
--with-cutter-source-path=../cutter \
--with-groonga-org-path=../groonga.org \
--with-ruby
- name: Build archive
run: |
make dist
- name: Create zip
run: |
version=$(cat base_version)
tar xzf groonga-${version}.tar.gz
pushd groonga-${version}/vendor
ruby download_lz4.rb
ruby download_mecab.rb
ruby download_message_pack.rb
ruby download_rapidjson.rb
ruby download.rb
popd
zip -r groonga-${version}.zip groonga-${version}
rm -rf groonga-${version}
# Artifact
- uses: actions/upload-artifact@v3
with:
name: source
path: |
groonga-*.tar.gz
groonga-*.zip
# Release
- name: Upload to release
uses: softprops/action-gh-release@v1
if: |
startsWith(github.ref, 'refs/tags/')
with:
files: |
groonga-*.tar.gz
groonga-*.zip
build:
name: Build
needs: source
strategy:
fail-fast: false
matrix:
label:
- Debian GNU/Linux bullseye amd64
- Debian GNU/Linux bullseye arm64
- CentOS 7 x86_64
- Amazon Linux 2 x86_64
- AlmaLinux 8 x86_64
- AlmaLinux 8 aarch64
- AlmaLinux 9 x86_64
- AlmaLinux 9 aarch64
include:
- label: Debian GNU/Linux bullseye amd64
id: debian-bullseye-amd64
task-namespace: apt
target: debian-bullseye
test-docker-image: debian:bullseye
- label: Debian GNU/Linux bullseye arm64
id: debian-bullseye-arm64
task-namespace: apt
target: debian-bullseye-arm64
test-docker-image: arm64v8/debian:bullseye
- label: CentOS 7 x86_64
id: centos-7-x86_64
task-namespace: yum
target: centos-7
test-docker-image: centos:7
- label: Amazon Linux 2 x86_64
id: amazon-linux-2-x86_64
task-namespace: yum
target: amazon-linux-2
test-docker-image: amazonlinux:2
- label: AlmaLinux 8 x86_64
id: almalinux-8-x86_64
task-namespace: yum
target: almalinux-8
test-docker-image: almalinux:8
- label: AlmaLinux 8 aarch64
id: almalinux-8-aarch64
task-namespace: yum
target: almalinux-8-aarch64
test-docker-image: arm64v8/almalinux:8
- label: AlmaLinux 9 x86_64
id: almalinux-9-x86_64
task-namespace: yum
target: almalinux-9
test-docker-image: almalinux:9
- label: AlmaLinux 9 aarch64
id: almalinux-9-aarch64
task-namespace: yum
target: almalinux-9-aarch64
test-docker-image: arm64v8/almalinux:9
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Install dependencies
run: |
sudo apt update -o="APT::Acquire::Retries=3"
sudo apt install -y -V -o="APT::Acquire::Retries=3" \
devscripts \
qemu-user-static \
ruby
- uses: actions/download-artifact@v3
with:
name: source
- name: Update version
if: |
!startsWith(github.ref, 'refs/tags/') &&
!startsWith(github.ref, 'refs/heads/maintenance/')
run: |
cd packages
rake version:update RELEASE_DATE=$(date +%Y-%m-%d)
- name: Login to GitHub Container registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Cache ccache
uses: actions/cache@v3
with:
path: packages/${{ matrix.task-namespace }}/build/${{ matrix.target }}/ccache
key: package-${{ matrix.id }}-ccache-${{ hashFiles('lib/**', 'src/**', 'plugins/**', 'include/**') }}
restore-keys: package-${{ matrix.id }}-ccache-
- name: Build with docker
run: |
cd packages
rake docker:pull || :
rake ${{ matrix.task-namespace }}:build BUILD_DIR=build
env:
APT_TARGETS: ${{ matrix.target }}
YUM_TARGETS: ${{ matrix.target }}
- name: Push the built Docker image
continue-on-error: true
run: |
cd packages
rake docker:push
env:
APT_TARGETS: ${{ matrix.target }}
YUM_TARGETS: ${{ matrix.target }}
# Artifact
- uses: actions/upload-artifact@v3
with:
name: packages-${{ matrix.id }}
path: packages/${{ matrix.task-namespace }}/repositories/
# Release
- name: Create assets
if: |
startsWith(github.ref, 'refs/tags/')
run: |
tar czf ${{ matrix.id }}.tar.gz packages/${{ matrix.task-namespace }}/repositories/
- name: Upload to release
uses: softprops/action-gh-release@v1
if: |
startsWith(github.ref, 'refs/tags/')
with:
files: |
${{ matrix.id }}.tar.gz
# Test
- name: Test
run: |
docker run \
--rm \
--volume ${PWD}:/groonga:ro \
${{ matrix.test-docker-image }} \
/groonga/packages/${{ matrix.task-namespace }}/test.sh