owlcms #80
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: owlcms Release | |
on: | |
workflow_dispatch: | |
inputs: | |
revision: | |
description: 'Revision for the release' | |
required: true | |
default: '55.2.0' | |
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: Set up job name | |
id: set-job-name | |
run: echo "::set-output name=jobname::Release ${{ github.event.inputs.revision }}" | |
- 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 | |
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 | |
env: | |
REPO_OWNER: owlcms | |
O_REPO_NAME: owlcms4${{ env.RELEASE_SUFFIX }} | |
- 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: Clean Target Directory | |
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 Docs 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 docs to match dev repo" --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: Tag Source Repository | |
env: | |
GH_TOKEN: ${{ secrets.OWLCMS_ORG_TOKEN }} | |
run: | | |
set -x | |
git add ReleaseNotes.md | |
git config user.email "${{ github.actor }}@users.noreply.github.com" | |
git config user.name "${{ github.actor }}" | |
git commit -m "Update Release Notes for ${{ env.REVISION }}" --allow-empty | |
git push origin | |
git tag ${{ env.REVISION }} | |
git push origin ${{ env.REVISION }} | |
set +x | |