Skip to content

CI

CI #4042

Workflow file for this run

name: CI
on:
push:
branches:
- "**"
tags:
- 'v*'
schedule:
- cron: "0 6 * * *"
jobs:
unit_tests:
name: Run unit tests
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
koha-version: [main, stable, oldstable]
steps:
- name: Is a tag?
run: |
echo "${{ startsWith(github.ref, 'refs/tags/v') }}"
- name: GitHub Ref 1
run: |
echo "${GITHUB_REF##*/}"
- name: GitHub Ref 2
run: |
echo "${{ github.event.ref }}"
- name: GitHub Ref 3
run: |
echo "${{ github.ref }}"
- name: Dump env
run: env | sort
- name: Dump GitHub context
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
run: echo "$GITHUB_CONTEXT"
- uses: actions/checkout@v1
- name: Get Koha Version Branch Name
id: koha-version
uses: "bywatersolutions/github-action-koha-get-version-by-label@master"
with:
version-label: "${{ matrix.koha-version }}"
- name: Check out Koha
run: |
cd ..
git clone --branch ${{ steps.koha-version.outputs.current-branch-name }} --single-branch --depth 1 https://github.com/Koha-Community/Koha.git kohaclone
- name: Export additional variables needed by koha-testing-docker
run: |
cd ..
pwd
ls -alh
IFS='/' read -r -a parts <<< "$GITHUB_REPOSITORY"
export GITHUB_REPO="${parts[1]}"
export ROOT_DIR="$(pwd)"
export LOCAL_USER_ID="$(id -u)" # Needed for koha-testing-docker
export SYNC_REPO="$ROOT_DIR/kohaclone"
export KOHA_INTRANET_URL="http://127.0.0.1:8081"
export KOHA_MARC_FLAVOUR="marc21"
echo "GITHUB_REPO=$GITHUB_REPO" >> $GITHUB_ENV
echo "ROOT_DIR=$ROOT_DIR" >> $GITHUB_ENV
echo "LOCAL_USER_ID=$LOCAL_USER_ID" >> $GITHUB_ENV
echo "SYNC_REPO=$SYNC_REPO" >> $GITHUB_ENV
echo "KOHA_INTRANET_URL=$KOHA_INTRANET_URL" >> $GITHUB_ENV
echo "KOHA_MARC_FLAVOUR=$KOHA_MARC_FLAVOUR" >> $GITHUB_ENV
echo "RUN_TESTS_AND_EXIT=no" >> $GITHUB_ENV
echo "KOHA_IMAGE=main" >> $GITHUB_ENV
echo "GITHUB REPO: $GITHUB_REPO"
echo "ROOT DIR: $ROOT_DIR"
echo "SYNC_REPO: $SYNC_REPO"
ls -alh $SYNC_REPO
- name: Set up koha-testing-docker
run: |
sudo sysctl -w vm.max_map_count=262144
wget -O docker-compose.yml https://gitlab.com/koha-community/koha-testing-docker/raw/main/docker-compose.yml
mkdir -p env
wget -O env/defaults.env https://gitlab.com/koha-community/koha-testing-docker/raw/main/env/defaults.env
cp env/defaults.env .env
docker compose pull
# - name: Setup Debug Session
# uses: csexton/debugger-action@master
- name: Run tests
run: |
pwd
ls -alh
docker compose -f docker-compose.yml -p koha up --detach
cd ..
pwd
ls -alh
echo "`date`: Installing YAML::Syck, needed for Koha 20.11 and earlier"
docker exec koha-koha-1 apt-get install -y libyaml-syck-perl libemail-valid-perl
while [ $? -ne 0 ]; do echo "INSTALL YAML::Syck" && docker exec koha-koha-1 apt-get install -y libyaml-syck-perl libemail-valid-perl; done
echo "SLEEPING 3 MINUTES"
sleep 60
echo "1 MINUTE DONE"
sleep 60
echo "2 MINUTES DONE"
sleep 60
echo "3 MINUTES DONE"
echo "WAKING UP"
echo "DOCKER LOGS"
docker logs koha-koha-1 2>&1
echo "/DOCKER LOGS"
docker cp $GITHUB_REPO/. koha-koha-1:/var/lib/koha/kohadev/plugins
docker exec koha-koha-1 bash -c 'cpanm Business::Barcode::EAN13'
docker exec koha-koha-1 bash -c 'prove /var/lib/koha/kohadev/plugins/t'
- name: Post test cleanup
run: |
docker compose down
docker volume prune -f
docker image prune -f
rm docker-compose.yml
rm -rf env .env
release:
name: Build & Release
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/v')
needs: unit_tests
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v1
- name: Parse out and store the GitHub repository name
id: myvars
run: |
IFS='/' read -r -a parts <<< "$GITHUB_REPOSITORY"
GITHUB_REPO="${parts[1]}"
echo ::set-output name=github_repo::$GITHUB_REPO
echo "GITHUB REPO: $GITHUB_REPO"
TAG_VERSION="${GITHUB_REF##*/}"
echo "TAG VERSION: $TAG_VERSION"
TAG_VERSION="${TAG_VERSION:1}"
echo "TAG VERSION 2: $TAG_VERSION"
echo ::set-output name=tag_version::$TAG_VERSION
- name: Get Koha Version Branch Name
id: koha-version-oldstable
uses: "bywatersolutions/github-action-koha-get-version-by-label@master"
with:
version-label: "oldstable"
- name: Print minimum version
run: |
echo "Current oldstable version: ${{ steps.koha-version-oldstable.outputs.version-major-minor }}"
- name: Dump myvars outputs
env:
GITHUB_CONTEXT: ${{ toJson(steps.myvars.outputs) }}
run: echo "$GITHUB_CONTEXT"
- name: Print tag version and github repo
run: |
echo "tag_version: ${{ steps.myvars.outputs.tag_version }}"
echo "github_repo: ${{ steps.myvars.outputs.github_repo }}"
- name: Build Koha Plugin kpz artifact
id: kpz
uses: "bywatersolutions/github-action-koha-plugin-create-kpz@master"
with:
release-version: ${{ steps.myvars.outputs.tag_version }}
release-name: ${{ steps.myvars.outputs.github_repo }}
minimum-version: ${{ steps.koha-version-oldstable.outputs.version-major-minor }}
plugin-module: "Koha/Plugin/Com/ByWaterSolutions/EdifactEnhanced.pm"
- name: See if kpz was created
run: |
echo "FILENAME: ${{ steps.kpz.outputs.filename }}"
ls -alh
- name: Release
uses: softprops/action-gh-release@v1
with:
files: |
${{ steps.kpz.outputs.filename }}
CHANGELOG.md
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
rebase:
name: Rebase other branches
if: ${{ startsWith(github.ref, 'refs/tags/v') && !contains(github.ref, '-') }}
runs-on: ubuntu-latest
needs: unit_tests
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v1
- name: Run rebase_branches.sh
run: TAG=${GITHUB_REF##*/} ./rebase_branches.sh
env:
GH_TOKEN: ${{ secrets.GH_TOKEN }}
keepalive:
name: Keep Alive
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Check age and push commit if needed
run: |
LAST_COMMIT=$( git --no-pager log -1 --format=%ct )
NOW=$(date +%s)
DIFF=$(($NOW-$LAST_COMMIT))
DAYS=$(($DIFF/86400))
git config --global user.email [email protected]
git config --global user.name "Kyle M Hall"
git commit --allow-empty -m "Automated commit from keep alive workflow"
if [ "$DAYS" -gt "50" ]; then git push; fi