on: push: tags: - '[0-9]+.*' name: Release jobs: build: name: Build runs-on: ubuntu-latest steps: - id: checkout name: Checkout code uses: actions/checkout@v2 - name: Install Java and Maven uses: actions/setup-java@v1 with: java-version: 8 - id: vars name: Get project variables run: | echo -n "::set-output name=keycloakVersion::" mvn -q help:evaluate -Dexpression=keycloak.version -DforceStdout 2> /dev/null echo echo -n "::set-output name=artifactId::" mvn -q help:evaluate -Dexpression=project.artifactId -DforceStdout 2> /dev/null echo echo -n "::set-output name=projectName::" mvn -q help:evaluate -Dexpression=project.name -DforceStdout 2> /dev/null echo echo -n "::set-output name=projectVersion::" mvn -q help:evaluate -Dexpression=project.version -DforceStdout 2> /dev/null echo - name: Build project run: | mvn -B test package - name: Upload artifact uses: actions/upload-artifact@v1 with: name: jar path: target/${{ steps.vars.outputs.artifactId }}-${{ steps.vars.outputs.projectVersion }}.jar outputs: artifact_id: ${{ steps.vars.outputs.artifactId }} keycloak_version: ${{ steps.vars.outputs.keycloakVersion }} project_name: ${{ steps.vars.outputs.projectName }} project_version: ${{ steps.vars.outputs.projectVersion }} test: name: Test runs-on: ubuntu-latest needs: build services: keycloak: image: quay.io/keycloak/keycloak:${{ needs.build.outputs.keycloak_version }} env: KEYCLOAK_USER: admin KEYCLOAK_PASSWORD: admin ports: - 8080:8080 volumes: - '${{ github.workspace }}:/workspace' steps: - id: checkout name: Checkout code uses: actions/checkout@v2 - id: download_artifact name: Download artifact uses: actions/download-artifact@v1 with: name: jar - id: deploy name: Deploy artifact run: | CONTAINER="${{ job.services.keycloak.id }}" NAME="${{ needs.build.outputs.artifact_id }}-${{ needs.build.outputs.project_version }}.jar" FILE="/opt/jboss/keycloak/standalone/deployments/${NAME}" docker cp "jar/${NAME}" "${CONTAINER}:/tmp/" docker exec -i "${CONTAINER}" /bin/bash <