Skip to content

This is for debug #1344

This is for debug

This is for debug #1344

Workflow file for this run

name: Package
on:
push:
branches:
- '*'
# - main
# - 'maintenance/**'
tags:
- '*'
# paths:
# - '**/*.cmake'
# - '**/*.cmake.in'
# - '**/CMakeLists.txt'
# - '**/Makefile.am'
# - '.github/workflows/package.yml'
# - 'configure.ac'
# - 'cmake/**'
# - 'doc/**'
# - 'include/**/*.h'
# - 'include/**/*.h.in'
# - 'include/**/*.hpp'
# - 'lib/**/*.c'
# - 'lib/**/*.cpp'
# - 'lib/**/*.h'
# - 'lib/**/*.hpp'
# - 'lib/**/*.rb'
# - 'packages/**'
# - 'plugins/**/*.c'
# - 'plugins/**/*.cpp'
# - 'plugins/**/*.h'
# - 'plugins/**/*.rb'
# - 'src/**/*.c'
# - 'src/**/*.h'
# - 'test/command/**'
# - 'vendor/mruby/**'
pull_request:
paths:
- '**/*.cmake'
- '**/*.cmake.in'
- '**/CMakeLists.txt'
- '**/Makefile.am'
- '.github/workflows/package.yml'
- 'configure.ac'
- 'cmake/**'
- 'doc/**'
- 'include/**/*.h'
- 'include/**/*.h.in'
- 'include/**/*.hpp'
- 'lib/**/*.c'
- 'lib/**/*.cpp'
- 'lib/**/*.h'
- 'lib/**/*.rb'
- 'lib/**/*.rb'
- 'packages/**'
- 'plugins/**/*.c'
- 'plugins/**/*.cpp'
- 'plugins/**/*.h'
- 'plugins/**/*.rb'
- 'src/**/*.c'
- 'src/**/*.h'
- 'test/command/**'
- 'vendor/mruby/**'
schedule:
- cron: |
0 0 * * *
concurrency:
group: ${{ github.head_ref || github.sha }}-${{ github.workflow }}
cancel-in-progress: true
jobs:
source:
if: >-
github.event_name != 'schedule' ||
(github.event_name == 'schedule' &&
github.repository_owner == 'groonga')
name: Source
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
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 \
ruby \
zip
- uses: actions/setup-python@v5
with:
python-version: 3
- name: Install Sphinx
run: |
pip3 install -r doc/requirements.txt
- 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
if: |
startsWith(github.ref, 'refs/tags/')
run: |
(cd doc/source/news && \
ruby \
-e 'print("## Groonga "); \
puts(ARGF.read.split(/^## Release /)[1]. \
gsub(/^\(.+\)=$/, ""). \
gsub(/{doc}`(.+?)`/) { \
id = $1; \
title = id.split("\/").last; \
path = id.delete_prefix("/"); \
url = "https://groonga.org/docs/#{path}.html"; \
"[#{title}](#{url})"; \
}. \
gsub(/{ref}`(.+?)`/) {$1}.
strip)' \
$(ls *.md | sort --human-numeric-sort | tail -n1)) > \
release-note.md
echo "" >> release-note.md
echo "### Translations" >> release-note.md
echo "" >> release-note.md
version=${GITHUB_REF_NAME#v}
major_version=${version%%.*}
version_hyphen=$(echo ${version} | tr . -)
echo " * [Japanese](https://groonga.org/ja/docs/news/${major_version}.html#release-${version_hyphen})" >> release-note.md
title="$(head -n1 release-note.md | sed -e 's/^## //')"
tail -n +2 release-note.md > release-note-without-version.md
gh release create ${GITHUB_REF_NAME} \
--discussion-category Releases \
--notes-file release-note-without-version.md \
--title "${title}" \
groonga-*.tar.gz \
groonga-*.zip
env:
GH_TOKEN: ${{ github.token }}
build:
name: Build
needs: source
strategy:
fail-fast: false
matrix:
label:
# - Debian GNU/Linux bullseye amd64
# - Debian GNU/Linux bullseye arm64
# - Debian GNU/Linux bookworm amd64
# - Debian GNU/Linux bookworm arm64
# - Debian GNU/Linux trixie amd64
# - Debian GNU/Linux trixie arm64
# - CentOS 7 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: Debian GNU/Linux bookworm amd64
# id: debian-bookworm-amd64
# task-namespace: apt
# target: debian-bookworm
# test-docker-image: debian:bookworm
# - label: Debian GNU/Linux bookworm arm64
# id: debian-bookworm-arm64
# task-namespace: apt
# target: debian-bookworm-arm64
# test-docker-image: arm64v8/debian:bookworm
# - label: Debian GNU/Linux trixie amd64
# id: debian-trixie-amd64
# task-namespace: apt
# target: debian-trixie
# test-docker-image: debian:trixie
# - label: Debian GNU/Linux trixie arm64
# id: debian-trixie-arm64
# task-namespace: apt
# target: debian-trixie-arm64
# test-docker-image: arm64v8/debian:trixie
# - label: CentOS 7 x86_64
# id: centos-7-x86_64
# task-namespace: yum
# target: centos-7
# test-docker-image: centos:7
# - 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
env:
APACHE_ARROW_REPOSITORY: ${{ github.workspace }}/apache-arrow
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- uses: actions/checkout@v4
with:
path: apache-arrow
repository: apache/arrow
- 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@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Cache ccache
uses: actions/cache@v4
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
if: |
startsWith(github.ref, 'refs/tags/')
run: |
gh release upload ${GITHUB_REF_NAME} \
${{ matrix.id }}.tar.gz
env:
GH_TOKEN: ${{ github.token }}
# Test
- name: Test
run: |
docker run \
--rm \
--volume ${PWD}:/groonga:ro \
${{ matrix.test-docker-image }} \
/groonga/packages/${{ matrix.task-namespace }}/test.sh