From f6ceb2005fc616bc45cbb320a749de86bc29bcf3 Mon Sep 17 00:00:00 2001 From: Jacek Kowalski Date: Wed, 22 Apr 2020 16:30:25 +0200 Subject: [PATCH] Replace Travis CI build with GitHub actions --- .github/workflows/release.yml | 144 ++++++++++++++++++++++++++++++++++ .github/workflows/test.yml | 110 ++++++++++++++++++++++++++ .travis.yml | 50 ------------ 3 files changed, 254 insertions(+), 50 deletions(-) create mode 100644 .github/workflows/release.yml create mode 100644 .github/workflows/test.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..c6bc7a3 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,144 @@ +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 < /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 < target/docker/Dockerfile && - echo "ADD keycloak-protocol-cas.jar /opt/jboss/keycloak/standalone/deployments/" >> target/docker/Dockerfile && - cd target/docker && docker build -t doccrazy/keycloak-cas . && cd ../.. && - docker run -d -p 127.0.0.1:8080:8080 --name keycloak -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin doccrazy/keycloak-cas && sleep 60 && - docker logs keycloak && - docker exec -t keycloak /opt/jboss/keycloak/bin/kcadm.sh config credentials --server http://localhost:8080/auth --realm master --user admin --password admin && - docker exec -t keycloak /opt/jboss/keycloak/bin/kcadm.sh create clients -r master -s clientId=test -s protocol=cas -s enabled=true -s publicClient=true -s 'redirectUris=["http://localhost/*"]' -s baseUrl=http://localhost -s adminUrl=http://localhost && - docker exec -t keycloak /opt/jboss/keycloak/bin/kcadm.sh get serverinfo -r master --fields "providers(login-protocol(providers(cas)))" | grep cas && - integrationTest/suite.sh - ; fi - - if [ "$TRAVIS_EVENT_TYPE" = "cron" ]; then ./update.sh; fi - -before_deploy: - - "mvn -DskipTests package" - - export RELEASE_JAR=$(ls target/keycloak-protocol-cas-*.jar) - -deploy: - provider: releases - api_key: - secure: BPcU12jQ4qs1xAq+Y+6bax+g1AdLatg5E645ISr/NLaKDuWNZxzpMLPf/w9+ngvV5ap5qTz8neoeEbVCLncaIT8wBqlaZnaSnFvVS1huUnwqbh8DzzC6Fmh8DoREpoGo/LV+He1N76bd/lpu0f8VoEqZDtgNYyPAn3xNif+tng8Xa1yh55PqaxB5XlXrArouKCv4jPf+AqzQUMr40Xgn/aQxra6H8PZiEJnxXtweC+UyMNGs5VZkm6nOUW/cpSBppEl6BxyLzJrM2b2pAXQSb85f2EBAIwN38PipwSdckC/3AIhI5Skrx9fEeiuW/YzsZKl7XTohn45fzirc6EzsGBvLucsIda+qMp6Zf4sd8uM0XgiQ1NJyOxWFVFyg3JP00OmJW4BgumfZTL4lzcDUVhn5DubgqZZM3sqvoz75MUSBYewTo3hLBlqxjVA8qe8S738mlNVcpDjwAuAM7/2UP+hcypnjKttQBFt965+yfxjSs3B+KLRQLp7UTmQ+fTcEr72AenQFoXuVpO0k6ghKYomNLLFOzlLk2JCWtsVirjWzJQTZKP5m23jf4qbfyDM3HDenL+N8l3ZOups9gtGpioxkUGKz2IPHrz7XTwh10OpZi32jOPS2BfFOXUQMNVlZAfbIAwXnbo2DWC0AB2Fz//bJbjF9TnOGTUIODos6joo= - file: "${RELEASE_JAR}" - skip_cleanup: true - on: - tags: true - repo: Doccrazy/keycloak-protocol-cas