forked from jflamy/owlcms4
-
Notifications
You must be signed in to change notification settings - Fork 0
135 lines (117 loc) · 4.83 KB
/
release.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
name: owlcms Release
on:
workflow_dispatch:
inputs:
revision:
description: 'Revision for the release'
required: true
default: '55.0.0-rc05'
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 Release Notes
run: mvn -B package --non-recursive -Dmaven.test.skip -Drevision=${{ env.REVISION }}
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