Use Random Routes in Test Applications #211
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Sample apps test and update | |
on: | |
push: | |
branches: [ main ] | |
pull_request_target: | |
branches: [ main ] | |
types: [ opened, synchronize, reopened ] | |
permissions: | |
pull-requests: write | |
contents: write | |
jobs: | |
sample-app-test: | |
runs-on: ubuntu-latest | |
concurrency: test-landscape | |
environment: cf_env | |
steps: | |
- name: Limit access | |
if: | | |
github.event_name == 'pull_request_target' && | |
github.event.pull_request.head.repo.fork == 'true' | |
run: | | |
echo "Deployment not possible!" | |
exit 1 | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
ref: "${{ github.event.pull_request.merge_commit_sha }}" | |
- name: Setup java/jdk | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'zulu' | |
java-version: '11' | |
java-package: jdk | |
- name: Setup Gradle | |
uses: gradle/gradle-build-action@v2 | |
- name: Setup Go | |
uses: actions/setup-go@v4 | |
with: | |
go-version: 'stable' | |
- name: Install grpcurl | |
run: go install github.com/fullstorydev/grpcurl/cmd/grpcurl@latest | |
- name: Install yq | |
run: | | |
sudo add-apt-repository ppa:rmescandon/yq | |
sudo apt update | |
sudo apt install yq -y | |
- name: Install CloudFoundry cf cli | |
run: | | |
wget -q -O - https://packages.cloudfoundry.org/debian/cli.cloudfoundry.org.key | sudo apt-key add - | |
echo "deb https://packages.cloudfoundry.org/debian stable main" | sudo tee /etc/apt/sources.list.d/cloudfoundry-cli.list | |
sudo apt-get update | |
sudo apt-get install cf8-cli -y | |
cf8 --version | |
- name: Build Java apps | |
run: ./http2/gradlew clean build -p http2 | |
- name: Remove routes from manifest | |
run: yq 'del(.applications[].routes)' -i "${GITHUB_WORKSPACE}/http2/apps-manifest.yml" | |
- name: Logging into target CloudFoundry | |
run: cf8 login -a "${{ secrets.CF_API }}" -u "${{ secrets.CF_USERNAME }}" -p "${{ secrets.CF_PASSWORD }}" -o "${{ secrets.CF_ORG }}" -s "${{ secrets.CF_SPACE }}" --origin uaa | |
- name: Deploy CloudFoundry sample apps | |
run: cf8 push -f "${GITHUB_WORKSPACE}/http2/apps-manifest.yml" --var domain=${{ secrets.CF_DOMAIN }} --vars-file "${GITHUB_WORKSPACE}/http2/gradle.properties" | |
- name: Test Sample apps | |
run: | | |
echo "### Testing HTTP2_APP app ###" | |
yq e '.applications.[].name' "${GITHUB_WORKSPACE}/http2/apps-manifest.yml" | grep -i 'http2' | while read -r HTTP2_APP; do | |
ROUTE=${{ github.run_id }}-$HTTP2_APP | |
cf8 map-route $HTTP2_APP ${{ secrets.CF_DOMAIN }} --hostname $ROUTE --app-protocol http2 | |
echo "curl -v --http2-prior-knowledge -H 'Connection: close' 'https://$ROUTE.${{ secrets.CF_DOMAIN }}'" | |
curl -v --http2-prior-knowledge -H "Connection: close" "https://$ROUTE.${{ secrets.CF_DOMAIN }}" | |
done | |
echo "Testing GRPC apps" | |
ROUTE=${{ github.run_id }}-go-grpc-test | |
cf8 map-route go-grpc-test ${{ secrets.CF_DOMAIN }} --hostname $ROUTE --app-protocol http2 | |
grpcurl $ROUTE.${{ secrets.CF_DOMAIN }}:443 example.Example.Run | |
ROUTE=${{ github.run_id }}-java-grpc-test | |
cf8 map-route java-grpc-test ${{ secrets.CF_DOMAIN }} --hostname $ROUTE --app-protocol http2 | |
grpcurl -proto http2/java-grpc/app/src/main/proto/example.proto $ROUTE.${{ secrets.CF_DOMAIN }}:443 example.Example.Run | |
ROUTE=${{ github.run_id }}-node-grpc-test | |
cf8 map-route node-grpc-test ${{ secrets.CF_DOMAIN }} --hostname $ROUTE --app-protocol http2 | |
grpcurl -proto http2/node-grpc/example.proto $ROUTE.${{ secrets.CF_DOMAIN }}:443 Example.Run | |
ROUTE=${{ github.run_id }}-python-grpc-test | |
cf8 map-route python-grpc-test ${{ secrets.CF_DOMAIN }} --hostname $ROUTE --app-protocol http2 | |
grpcurl -proto http2/python-grpc/example.proto $ROUTE.${{ secrets.CF_DOMAIN }}:443 Example.Run | |
ROUTE=${{ github.run_id }}-ruby-grpc-test | |
cf8 map-route ruby-grpc-test ${{ secrets.CF_DOMAIN }} --hostname $ROUTE --app-protocol http2 | |
grpcurl -proto http2/ruby-grpc/example.proto $ROUTE.${{ secrets.CF_DOMAIN }}:443 Example.Run | |
- name: Clean-up | |
if: success() || failure() | |
run: | | |
echo "Deleting apps and routes" | |
yq e '.applications.[].name' "${GITHUB_WORKSPACE}/http2/apps-manifest.yml" | while read -r app_name; do | |
echo "Deleting app: $app_name" | |
cf8 delete "$app_name" -r -f | |
done | |
automerge: | |
runs-on: ubuntu-latest | |
if: github.actor == 'dependabot[bot]' | |
needs: [sample-app-test] | |
steps: | |
- name: Approve | |
run: gh pr review "${{ github.event.pull_request.html_url }}" --approve --body "Auto-approving dependency bump." | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Enable auto-merge | |
run: gh pr merge "${{ github.event.pull_request.html_url }}" --auto --rebase | |
env: | |
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} |