Skip to content

Full Release

Full Release #26

Workflow file for this run

name: Full Release
on:
milestone:
types:
- closed
env:
artifactId: gaffer2
MAVEN_OPTS: -Dmaven.wagon.http.retryHandler.count=3 -Dmaven.wagon.httpconnectionManager.ttlSeconds=25
jobs:
create-release-tag:
runs-on: ubuntu-latest
outputs:
branch_name: ${{ steps.branch.outputs.branch_name }}
steps:
- name: Setup JDK
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: '8'
- name: Checkout master
uses: actions/checkout@v4
with:
ref: master
token: ${{ secrets.ADMIN_GITHUB_TOKEN }}
fetch-depth: 0
- name: Set up Github credentials
run: |
git config user.name github-actions[bot]
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
- name: Set release version
run: echo "RELEASE_VERSION=$(echo ${{ github.event.milestone.title }} | cut -c 2-)" >> $GITHUB_ENV
- name: Set branch name
run: echo "BRANCH_NAME=$(git branch -a | grep $RELEASE_VERSION | tail -n 1 | cut -c 18-)" >> $GITHUB_ENV
- name: Output branch name
id: branch
run: echo "branch_name=$BRANCH_NAME" >> $GITHUB_OUTPUT
- name: Fail if branch output missing (no branch found)
if: ${{ !steps.branch.outputs.branch_name }}
run: exit 1
- name: Merge release into master
run: |
git checkout ${{ env.BRANCH_NAME }}
git checkout master
git merge ${{ env.BRANCH_NAME }}
- name: Push changes
run: |
git tag $artifactId-$RELEASE_VERSION
git push origin $artifactId-$RELEASE_VERSION
git push
update-develop:
runs-on: ubuntu-latest
needs:
- create-release-tag
steps:
- name: Checkout develop
uses: actions/checkout@v4
with:
ref: develop
token: ${{ secrets.ADMIN_GITHUB_TOKEN }}
fetch-depth: 0
- name: Set up Github credentials
run: |
git config user.name github-actions[bot]
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
- name: Setup JDK
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: '8'
- name: Merge release into develop
run: |
git checkout ${{ needs.create-release-tag.outputs.branch_name }}
git checkout develop
git merge ${{ needs.create-release-tag.outputs.branch_name }} --strategy-option theirs
- name: Update develop branch
run: |
git checkout develop
mvn release:update-versions -B
NEW_GAFFER_VERSION=$(mvn -q help:evaluate -DforceStdout -Dexpression=pom.version)
sed -i'' -e "s/^gaffer.version=.*/gaffer.version=$NEW_GAFFER_VERSION/" rest-api/common-rest/src/main/resources/version.properties
git commit -a -m "prepare for next development iteration"
git push
update-github-releases:
runs-on: ubuntu-latest
needs:
- create-release-tag
steps:
- name: Checkout Master
uses: actions/checkout@v4
with:
ref: master
- name: Create Release Notes
uses: docker://decathlon/release-notes-generator-action:2.1.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Set version
run: echo "RELEASE_VERSION=$(echo ${{ github.event.milestone.title }} | cut -c 2-)" >> $GITHUB_ENV
- name: Upload notes
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ env.artifactId }}-${{ env.RELEASE_VERSION }}
name: Gaffer ${{ env.RELEASE_VERSION }}
body_path: release_file.md
generate-javadoc:
runs-on: ubuntu-latest
needs:
- create-release-tag
steps:
- name: Checkout Master
uses: actions/checkout@v4
with:
ref: master
token: ${{ secrets.ADMIN_GITHUB_TOKEN }}
- name: Set up Github credentials
run: |
git config user.name github-actions[bot]
git config user.email 41898282+github-actions[bot]@users.noreply.github.com
- name: Setup JDK
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: '11'
- name: Set version
run: echo "RELEASE_VERSION=$(echo ${{ github.event.milestone.title }} | cut -c 2-)" >> $GITHUB_ENV
- name: Upload Javadoc
run: |
git remote set-branches --add origin gh-pages
git pull
mvn -q clean install -Pquick -Dskip.jar-with-dependencies=true -Dshaded.jar.phase=true
mvn -q javadoc:aggregate
git checkout gh-pages
rm -rf uk
rm -rf jquery
rm -rf resources
mv target/site/apidocs/* .
git add .
git commit -a -m "Updated javadoc - $RELEASE_VERSION"
git push
release-to-nexus:
runs-on: ubuntu-latest
needs:
- create-release-tag
steps:
- name: Setup JDK
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: '8'
- name: Checkout release
uses: actions/checkout@v4
with:
ref: ${{ needs.create-release-tag.outputs.branch_name }}
- name: Decode CodeSigning key
env:
CODE_SIGNING_KEY: ${{ secrets.CODE_SIGNING_KEY }}
CODE_SIGNING_IV: ${{ secrets.CODE_SIGNING_IV }}
run: openssl aes-256-cbc -K "$CODE_SIGNING_KEY" -iv "$CODE_SIGNING_IV" -in cd/codesigning.asc.enc -out cd/codesigning.asc -d
- name: Import CodeSigning key
run: gpg --batch --fast-import cd/codesigning.asc
- name: Release to Nexus
env:
GPG_KEY_NAME: ${{ secrets.GPG_KEY_NAME }}
GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
OSS_NEXUS_USERNAME: ${{ secrets.OSS_NEXUS_USERNAME }}
OSS_NEXUS_PASSWORD: ${{ secrets.OSS_NEXUS_PASSWORD }}
run: mvn deploy -P quick,ossrh-release --settings cd/mvnsettings.xml -B