Linux build-test-deploy #1529
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: Linux build-test-deploy | |
on: | |
push: | |
pull_request: | |
types: [opened, synchronize, reopened] | |
workflow_dispatch: | |
inputs: | |
message: | |
description: 'Summarize the contents since the last version' | |
required: true | |
default: 'Auto-generated release' | |
permissions: write-all | |
concurrency: | |
group: deploy-${{ github.ref }}-${{ github.event_name }} | |
cancel-in-progress: true | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 | |
- name: Build | |
uses: ./.github/actions/build-action | |
- name: Upload JARs | |
uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 | |
with: | |
name: ThetaJars | |
path: subprojects/**/*-all.jar | |
- name: Positive outcome badge | |
uses: ./.github/actions/badge-creation | |
with: | |
label: "${{ runner.os }} build" | |
status: "Success" | |
color: "green" | |
path: "badges/build-${{ runner.os }}" | |
- name: Negative outcome badge | |
if: ${{ failure() }} | |
uses: ./.github/actions/badge-creation | |
with: | |
label: "${{ runner.os }} build" | |
status: "Failure" | |
color: "red" | |
path: "badges/build-${{ runner.os }}" | |
test-benchexec: | |
strategy: | |
matrix: | |
task: | |
- Arrays | |
- BitVectors | |
- ControlFlow | |
- ECA | |
- Floats | |
- Heap | |
- Loops | |
- ProductLines | |
- Recursive | |
- Sequentialized | |
- XCSP | |
- Combinations | |
- Hardware | |
- Concurrency | |
- NoDataRace | |
- ConcurrencySafety-NoOverflows | |
- ConcurrencySafety-MemSafety | |
portfolio: [CEGAR, BOUNDED, HORN] | |
runs-on: ubuntu-latest | |
needs: create-archives | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 | |
- name: Run benchexec | |
uses: ./.github/actions/benchexec-test | |
with: | |
task: ${{ matrix.task }} | |
portfolio: ${{ matrix.portfolio }} | |
test_number: 50 | |
collect-results: | |
needs: test-benchexec | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 | |
- name: Generate report | |
uses: ./.github/actions/benchexec-report | |
create-archives: | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 | |
- name: Create theta.zip | |
uses: ./.github/actions/build-archive | |
with: | |
name: "Theta" | |
inputflag: "--portfolio STABLE" | |
- name: Create emergentheta.zip | |
uses: ./.github/actions/build-archive | |
with: | |
name: "EmergenTheta" | |
inputflag: "--algorithm EMERGENT" | |
- name: Create thorn.zip | |
uses: ./.github/actions/build-archive | |
with: | |
name: "Thorn" | |
inputflag: "--algorithm HORN" | |
javadoc: | |
needs: build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 | |
- name: Deploy javadoc to github-pages | |
uses: ./.github/actions/deploy-javadoc | |
test-linux: | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, ubuntu-22.04] | |
needs: build | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 | |
- name: Install LLVM and Clang | |
uses: ./.github/actions/install-llvm | |
with: | |
version: "15" | |
- name: Run tests | |
uses: ./.github/actions/test-action | |
- name: Positive outcome badge | |
if: ${{ matrix.os == 'ubuntu-latest' }} | |
uses: ./.github/actions/badge-creation | |
with: | |
label: "${{ runner.os }} test" | |
status: "Success" | |
color: "green" | |
path: "badges/test-${{ runner.os }}" | |
- name: Negative outcome badge | |
if: ${{ failure() && matrix.os == 'ubuntu-latest' }} | |
uses: ./.github/actions/badge-creation | |
with: | |
label: "${{ runner.os }} test" | |
status: "Failure" | |
color: "red" | |
path: "badges/test-${{ runner.os }}" | |
deploy-release: | |
needs: [test-linux, create-archives] | |
if: "${{ github.event.inputs.message != '' && github.ref == 'refs/heads/master' && github.event_name != 'pull_request' }}" | |
runs-on: ubuntu-latest | |
steps: | |
- name: Set java home to java 17 | |
run: | | |
echo "JAVA_HOME=$(echo $JAVA_HOME_17_X64)" >> $GITHUB_ENV | |
- name: Checkout repository | |
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 | |
- name: Create release and deploy JARs | |
uses: ./.github/actions/create-release | |
with: | |
message: ${{ inputs.message }} | |
deploy-maven: | |
# needs: test-linux | |
if: "${{ github.event.inputs.message != '' && github.ref == 'refs/heads/master' && github.event_name != 'pull_request' }}" | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 | |
- name: Create and publish maven release | |
uses: ./.github/actions/deploy-maven | |
with: | |
OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }} | |
OSSRH_USERNAME: ${{ secrets.OSSRH_USERNAME }} | |
PGP_KEY: ${{ secrets.PGP_KEY }} | |
PGP_KEY_ID: ${{ secrets.PGP_KEY_ID }} | |
PGP_PWD: ${{ secrets.PGP_PWD }} | |
test-docker: | |
strategy: | |
matrix: | |
dockerprojects: ["theta-cfa-cli", "theta-sts-cli", "theta-xsts-cli", "theta-xta-cli", "theta-xcfa-cli"] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Set java home to java 17 | |
run: | | |
echo "JAVA_HOME=$(echo $JAVA_HOME_17_X64)" >> $GITHUB_ENV | |
- name: Checkout repository | |
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 | |
- name: Version | |
id: version | |
run: | | |
echo version=$(./gradlew properties --no-daemon --console=plain -q | grep "^version:" | awk '{printf $2}') >> $GITHUB_OUTPUT | |
- name: docker-login | |
uses: ./.github/actions/docker-login | |
with: | |
username: ${{secrets.DOCKER_USERNAME}} | |
token: ${{secrets.DOCKER_TOKEN}} | |
- name: docker-login-ghcr | |
uses: ./.github/actions/docker-login | |
with: | |
registry: ghcr.io | |
username: ${{github.repository_owner}} | |
token: ${{secrets.GITHUB_TOKEN}} | |
- name: Build and publish docker file | |
uses: ./.github/actions/docker-deploy | |
with: | |
project: ${{ matrix.dockerprojects }} | |
version: ${{ steps.version.outputs.version }} | |
user-dockerhub: ftsrg | |
user-ghcr: ftsrg | |
push: false | |
deploy-docker: | |
needs: [test-linux, test-docker] | |
if: "${{ github.event.inputs.message != '' && github.ref == 'refs/heads/master' && github.event_name != 'pull_request' }}" | |
strategy: | |
matrix: | |
dockerprojects: ["theta-cfa-cli", "theta-sts-cli", "theta-xsts-cli", "theta-xta-cli", "theta-xcfa-cli"] | |
runs-on: ubuntu-latest | |
steps: | |
- name: Set java home to java 17 | |
run: | | |
echo "JAVA_HOME=$(echo $JAVA_HOME_17_X64)" >> $GITHUB_ENV | |
- name: Checkout repository | |
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 | |
- name: Version | |
id: version | |
run: | | |
echo version=$(./gradlew properties --no-daemon --console=plain -q | grep "^version:" | awk '{printf $2}') >> $GITHUB_OUTPUT | |
- name: docker-login | |
uses: ./.github/actions/docker-login | |
with: | |
username: ${{secrets.DOCKER_USERNAME}} | |
token: ${{secrets.DOCKER_TOKEN}} | |
- name: docker-login-ghcr | |
uses: ./.github/actions/docker-login | |
with: | |
registry: ghcr.io | |
username: ${{github.repository_owner}} | |
token: ${{secrets.GITHUB_TOKEN}} | |
- name: Build and publish docker file | |
uses: ./.github/actions/docker-deploy | |
with: | |
project: ${{ matrix.dockerprojects }} | |
version: ${{ steps.version.outputs.version }} | |
user-dockerhub: ftsrg | |
user-ghcr: ftsrg | |
push: true | |
- name: Docker Hub Description update | |
uses: peter-evans/dockerhub-description@dc67fad7001ef9e8e3c124cb7a64e16d0a63d864 | |
with: | |
username: ${{ secrets.DOCKER_USERNAME }} | |
password: ${{ secrets.DOCKER_TOKEN }} | |
repository: ftsrg/${{ matrix.dockerprojects }} | |
deploy-docs: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 | |
- name: Deploy docs | |
uses: ./.github/actions/deploy-docs |