Skip to content

Updated configuration for new versions of Tebako and dwarfs #395

Updated configuration for new versions of Tebako and dwarfs

Updated configuration for new versions of Tebako and dwarfs #395

Workflow file for this run

name: alpine
on:
schedule:
- cron: "0 2 * * 2"
push:
branches: [ main ]
tags: [ v* ]
paths-ignore:
- .github/workflows/ubuntu.yml
- .github/workflows/macos.yml
- .github/workflows/windows.yml
- .github/workflows/release_tag.yml
- .cirrus.*
- Makefile.win
pull_request:
paths-ignore:
- .github/workflows/ubuntu.yml
- .github/workflows/macos.yml
- .github/workflows/windows.yml
- .github/workflows/release_tag.yml
- .cirrus.*
- Makefile.win
workflow_dispatch:
concurrency:
group: '${{ github.workflow }}-${{ github.job }}-${{ github.head_ref || github.ref_name }}'
cancel-in-progress: true
jobs:
# https://wildwolf.name/github-actions-how-to-avoid-running-the-same-workflow-multiple-times/
prepare:
runs-on: ubuntu-latest
outputs:
head_tag: ${{ steps.check.outputs.head_tag }}
foreign_pr: ${{ steps.check.outputs.foreign_pr }}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Retrieve tags
run: git fetch --depth=1 origin +refs/tags/*:refs/tags/* || true
- name: Set output variables
id: check
run: |
fpr="no"
tag=""
if [[ "${{ github.ref }}" == refs/heads/* ]]; then
tag="$(git tag --points-at HEAD)"
elif [[ "${{ github.ref }}" == refs/pull/* ]] && [ "${{ github.event.pull_request.head.repo.full_name }}" != "${{ github.event.pull_request.base.repo.full_name }}" ]; then
fpr="yes"
fi
echo "foreign_pr=${fpr}" >> $GITHUB_OUTPUT
echo "head_tag=${tag}" >> $GITHUB_OUTPUT
build:
runs-on: ubuntu-latest
needs: prepare
container:
image: alpine:3.17
steps:
- name: Install packages
run: |
apk --no-cache --upgrade add build-base cmake git bash \
autoconf boost-static boost-dev flex-dev bison make \
binutils-dev libevent-dev acl-dev sed python3 pkgconfig \
lz4-dev openssl-dev zlib-dev xz ninja zip unzip curl \
libunwind-dev libdwarf-dev gflags-dev elfutils-dev \
libevent-static openssl-libs-static lz4-static xz-dev \
zlib-static libunwind-static acl-static tar libffi-dev \
gdbm-dev yaml-dev yaml-static ncurses-dev ncurses-static \
readline-dev readline-static p7zip ruby-dev gcompat \
gettext-dev gperf brotli-dev brotli-static jemalloc-dev \
fmt-dev xz-static clang
- name: Checkout
uses: actions/checkout@v3
- name: Setup environment
run: cat common.env alpine.env >> $GITHUB_ENV
- name: Install bundler
run: gem install bundler -v ${{ env.BUNDLER_VER }}
- name: Tebako setup cache
uses: actions/cache@v3
with:
path: ${{ env.TEBAKO_DIR }}/${{ env.DEPS }}
key: ${{ env.OS_VER }}-${{ env.CC }}-${{ hashFiles('**/common.env') }}-${{ hashFiles('**/alpine.env') }}-v${{ env.CACHE_VER }}
- name: Install tebako
run: gem install tebako
- name: package metanorma
run: make build/bin/metanorma-linux-musl-x86_64
- uses: actions/upload-artifact@v3
with:
name: metanorma-linux-musl-x86_64
path: build/bin/metanorma-linux-musl-x86_64
- name: Verify packaging
run: |
build/bin/metanorma-linux-musl-x86_64 --tebako-extract extracted_source_filesystem
diff -r extracted_source_filesystem .archive/tebako/output/source_filesystem
- name: smoke test
run: build/bin/metanorma-linux-musl-x86_64 help
build-matrix:
uses: metanorma/ci/.github/workflows/build-sample-matrix.yml@main
with:
smoke: false
flavors-only: true
public-only: true
test:
needs: [build, build-matrix]
runs-on: ubuntu-latest
env:
SSL_CERT_DIR: /etc/ssl/certs
container:
image: alpine:latest
continue-on-error: ${{ matrix.flavor.experimental }}
strategy:
max-parallel: 5
fail-fast: false
matrix: ${{ fromJson(needs.build-matrix.outputs.samples-matrix) }}
steps:
- name: Install packages
run: |
apk --no-cache --upgrade add git libstdc++ xz libarchive \
openjdk10-jre-headless openssl fontconfig ttf-dejavu tar
- uses: actions/checkout@v3
- run: rm Gemfile
- uses: actions/download-artifact@v3
with:
name: metanorma-linux-musl-x86_64
path: build/bin
- uses: actions/cache@v3
with:
path: ~/.relaton
key: relaton-linux-${{ matrix.flavor.id }}
restore-keys: relaton-linux-${{ matrix.flavor.id }}
- run: chmod +x build/bin/metanorma-linux-musl-x86_64
- name: Fetch samples (${{ matrix.flavor.id }})
uses: actions/checkout@v3
with:
submodules: recursive
repository: metanorma/mn-samples-${{ matrix.flavor.id }}
token: ${{ secrets.METANORMA_CI_PAT_TOKEN }}
path: ${{ github.workspace }}/samples
fetch-depth: 1
- name: Test (${{ matrix.flavor.id }})
timeout-minutes: 45
run: |
build/bin/metanorma-linux-musl-x86_64 \
site generate samples \
-c samples/metanorma.yml \
--agree-to-terms
- uses: actions/upload-artifact@v3
with:
name: site-${{ matrix.flavor.id }}
path: _site
release:
if: startsWith(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
needs: test
steps:
- uses: actions/download-artifact@v3
with:
name: metanorma-linux-musl-x86_64
path: build/bin
- name: Package binary into archive
run: |
chmod +x build/bin/metanorma-linux-musl-x86_64
mv build/bin/metanorma-linux-musl-x86_64 metanorma-linux-musl-x86_64
tar -czvf metanorma-linux-musl-x86_64.tgz metanorma-linux-musl-x86_64
- name: Calculate SHA256 hash
run: |
sha256sum metanorma-linux-musl-x86_64.tgz | cut -d ' ' -f1 > metanorma-linux-musl-x86_64.tgz.sha256.txt
- uses: softprops/action-gh-release@v1
with:
files: |
metanorma-linux-musl-x86_64.tgz
metanorma-linux-musl-x86_64.tgz.sha256.txt