Skip to content

build(deps): bump actions/upload-artifact from 3 to 4 #6294

build(deps): bump actions/upload-artifact from 3 to 4

build(deps): bump actions/upload-artifact from 3 to 4 #6294

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/**/*.rb'
- '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@v4
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(/ {.+?}/, ""). \
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
runs-on: ubuntu-latest
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" \
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@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@v4
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