Skip to content

Commit

Permalink
Merge pull request #823 from EMResearch/release-automation
Browse files Browse the repository at this point in the history
trying to improve automation of release
  • Loading branch information
arcuri82 committed Oct 11, 2023
2 parents aacc1b1 + 51354c0 commit 61743b4
Show file tree
Hide file tree
Showing 4 changed files with 237 additions and 50 deletions.
47 changes: 26 additions & 21 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
name: CI

on: [push]
on:
push:
branches:
- "**"
tags-ignore:
- '**'

env:
evomaster-version: 1.6.2
Expand All @@ -27,14 +32,14 @@ jobs:
runs-on: ubuntu-latest
steps:
# Checkout code
- uses: actions/checkout@v2
- uses: actions/checkout@v4
# Build/test for JDK
- name: Setup JDK ${{env.build-jdk}}
uses: actions/setup-java@v1
with:
java-version: ${{env.build-jdk}}
- name: Cache Maven packages
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
Expand All @@ -44,7 +49,7 @@ jobs:
env:
CI_env: GithubAction
- name: Upload evomaster.jar
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
with:
name: evomaster.jar
path: core/target/evomaster.jar
Expand Down Expand Up @@ -79,13 +84,13 @@ jobs:
base-build-mac:
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Setup JDK ${{env.latest-jdk}}
uses: actions/setup-java@v1
with:
java-version: ${{env.latest-jdk}}
- name: Cache Maven packages
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
Expand All @@ -98,13 +103,13 @@ jobs:
base-build-windows:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Setup JDK ${{env.latest-jdk}}
uses: actions/setup-java@v1
with:
java-version: ${{env.latest-jdk}}
- name: Cache Maven packages
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
Expand All @@ -123,13 +128,13 @@ jobs:
# runs-on: windows-latest
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Setup JDK ${{env.latest-jdk}}
uses: actions/setup-java@v1
with:
java-version: ${{env.latest-jdk}}
- name: Cache Maven packages
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
Expand All @@ -145,7 +150,7 @@ jobs:
needs: full-build-base
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
# Build/test for JavaScript
- name: Use Node.js
uses: actions/setup-node@v1
Expand All @@ -168,7 +173,7 @@ jobs:
with:
java-version: ${{env.build-jdk}}
- name: Download fat jar
uses: actions/download-artifact@v2
uses: actions/download-artifact@v3
with:
name: evomaster.jar
path: core/target
Expand Down Expand Up @@ -216,21 +221,21 @@ jobs:
needs: full-build-base
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@4
- name: Setup JDK ${{env.release-jdk}}
uses: actions/setup-java@v1
with:
java-version: ${{env.release-jdk}}
- name: Download fat jar
uses: actions/download-artifact@v2
uses: actions/download-artifact@v3
with:
name: evomaster.jar
path: core/target
- name: Build installation file
shell: bash
run: bash makeExecutable.sh WINDOWS
- name: Upload installation file
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
with:
name: evomaster.msi
path: release/evomaster-${{env.evomaster-version}}.msi
Expand All @@ -241,21 +246,21 @@ jobs:
needs: full-build-base
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- name: Setup JDK ${{env.release-jdk}}
uses: actions/setup-java@v1
with:
java-version: ${{env.release-jdk}}
- name: Download fat jar
uses: actions/download-artifact@v2
uses: actions/download-artifact@v3
with:
name: evomaster.jar
path: core/target
- name: Build installation file
shell: bash
run: bash makeExecutable.sh OSX
- name: Upload installation file
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
with:
name: evomaster.dmg
path: release/evomaster-${{env.evomaster-version}}.dmg
Expand All @@ -266,21 +271,21 @@ jobs:
needs: full-build-base
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Setup JDK ${{env.release-jdk}}
uses: actions/setup-java@v1
with:
java-version: ${{env.release-jdk}}
- name: Download fat jar
uses: actions/download-artifact@v2
uses: actions/download-artifact@v3
with:
name: evomaster.jar
path: core/target
- name: Build installation file
shell: bash
run: bash makeExecutable.sh DEBIAN
- name: Upload installation file
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
with:
name: evomaster.deb
path: release/evomaster_${{env.evomaster-version}}-1_amd64.deb
Expand Down
170 changes: 170 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
name: Release on GitHub


## Run only when we push a tag. See "docs/release.md" instructions
on:
push:
tags:
- "v*"

env:
evomaster-version: 1.6.2
jdk: 17
retention-days: 1
## Doesn't work, ie, use env in env
# installer-windows: evomaster-${evomaster-version}.msi
# installer-osx: evomaster-${evomaster-version}.dmg
# installer-debian: evomaster_${evomaster-version}-1_amd64.deb

jobs:

build-base:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup JDK ${{env.jdk}}
uses: actions/setup-java@v1
with:
java-version: ${{env.jdk}}
- name: Cache Maven packages
uses: actions/cache@v3
with:
path: ~/.m2
key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
restore-keys: ${{ runner.os }}-m2
- name: Build with Maven
# Don't run any test, as build should had already been verified (and it takes hours...)
run: mvn clean verify -DskipTests
env:
CI_env: GithubAction
- name: Upload evomaster.jar
uses: actions/upload-artifact@v3
with:
name: evomaster.jar
path: core/target/evomaster.jar
retention-days: ${{env.retention-days}}
if-no-files-found: error

installer-for-windows:
needs: build-base
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Setup JDK ${{env.jdk}}
uses: actions/setup-java@v1
with:
java-version: ${{env.jdk}}
- name: Download fat jar
uses: actions/download-artifact@v3
with:
name: evomaster.jar
path: core/target
- name: Build installation file
shell: bash
run: bash makeExecutable.sh WINDOWS
- name: Upload installation file
uses: actions/upload-artifact@v3
with:
name: evomaster.msi
path: release/evomaster-${{env.evomaster-version}}.msi
retention-days: ${{env.retention-days}}
if-no-files-found: error

installer-for-osx:
needs: build-base
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Setup JDK ${{env.jdk}}
uses: actions/setup-java@v1
with:
java-version: ${{env.jdk}}
- name: Download fat jar
uses: actions/download-artifact@v3
with:
name: evomaster.jar
path: core/target
- name: Build installation file
shell: bash
run: bash makeExecutable.sh OSX
- name: Upload installation file
uses: actions/upload-artifact@v3
with:
name: evomaster.dmg
path: release/evomaster-${{env.evomaster-version}}.dmg
retention-days: ${{env.retention-days}}
if-no-files-found: error

installer-for-debian:
needs: build-base
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup JDK ${{env.jdk}}
uses: actions/setup-java@v1
with:
java-version: ${{env.jdk}}
- name: Download fat jar
uses: actions/download-artifact@v3
with:
name: evomaster.jar
path: core/target
- name: Build installation file
shell: bash
run: bash makeExecutable.sh DEBIAN
- name: Upload installation file
uses: actions/upload-artifact@v3
with:
name: evomaster.deb
path: release/evomaster_${{env.evomaster-version}}-1_amd64.deb
retention-days: ${{env.retention-days}}
if-no-files-found: error

tagged-release:
needs: [installer-for-debian,installer-for-windows,installer-for-osx]
name: "Tagged Release"
runs-on: "ubuntu-latest"

steps:

- name: Download fat jar
uses: actions/download-artifact@v3
with:
name: evomaster.jar
- name: Download
uses: actions/download-artifact@v3
with:
name: evomaster.deb
- name: Download
uses: actions/download-artifact@v3
with:
name: evomaster.dmg
- name: Download
uses: actions/download-artifact@v3
with:
name: evomaster.msi


## Doesn't seem any longer mantained... plus usability issues
# - uses: "marvinpinto/action-automatic-releases@latest"
# with:
# repo_token: "${{ secrets.GITHUB_TOKEN }}"
# prerelease: false
# files: |
# evomaster.jar
# ${{env.installer-windows}}
# ${{env.installer-osx}}
# ${{env.installer-debian}}

- name: Release
uses: softprops/action-gh-release@v1
with:
prerelease: false
draft: false
fail_on_unmatched_files: true
files: |
evomaster.jar
evomaster-${{env.evomaster-version}}.msi
evomaster-${{env.evomaster-version}}.dmg
evomaster_${{env.evomaster-version}}-1_amd64.deb
Loading

0 comments on commit 61743b4

Please sign in to comment.