Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve workflow #10

Closed
wants to merge 2 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
168 changes: 155 additions & 13 deletions .github/workflows/ant.yml
Original file line number Diff line number Diff line change
@@ -1,43 +1,104 @@
name: Java CI
env:
junit_platform_version: '1.8.2'
# ANT_HOME is also our ant version
ANT_HOME: 'apache-ant-1.10.12'

on:
push:
branches: [ main, fixup-tests ]
branches: [ main ]
pull_request:
branches: [ main ]
release:
types: [created]

jobs:
build:
build-josm:
runs-on: ubuntu-latest
steps:
- name: Get JOSM revision
id: josm-revision
run: |
REVISION=$(svn info https://josm.openstreetmap.de/svn/trunk | grep Revision | awk '{print $2}')
echo $REVISION
echo "::set-output name=josm-revision::${REVISION}"
shell: bash
- name: Cache JOSM
id: cache-josm
uses: actions/[email protected]
with:
path: |
josm/core/dist/josm-custom.jar
josm/core/test/build
key: josm-r${{ steps.josm-revision.outputs.josm-revision }}
- name: Set up JDK 8
if: steps.cache-josm.outputs.cache-hit != 'true'
uses: actions/setup-java@v3
with:
java-version: '8'
distribution: 'temurin'
- name: Cache
uses: actions/[email protected]
- name: Clone JOSM
if: steps.cache-josm.outputs.cache-hit != 'true'
run: |
svn co --depth=immediates https://josm.openstreetmap.de/osmsvn/applications/editors/josm $GITHUB_WORKSPACE/josm
cd $GITHUB_WORKSPACE/josm
svn up --set-depth=infinity --accept=theirs-full core
svn propget svn:externals | grep core | xargs -L1 svn co
- name: Cache dependencies
uses: actions/[email protected]
if: steps.cache-josm.outputs.cache-hit != 'true'
with:
path: |
~/.ivy2/cache/
$GITHUB_WORKSPACE/josm/core/tools/
key: ${{ runner.os }}-ivy2-${{ hashFiles('josm/plugins/${{ github.event.repository.name }}/build.xml', 'josm/plugins/00_core_tools/ivy.xml', 'josm/core/ivy.xml', 'josm/core/tools/ivy.xml') }}
key: ${{ runner.os }}-ivy2-${{ hashFiles('**/ivy.xml') }}
- name: build JOSM
if: steps.cache-josm.outputs.cache-hit != 'true'
run: |
cd $GITHUB_WORKSPACE/josm/core
ant dist test-compile
- uses: actions/upload-artifact@v3
with:
name: josm-dist
path: josm/core/dist/josm-custom.jar
- uses: actions/upload-artifact@v3
with:
name: josm-test
path: josm/core/test/build
build-plugin:
runs-on: ubuntu-latest
needs: build-josm
steps:
- name: Set up JDK 8
uses: actions/setup-java@v3
with:
java-version: '8'
distribution: 'temurin'
- name: Clone JOSM
run: |
svn co --depth=immediates https://josm.openstreetmap.de/osmsvn/applications/editors/josm $GITHUB_WORKSPACE/josm
cd $GITHUB_WORKSPACE/josm
svn up --set-depth=immediates plugins
svn up --set-depth=infinity --accept=theirs-full core i18n plugins/{00_core_test_config,00_core_test_lib,00_core_tools,00_tools}
svn propget svn:externals | grep core | xargs -L1 svn co
svn up --set-depth=immediates core plugins
svn up --set-depth=infinity --accept=theirs-full i18n plugins/{00_core_test_config,00_core_test_lib,00_core_tools,00_tools}
svn propget svn:externals | grep core | xargs -L1 svn co --depth=empty
cd core
ant dist
svn up ivy.xml ivysettings.xml
cd ../plugins
svn propget svn:externals | grep 00_core | xargs -L1 svn co
- uses: actions/checkout@v3
with:
path: josm/plugins/${{ github.event.repository.name }}
- name: Cache
uses: actions/[email protected]
with:
path: |
~/.ivy2/cache/
$GITHUB_WORKSPACE/josm/core/tools/
key: ${{ runner.os }}-ivy2-${{ hashFiles('**/ivy.xml') }}
- uses: actions/download-artifact@v3
with:
name: josm-dist
path: josm/core/dist
- name: Build with Ant
run: |
cd $GITHUB_WORKSPACE/josm/plugins/${{ github.event.repository.name }}
Expand All @@ -47,21 +108,102 @@ jobs:
version="$GITHUB_REF_NAME-$GITHUB_SHA"
fi
ant -noinput -buildfile build.xml -Dplugin.version=$version
- uses: actions/upload-artifact@v3
with:
name: josm-plugin-dist
path: |
josm/dist/${{ github.event.repository.name }}.jar
josm/dist/${{ github.event.repository.name }}-javadoc.jar
josm/dist/${{ github.event.repository.name }}-sources.jar
test-plugin:
runs-on: ubuntu-latest
needs: build-josm
steps:
- name: Set up JDK 8
uses: actions/setup-java@v3
with:
java-version: '8'
distribution: 'temurin'
- name: Clone JOSM
run: |
svn co --depth=immediates https://josm.openstreetmap.de/osmsvn/applications/editors/josm $GITHUB_WORKSPACE/josm
cd $GITHUB_WORKSPACE/josm
svn up --set-depth=immediates core plugins
svn up --set-depth=infinity --accept=theirs-full i18n plugins/{00_core_test_config,00_core_test_lib,00_core_tools,00_tools}
svn propget svn:externals | grep core | xargs -L1 svn co --depth=empty
cd core
svn up ivy.xml ivysettings.xml
cd ../plugins
svn propget svn:externals | grep 00_core | xargs -L1 svn co
- uses: actions/checkout@v3
with:
path: josm/plugins/${{ github.event.repository.name }}
- name: Cache
uses: actions/[email protected]
with:
path: |
~/.ivy2/cache/
$GITHUB_WORKSPACE/josm/core/tools/
key: ${{ runner.os }}-ivy2-${{ hashFiles('**/ivy.xml') }}-test-plugin

- name: Install Ant ${{ env.ANT_HOME }}
run: |
if [ ! -d tools ]; then mkdir tools; fi
if [ ! -f tools/${{ env.ANT_HOME }}-bin.tar.gz ]; then
curl -o tools/${{ env.ANT_HOME }}-bin.tar.gz https://downloads.apache.org/ant/binaries/${{ env.ANT_HOME }}-bin.tar.gz
fi
tar zxf tools/${{ env.ANT_HOME }}-bin.tar.gz
- name: Ant diagnostics
run: ${{ env.ANT_HOME }}/bin/ant -diagnostics

- uses: actions/download-artifact@v3
with:
name: josm-dist
path: josm/core/dist
- uses: actions/download-artifact@v3
with:
name: josm-test
path: josm/core/test/build
- name: Build with Ant
run: |
cd $GITHUB_WORKSPACE/josm/plugins/${{ github.event.repository.name }}
if [ $GITHUB_REF_TYPE == "tag" ]; then
version=$GITHUB_REF_NAME
else
version="$GITHUB_REF_NAME-$GITHUB_SHA"
fi
"$GITHUB_WORKSPACE/${{ env.ANT_HOME }}"/bin/ant -noinput -buildfile build.xml -Dplugin.version=$version
- name: Test with Ant
run: |
cd $GITHUB_WORKSPACE/josm/plugins/${{ github.event.repository.name }}
ant -noinput -buildfile build.xml -Dplugin.version=$version -Dtest.headless test
"$GITHUB_WORKSPACE/${{ env.ANT_HOME }}"/bin/ant -noinput -buildfile build.xml -Dplugin.version=$version -Dtest.headless=true test
exit $(grep -L ', Failures: 0, Skipped: ' test/report/*.txt | wc -l)
- name: Dump errors if failed
if: ${{ failure() }}
run: "grep -L ', Failures: 0, Skipped: ' test/report/*.txt | xargs cat"
run: |
cd $GITHUB_WORKSPACE/josm/plugins/${{ github.event.repository.name }}
grep -L ', Failures: 0, Skipped: ' test/report/*.txt | xargs cat
- name: Upload Ant reports
if: ${{ always() }}
uses: actions/upload-artifact@v2
with:
name: Ant reports for JOSM plugin ${{ github.event.repository.name }}
path: |
$GITHUB_WORKSPACE/josm/plugins/${{ github.event.repository.name }}/test/report/*.txt
$GITHUB_WORKSPACE/josm/plugins/${{ github.event.repository.name }}/test/report/TEST*.xml
josm/plugins/${{ github.event.repository.name }}/test/report/*.txt
josm/plugins/${{ github.event.repository.name }}/test/report/TEST*.xml
- name: Publish Test Report
uses: mikepenz/action-junit-report@v3
if: always() # always run even if the previous step fails
with:
report_paths: 'josm/plugins/${{ github.event.repository.name }}/test/report/TEST*.xml'
release:
runs-on: ubuntu-latest
needs: [build-plugin, test-plugin]
steps:
- uses: actions/download-artifact@v3
with:
name: josm-plugin-dist
path: josm/dist
- name: Release
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
Expand Down