name: CI on: push: branches: - master tags: - 'v*.*.*' schedule: - cron: "0 6 * * *" jobs: unit_tests: name: Run unit tests runs-on: ubuntu-latest strategy: fail-fast: false matrix: koha-version: [master, 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=master" >> $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/master/docker-compose.yml mkdir -p env wget -O env/defaults.env https://gitlab.com/koha-community/koha-testing-docker/raw/master/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 libmojo-jwt-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 'prove /var/lib/koha/kohadev/plugins/t' - name: Post test cleanup run: | docker-compose down docker rm -f $(docker ps -a -f "name=koha_" -q) 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: 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/KitchenSink.pm" - name: See if kpz was created run: | echo "FILENAME: ${{ steps.kpz.outputs.filename }}" ls -alh - name: Release uses: softprops/action-gh-release@v1 if: startsWith(github.ref, 'refs/tags/') with: files: | ${{ steps.kpz.outputs.filename }} CHANGELOG.md env: GITHUB_TOKEN: ${{ secrets.GITHUB_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 kyle@bywatersolutions.com 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