|
name: Build JavaBot |
|
|
|
on: [push, pull_request, workflow_dispatch] |
|
|
|
jobs: |
|
build: |
|
runs-on: ubuntu-latest |
|
permissions: |
|
contents: read |
|
steps: |
|
- uses: actions/checkout@v6 |
|
- name: Set up JDK 25 |
|
uses: actions/setup-java@v5 |
|
with: |
|
java-version: '25' |
|
cache: 'maven' |
|
distribution: 'temurin' |
|
- name: Build and run tests |
|
run: mvn verify |
|
nativetest: |
|
runs-on: ubuntu-latest |
|
permissions: |
|
contents: read |
|
steps: |
|
- uses: actions/checkout@v6 |
|
- name: Set up JDK 25 |
|
uses: graalvm/setup-graalvm@v1 |
|
with: |
|
java-version: '25' |
|
distribution: 'graalvm-community' |
|
cache: 'maven' |
|
- name: Run tests with native-image |
|
run: mvn test -PnativeTest |
|
publish: |
|
runs-on: ubuntu-latest |
|
permissions: |
|
contents: read |
|
needs: |
|
- build |
|
if: ${{ (github.event_name == 'push' && github.ref == 'refs/heads/main') || github.event_name == 'workflow_dispatch' }} |
|
concurrency: |
|
group: publish |
|
cancel-in-progress: true |
|
steps: |
|
- uses: actions/checkout@v6 |
|
- name: Set up JDK 25 |
|
uses: graalvm/setup-graalvm@v1 |
|
with: |
|
java-version: '25' |
|
distribution: 'graalvm-community' |
|
cache: 'maven' |
|
- name: Build native-image |
|
run: "mvn native:compile -Pnative -Pprod '-P!dev'" |
|
- name: Build Docker image |
|
run: docker build -t javabot . |
|
- name: Tag docker image |
|
run: | |
|
docker tag javabot ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_REPONAME }}:${{ github.sha }} |
|
docker tag javabot ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_REPONAME }}:latest |
|
env: |
|
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} |
|
if: env.dockerhub_username != null |
|
- name: Login to DockerHub |
|
uses: docker/login-action@v4 |
|
with: |
|
username: ${{ secrets.DOCKERHUB_USERNAME }} |
|
password: ${{ secrets.DOCKERHUB_TOKEN }} |
|
env: |
|
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} |
|
if: env.dockerhub_username != null |
|
- name: Push to Docker Hub |
|
run: docker push --all-tags ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_REPONAME }} |
|
env: |
|
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }} |
|
if: env.dockerhub_username != null |