|
5 | 5 | branches: |
6 | 6 | - main |
7 | 7 | - 4.3.x |
8 | | - |
9 | | - # Equivalent to Timer Trigger (H H * * * = once daily) |
| 8 | + |
| 9 | + # Scheduled builds run daily at midnight UTC |
10 | 10 | schedule: |
11 | | - - cron: '0 0 * * *' # Runs at midnight UTC daily |
12 | | - |
13 | | - # Manual trigger to replicate the BRANCH parameter |
| 11 | + - cron: '0 0 * * *' |
| 12 | + |
| 13 | + # Manual trigger with optional branch override |
14 | 14 | workflow_dispatch: |
15 | 15 | inputs: |
16 | 16 | branch: |
|
19 | 19 | default: 'main' |
20 | 20 | type: string |
21 | 21 |
|
22 | | -env: |
23 | | - BRANCH: ${{ github.event.inputs.branch || github.ref_name }} |
24 | | - |
25 | 22 | jobs: |
26 | | - setup: |
27 | | - runs-on: ubuntu-latest |
28 | | - outputs: |
29 | | - matrix: ${{ steps.set-matrix.outputs.matrix }} |
30 | | - steps: |
31 | | - - name: Determine branches and JDK versions |
32 | | - id: set-matrix |
33 | | - run: | |
34 | | - echo "=== Workflow Debug Information ===" |
35 | | - echo "Event name: ${{ github.event_name }}" |
36 | | - echo "Ref name: ${{ github.ref_name }}" |
37 | | - echo "Branch from env: ${{ env.BRANCH }}" |
38 | | - echo "" |
39 | | - |
40 | | - # Function to get JDK versions for a branch (returns space-separated list) |
41 | | - get_jdk_versions() { |
42 | | - local branch=$1 |
43 | | - if [[ "$branch" == "main" ]] || [[ "$branch" == "4.3.x" ]]; then |
44 | | - echo "17 21 25" |
45 | | - elif [[ "$branch" == "4.2.x" ]] || [[ "$branch" == "4.1.x" ]]; then |
46 | | - echo "17 21" |
47 | | - elif [[ "$branch" == "3.1.x" ]]; then |
48 | | - echo "8 11 17" |
49 | | - else |
50 | | - echo "17 21 25" |
51 | | - fi |
52 | | - } |
53 | | - |
54 | | - # Determine which branches to build |
55 | | - if [[ "${{ github.event_name }}" == "schedule" ]]; then |
56 | | - BRANCHES=("main" "4.3.x") |
57 | | - echo "Trigger: Scheduled run - building multiple branches" |
58 | | - else |
59 | | - BRANCHES=("${{ env.BRANCH }}") |
60 | | - echo "Trigger: ${{ github.event_name }} - building single branch" |
61 | | - fi |
62 | | - |
63 | | - echo "" |
64 | | - echo "=== Branches to Build ===" |
65 | | - for BRANCH in "${BRANCHES[@]}"; do |
66 | | - echo " - $BRANCH" |
67 | | - done |
68 | | - |
69 | | - echo "" |
70 | | - echo "=== Java Versions per Branch ===" |
71 | | - # Build matrix by iterating over branches and their JDK versions |
72 | | - MATRIX_ENTRIES=() |
73 | | - for BRANCH in "${BRANCHES[@]}"; do |
74 | | - JDK_VERSIONS=$(get_jdk_versions "$BRANCH") |
75 | | - echo " $BRANCH: $JDK_VERSIONS" |
76 | | - for VERSION in $JDK_VERSIONS; do |
77 | | - MATRIX_ENTRIES+=("{\"branch\":\"$BRANCH\",\"java-version\":\"$VERSION\"}") |
78 | | - done |
79 | | - done |
80 | | - |
81 | | - # Join entries with comma and wrap in array |
82 | | - MATRIX_JSON="[$(IFS=,; echo "${MATRIX_ENTRIES[*]}")]" |
83 | | - |
84 | | - echo "" |
85 | | - echo "=== Generated Matrix ===" |
86 | | - echo "$MATRIX_JSON" | python3 -m json.tool || echo "$MATRIX_JSON" |
87 | | - echo "" |
88 | | - |
89 | | - echo "matrix=$MATRIX_JSON" >> $GITHUB_OUTPUT |
90 | | -
|
91 | | - build: |
92 | | - name: Build ${{ matrix.branch }} (JDK ${{ matrix.java-version }}) |
93 | | - needs: setup |
94 | | - runs-on: ubuntu-latest |
95 | | - timeout-minutes: 60 |
96 | | - strategy: |
97 | | - matrix: |
98 | | - include: ${{ fromJson(needs.setup.outputs.matrix) }} |
99 | | - |
100 | | - steps: |
101 | | - - name: Checkout code |
102 | | - uses: actions/checkout@v5 |
103 | | - with: |
104 | | - ref: ${{ matrix.branch }} |
105 | | - clean: true # Equivalent to WipeWorkspace extension |
106 | | - |
107 | | - - name: Set up JDK ${{ matrix.java-version }} |
108 | | - uses: actions/setup-java@v4 |
109 | | - with: |
110 | | - java-version: ${{ matrix.java-version }} |
111 | | - distribution: 'temurin' # OpenJDK distribution |
112 | | - cache: 'maven' |
113 | | - server-id: repo.spring.io |
114 | | - server-username: REPO_SPRING_IO_USERNAME |
115 | | - server-password: REPO_SPRING_IO_PASSWORD |
116 | | - |
117 | | - - name: Login to Docker Hub |
118 | | - uses: docker/login-action@v3 |
119 | | - with: |
120 | | - username: ${{ secrets.DOCKERHUB_USERNAME }} |
121 | | - password: ${{ secrets.DOCKERHUB_TOKEN }} |
122 | | - |
123 | | - - name: Stop running Docker containers |
124 | | - continue-on-error: true |
125 | | - run: | |
126 | | - #!/bin/bash |
127 | | - if command -v timeout &> /dev/null; then |
128 | | - timeout 10s docker ps -a -q | xargs -n 1 -P 8 -I {} docker stop {} || echo "Failed to stop docker... Hopefully you know what you're doing" |
129 | | - fi |
130 | | - |
131 | | - - name: Verify Maven installation |
132 | | - run: ./mvnw --version |
133 | | - |
134 | | - - name: Build and deploy |
135 | | - env: |
136 | | - REPO_SPRING_IO_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }} |
137 | | - REPO_SPRING_IO_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }} |
138 | | - run: | |
139 | | - if [[ "${{ matrix.java-version }}" == "17" ]]; then |
140 | | - ./mvnw clean deploy -Pdocs,deploy,spring -B -U |
141 | | - else |
142 | | - ./mvnw clean deploy -Pdeploy,spring -B -U |
143 | | - fi |
144 | | - |
| 23 | + deploy: |
| 24 | + uses: spring-cloud/spring-cloud-github-actions/.github/workflows/deploy.yml@main |
| 25 | + with: |
| 26 | + branch: ${{ inputs.branch }} |
| 27 | + secrets: |
| 28 | + ARTIFACTORY_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }} |
| 29 | + ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }} |
| 30 | + DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} |
| 31 | + DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} |
0 commit comments