Merge pull request #785 from FgForrest/master-hotfix #230
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
# Main build pipeline, operates on `master` branch which is our integration branch and creates release | |
name: CI Master branch | |
on: | |
push: | |
branches: | |
- "master" # trap each push to master branch | |
- "release_*" # trap each push to branches starting with release_ | |
paths: # but react only to changes in code or pipeline definition | |
- evita*/**/*.java | |
- evita*/**/pom.xml | |
- jacoco/**/pom.xml | |
- evita*/**/dist/**.* | |
- docker/** | |
- .github/** | |
concurrency: | |
group: ${{ github.ref_name }} # for the same branch | |
cancel-in-progress: true # run only one workflow at a time (cancel the previous) | |
jobs: | |
build: | |
permissions: | |
# write permission is required to create a github release | |
contents: write | |
# write permission is required for autolabeler | |
# otherwise, read permission is required at least | |
pull-requests: write | |
outputs: | |
release_id: ${{ steps.create_release.outputs.id }} | |
released_version: ${{ steps.release_version.outputs.version }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 # checkout sources | |
with: | |
ref: ${{ github.head_ref }} | |
fetch-depth: 0 | |
- name: Resolve new release version | |
id: release_version | |
uses: lukashornych/[email protected] | |
with: | |
prefix: 'v' | |
year_switch_mode: 'OnMinor' | |
minor-identifier: '/feat(?:\\([^)]+\\))?:/' | |
- name: Setup Java JDK | |
uses: actions/setup-java@v3 # setup JDK 17 for building | |
with: | |
distribution: 'temurin' | |
java-version: '17' | |
cache: 'maven' | |
server-id: ossrh | |
server-username: MAVEN_USERNAME | |
server-password: MAVEN_CENTRAL_TOKEN | |
gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} | |
gpg-passphrase: MAVEN_GPG_PASSPHRASE | |
- name: Build with Maven # run Maven without tests (tests must pass in dev branch) | |
run: | | |
export CURRENT_VERSION="${{ steps.release_version.outputs.version }}" | |
export NEW_VERSION="$( echo ${CURRENT_VERSION} | sed 's/^v//; s/-.*//')" | |
echo $NEW_VERSION > version.txt | |
echo "Version: $(cat version.txt)" | |
mvn versions:set -DnewVersion=$NEW_VERSION | |
mvn -T 1C -B -P release-sign-artifacts -Dmaven.test.skip=true deploy --file pom.xml | |
env: | |
EVITA_BUILD_VERSION: ${{ steps.release_version.outputs.version }} | |
MAVEN_USERNAME: ${{ secrets.MAVEN_USERNAME }} | |
MAVEN_CENTRAL_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} | |
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} | |
- name: Create distribution directory | |
run: | | |
mkdir -p ./dist | |
cp LICENSE ./dist | |
cp 'evita_server/target/evita-server.jar' ./dist | |
cp 'evita_server/dist/run.sh' './dist' | |
cp 'evita_server/dist/logback.xml' './dist' | |
- name: Create .zip of dist | |
uses: thedoctor0/[email protected] | |
with: | |
type: 'zip' | |
filename: 'dist.zip' | |
path: './dist' | |
- name: Create .tar.gz of dist | |
uses: thedoctor0/[email protected] | |
with: | |
type: 'tar' | |
filename: 'dist.tar.gz' | |
path: './dist' | |
- name: Create release | |
id: create_release | |
uses: release-drafter/release-drafter@v5 | |
with: | |
version: ${{ steps.release_version.outputs.version }} | |
publish: true | |
- name: Upload dist.zip to release | |
uses: actions/upload-release-asset@v1 | |
if: success() | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./dist.zip | |
asset_name: Dist (zip) | |
asset_content_type: application/zip | |
- name: Upload dist.tar.gz to release | |
uses: actions/upload-release-asset@v1 | |
if: success() | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./dist.tar.gz | |
asset_name: Dist (tar.gz) | |
asset_content_type: application/gzip | |
- name: Upload evitaDB server artifact # upload `evita-server.jar` for `docker-latest.yml` to deploy to DockerHub | |
uses: actions/upload-artifact@v4 | |
if: success() | |
with: | |
name: evita-server.jar | |
path: 'evita_server/target/evita-server.jar' | |
- name: Upload evitaDB version.txt # upload `version.txt` for `docker-latest.yml` to deploy to DockerHub | |
uses: actions/upload-artifact@v4 | |
if: success() | |
with: | |
name: version.txt | |
path: 'version.txt' |