Skip to content

owlcms

owlcms #104

Workflow file for this run

name: owlcms
on:
workflow_dispatch:
inputs:
revision:
description: 'semver number for the release'
required: true
default: '56.0.0-rc04'
env:
REPO_OWNER: owlcms
MAVEN_OPTS: '-Xmx2048m'
jobs:
build:
runs-on: ubuntu-latest
env:
REVISION: ${{ github.event.inputs.revision }}
RELEASE_SUFFIX: ${{ contains(github.event.inputs.revision, '-') && '-prerelease' || '' }}
DOCKER_TAG: ${{ contains(github.event.inputs.revision, '-') && 'prerelease' || 'stable' }}
steps:
- name: Checkout Dev Repository
uses: actions/checkout@v4
with:
ref: ${{ github.event.inputs.branch }}
fetch-depth: 1
persist-credentials: false # Disable credential persistence
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
cache: 'maven'
- name: Cache Maven dependencies
id: cache-maven
uses: actions/cache@v3
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('pom.xml', 'shared/pom.xml', 'owlcms/pom.xml', 'publicresults/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-${{ hashFiles('pom.xml', 'shared/pom.xml', 'owlcms/pom.xml', 'publicresults/pom.xml') }}
${{ runner.os }}-maven-
- name: Build and Install owlcms
run: mvn -B clean install -Pproduction -am -pl owlcms -Drevision=${{ env.REVISION }} -Dmaven.test.skip
- name: Build and Install publicresults
run: mvn -B clean install -Pproduction -am -pl publicresults -Drevision=${{ env.REVISION }} -Dmaven.test.skip
- name: Build and Push Docker Images
run: mvn -B deploy -f owlcms-docker/pom.xml -Ddockerfile.skip=false -Drevision=${{ env.REVISION }}
env:
DOCKER_REG: ${{ secrets.DOCKER_REG }}
DOCKER_USER: ${{ secrets.DOCKER_USER }}
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }}
DOCKER_TAG: ${{ env.DOCKER_TAG }}
- name: Pre-process Documentation and Release Notes
env:
REPO_OWNER: owlcms
O_REPO_NAME: owlcms4${{ env.RELEASE_SUFFIX }}
run: |
mvn -B package --non-recursive -Dmaven.test.skip -Drevision=${{ env.REVISION }}
if [[ "${{ env.REVISION }}" == *"-alpha"* ]]; then
cat src/main/markdown/alpha.md ReleaseNotes.md > temp.md && mv temp.md ReleaseNotes.md
elif [[ "${{ env.REVISION }}" == *"-beta"* ]]; then
cat src/main/markdown/beta.md ReleaseNotes.md > temp.md && mv temp.md ReleaseNotes.md
elif [[ "${{ env.REVISION }}" == *"-rc"* ]]; then
cat src/main/markdown/rc.md ReleaseNotes.md > temp.md && mv temp.md ReleaseNotes.md
else
cat src/main/markdown/release.md ReleaseNotes.md > temp.md && mv temp.md ReleaseNotes.md
fi
- name: Install GitHub CLI
run: sudo apt-get install gh -y
- name: Authenticate GitHub CLI for Target Repo
env:
GH_TOKEN: ${{ secrets.OWLCMS_ORG_TOKEN }}
run: gh auth setup-git
- name: Check Authentication Status
env:
GH_TOKEN: ${{ secrets.OWLCMS_ORG_TOKEN }}
run: gh auth status
- name: Clone Target Repository
run: |
set -x
mkdir ../new-repo
git clone https://github.com/owlcms/owlcms4${{ env.RELEASE_SUFFIX }}.git ../new-repo
cd ../new-repo
git checkout master # Explicitly check out master
git config --local credential.helper ""
cd -
set +x
- name: Force-copy the new documentation
run: |
rm -rf ../new-repo/* # we only want the docs directory
cp -a docs ../new-repo/docs
echo ${{ env.REVISION }} > ../new-repo/version.txt
- name: Push Updated Documentation to Target Repository
env:
GH_TOKEN: ${{ secrets.OWLCMS_ORG_TOKEN }}
run: |
set -x
cd ../new-repo
git remote set-url origin https://x-access-token:${{ secrets.OWLCMS_ORG_TOKEN }}@github.com/owlcms/owlcms4${{ env.RELEASE_SUFFIX }}.git
git config user.email "${{ github.actor }}@users.noreply.github.com"
git config user.name "${{ github.actor }}"
git add -A
git commit -m "Update documentation" --allow-empty
git tag ${{ env.REVISION }}
git push origin master --force
git push origin ${{ env.REVISION }}
cd -
set +x
- name: Create GitHub Release
env:
GH_TOKEN: ${{ secrets.OWLCMS_ORG_TOKEN }}
run: |
set -x
pwd
ls -l owlcms/target publicresults/target || true
mv owlcms/target/owlcms*.zip owlcms/target/owlcms_${{ env.REVISION }}.zip
mv publicresults/target/publicresults*.zip publicresults/target/publicresults_${{ env.REVISION }}.zip
ls -l owlcms/target publicresults/target || true
gh release create ${{ env.REVISION }} \
--repo owlcms/owlcms4${{ env.RELEASE_SUFFIX }} \
--title "${{ env.REVISION }}" \
--notes-file ReleaseNotes.md \
owlcms/target/owlcms_${{ env.REVISION }}.zip \
publicresults/target/publicresults_${{ env.REVISION }}.zip
set +x
- name: Update Source Repository
env:
GH_TOKEN: ${{ secrets.OWLCMS_ORG_TOKEN }}
run: |
set -x
git config user.email "${{ github.actor }}@users.noreply.github.com"
git config user.name "${{ github.actor }}"
# add the release notes
# git add ReleaseNotes.md
# git commit -m "Update Release Notes for ${{ env.REVISION }}" --allow-empty
# git push origin
# tag
git tag ${{ env.REVISION }}
git push origin ${{ env.REVISION }}
set +x