From 305397f3cdee10d6558eec3362a90ffde7da9b0b Mon Sep 17 00:00:00 2001 From: Jacek Kowalski <Jacek@jacekk.info> Date: Wed, 30 Oct 2024 10:17:47 +0000 Subject: [PATCH] Workflows: reuse test.yml in release.yml --- .github/workflows/release.yml | 128 ++++-------------------------------------- 1 files changed, 12 insertions(+), 116 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 71e01a5..b69d864 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,134 +5,30 @@ name: Release +permissions: {} + jobs: build: - name: Build - runs-on: ubuntu-latest - steps: - - id: checkout - name: Checkout code - uses: actions/checkout@v3 - - - id: java - name: Install Java and Maven - uses: actions/setup-java@v3 - with: - distribution: zulu - java-version: 11 - - - id: vars - name: Get project variables - run: | - echo -n "keycloakVersion=" >> $GITHUB_OUTPUT - mvn -q help:evaluate -Dexpression=keycloak.version -DforceStdout 2> /dev/null | grep -E '^[0-9a-zA-Z.-]+$' >> $GITHUB_OUTPUT - echo -n "artifactId=" >> $GITHUB_OUTPUT - mvn -q help:evaluate -Dexpression=project.artifactId -DforceStdout 2> /dev/null | grep -E '^[0-9a-zA-Z.-]+$' >> $GITHUB_OUTPUT - echo -n "projectName=" >> $GITHUB_OUTPUT - mvn -q help:evaluate -Dexpression=project.name -DforceStdout 2> /dev/null | grep -E '^[0-9a-zA-Z :,.-]+$' >> $GITHUB_OUTPUT - echo -n "projectVersion=" >> $GITHUB_OUTPUT - mvn -q help:evaluate -Dexpression=project.version -DforceStdout 2> /dev/null | grep -E '^[0-9a-zA-Z.-]+$' >> $GITHUB_OUTPUT - - - name: Build project - run: | - mvn -B test package - - - name: Upload artifact - uses: actions/upload-artifact@v3 - with: - name: jar - path: target/${{ steps.vars.outputs.artifactId }}-${{ steps.vars.outputs.projectVersion }}.jar - if-no-files-found: error - - 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 - steps: - - id: checkout - name: Checkout code - uses: actions/checkout@v2 - - - id: download_artifact - name: Download artifact - uses: actions/download-artifact@v3 - with: - name: jar - - - id: create_container - name: Create Keycloak container - run: | - docker run -i -t -d -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin -p 8080:8080 --name keycloak "quay.io/keycloak/keycloak:${{ needs.build.outputs.keycloak_version }}" start-dev - - - id: deploy - name: Deploy artifact - run: | - CONTAINER="keycloak" - NAME="${{ needs.build.outputs.artifact_id }}-${{ needs.build.outputs.project_version }}.jar" - FILE="/opt/keycloak/providers/${NAME}" - docker cp "${NAME}" "${CONTAINER}:${FILE}" - docker restart "${CONTAINER}" - for i in {1..60}; do - if curl --silent --max-time 1 -o /dev/null http://localhost:8080; then - echo && echo "Deployment succeeded!" && exit 0 - else - sleep 1 - echo -n "." - fi - done - echo && echo "Deployment timeout!" && exit 1 - - - id: configure_keycloak - name: Configure Keycloak - run: | - CONTAINER="keycloak" - docker exec -i "${CONTAINER}" /bin/bash <<EOF - /opt/keycloak/bin/kcadm.sh config credentials --server http://localhost:8080 --realm master --user admin --password admin - /opt/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 - /opt/keycloak/bin/kcadm.sh get serverinfo -r master --fields "providers(login-protocol(providers(cas)))" | grep cas - EOF - - - id: run_tests - name: Run tests - run: | - integrationTest/suite.sh + uses: ./.github/workflows/test.yml release: name: Release runs-on: ubuntu-latest - needs: [build, test] + needs: [build] + permissions: + contents: write steps: - id: download_artifact name: Download artifact - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: jar - id: create_release name: Create release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + uses: softprops/action-gh-release@v2 with: - tag_name: ${{ github.ref }} - release_name: ${{ needs.build.outputs.project_name }} ${{ needs.build.outputs.project_version }} - draft: false - prerelease: false - - - id: upload_release - name: Upload release artifact - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ${{ needs.build.outputs.artifact_id }}-${{ needs.build.outputs.project_version }}.jar - asset_name: ${{ needs.build.outputs.artifact_id }}-${{ needs.build.outputs.project_version }}.jar - asset_content_type: application/java-archive + name: ${{ needs.build.outputs.project_name }} ${{ needs.build.outputs.project_version }} + files: ${{ needs.build.outputs.artifact_id }}-${{ needs.build.outputs.project_version }}.jar + fail_on_unmatched_files: true + generate_release_notes: true -- Gitblit v1.9.1