Skip to content

Commit 8a64084

Browse files
committed
Add to GitHub Actions CI
1 parent b8b0661 commit 8a64084

File tree

1 file changed

+147
-0
lines changed

1 file changed

+147
-0
lines changed
Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
schedule:
6+
- cron: '0 10 * * *' # Once per day at 10am UTC
7+
workflow_dispatch: # Manual trigger
8+
9+
env:
10+
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
11+
GRADLE_ENTERPRISE_CACHE_USER: ${{ secrets.GRADLE_ENTERPRISE_CACHE_USER }}
12+
GRADLE_ENTERPRISE_CACHE_PASSWORD: ${{ secrets.GRADLE_ENTERPRISE_CACHE_PASSWORD }}
13+
GRADLE_ENTERPRISE_SECRET_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_SECRET_ACCESS_KEY }}
14+
COMMIT_OWNER: ${{ github.event.pusher.name }}
15+
COMMIT_SHA: ${{ github.sha }}
16+
ARTIFACTORY_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }}
17+
ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }}
18+
RUN_JOBS: ${{ github.repository == 'spring-projects/spring-security' }}
19+
20+
jobs:
21+
prerequisites:
22+
name: Pre-requisites for building
23+
runs-on: ubuntu-latest
24+
outputs:
25+
runjobs: ${{ steps.continue.outputs.runjobs }}
26+
steps:
27+
- id: continue
28+
name: Determine if should continue
29+
if: env.RUN_JOBS == 'true'
30+
run: echo "::set-output name=runjobs::true"
31+
build_jdk_8:
32+
name: Build JDK 8
33+
needs: [prerequisites]
34+
strategy:
35+
matrix:
36+
os: [ubuntu-latest, windows-latest]
37+
runs-on: ${{ matrix.os }}
38+
if: needs.prerequisites.outputs.runjobs
39+
steps:
40+
- uses: actions/checkout@v2
41+
- name: Set up JDK 8
42+
uses: actions/setup-java@v1
43+
with:
44+
java-version: '8'
45+
- name: Setup gradle user name
46+
run: |
47+
mkdir -p ~/.gradle
48+
echo 'systemProp.user.name=spring-builds+github' >> ~/.gradle/gradle.properties
49+
- name: Cache Gradle packages
50+
uses: actions/cache@v2
51+
with:
52+
path: ~/.gradle/caches
53+
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
54+
- name: Build with Gradle
55+
env:
56+
GRADLE_ENTERPRISE_CACHE_USERNAME: ${{ secrets.GRADLE_ENTERPRISE_CACHE_USER }}
57+
GRADLE_ENTERPRISE_CACHE_PASSWORD: ${{ secrets.GRADLE_ENTERPRISE_CACHE_PASSWORD }}
58+
GRADLE_ENTERPRISE_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_SECRET_ACCESS_KEY }}
59+
run: ./gradlew clean build --continue -PartifactoryUsername="$ARTIFACTORY_USERNAME" -PartifactoryPassword="$ARTIFACTORY_PASSWORD"
60+
deploy_artifacts:
61+
name: Deploy Artifacts
62+
needs: [build_jdk_8]
63+
runs-on: ubuntu-latest
64+
steps:
65+
- uses: actions/checkout@v2
66+
- name: Set up JDK
67+
uses: actions/setup-java@v1
68+
with:
69+
java-version: '8'
70+
- name: Setup gradle user name
71+
run: |
72+
mkdir -p ~/.gradle
73+
echo 'systemProp.user.name=spring-builds+github' >> ~/.gradle/gradle.properties
74+
- name: Deploy artifacts
75+
run: |
76+
export GRADLE_ENTERPRISE_CACHE_USERNAME="$GRADLE_ENTERPRISE_CACHE_USER"
77+
export GRADLE_ENTERPRISE_CACHE_PASSWORD="$GRADLE_ENTERPRISE_CACHE_PASSWORD"
78+
export GRADLE_ENTERPRISE_ACCESS_KEY="$GRADLE_ENTERPRISE_SECRET_ACCESS_KEY"
79+
./gradlew deployArtifacts -PossrhTokenUsername="$OSSRH_TOKEN_USERNAME" -PossrhTokenPassword="$OSSRH_TOKEN_PASSWORD" -PartifactoryUsername="$ARTIFACTORY_USERNAME" -PartifactoryPassword="$ARTIFACTORY_PASSWORD" --stacktrace
80+
env:
81+
ORG_GRADLE_PROJECT_signingKey: ${{ secrets.GPG_PRIVATE_KEY }}
82+
ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.GPG_PASSPHRASE }}
83+
OSSRH_TOKEN_USERNAME: ${{ secrets.OSSRH_S01_TOKEN_USERNAME }}
84+
OSSRH_TOKEN_PASSWORD: ${{ secrets.OSSRH_S01_TOKEN_PASSWORD }}
85+
ARTIFACTORY_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }}
86+
ARTIFACTORY_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }}
87+
deploy_docs:
88+
name: Deploy Docs
89+
needs: [build_jdk_8]
90+
runs-on: ubuntu-latest
91+
steps:
92+
- uses: actions/checkout@v2
93+
- name: Set up JDK
94+
uses: actions/setup-java@v1
95+
with:
96+
java-version: '8'
97+
- name: Setup gradle user name
98+
run: |
99+
mkdir -p ~/.gradle
100+
echo 'systemProp.user.name=spring-builds+github' >> ~/.gradle/gradle.properties
101+
- name: Deploy Docs
102+
run: |
103+
export GRADLE_ENTERPRISE_CACHE_USERNAME="$GRADLE_ENTERPRISE_CACHE_USER"
104+
export GRADLE_ENTERPRISE_CACHE_PASSWORD="$GRADLE_ENTERPRISE_CACHE_PASSWORD"
105+
export GRADLE_ENTERPRISE_ACCESS_KEY="$GRADLE_ENTERPRISE_SECRET_ACCESS_KEY"
106+
./gradlew deployDocs -PdeployDocsSshKey="$DOCS_SSH_KEY" -PdeployDocsSshUsername="$DOCS_USERNAME" -PdeployDocsHost="$DOCS_HOST" --stacktrace
107+
env:
108+
DOCS_USERNAME: ${{ secrets.DOCS_USERNAME }}
109+
DOCS_SSH_KEY: ${{ secrets.DOCS_SSH_KEY }}
110+
DOCS_HOST: ${{ secrets.DOCS_HOST }}
111+
deploy_schema:
112+
name: Deploy Schema
113+
needs: [build_jdk_8, snapshot_tests]
114+
runs-on: ubuntu-latest
115+
steps:
116+
- uses: actions/checkout@v2
117+
- name: Set up JDK
118+
uses: actions/setup-java@v1
119+
with:
120+
java-version: '8'
121+
- name: Setup gradle user name
122+
run: |
123+
mkdir -p ~/.gradle
124+
echo 'systemProp.user.name=spring-builds+github' >> ~/.gradle/gradle.properties
125+
- name: Deploy Schema
126+
run: |
127+
export GRADLE_ENTERPRISE_CACHE_USERNAME="$GRADLE_ENTERPRISE_CACHE_USER"
128+
export GRADLE_ENTERPRISE_CACHE_PASSWORD="$GRADLE_ENTERPRISE_CACHE_PASSWORD"
129+
export GRADLE_ENTERPRISE_ACCESS_KEY="$GRADLE_ENTERPRISE_SECRET_ACCESS_KEY"
130+
./gradlew deploySchema -PdeployDocsSshKey="$DOCS_SSH_KEY" -PdeployDocsSshUsername="$DOCS_USERNAME" -PdeployDocsHost="$DOCS_HOST" --stacktrace --info
131+
env:
132+
DOCS_USERNAME: ${{ secrets.DOCS_USERNAME }}
133+
DOCS_SSH_KEY: ${{ secrets.DOCS_SSH_KEY }}
134+
DOCS_HOST: ${{ secrets.DOCS_HOST }}
135+
notify_result:
136+
name: Check for failures
137+
needs: [build_jdk_8, deploy_artifacts, deploy_docs, deploy_schema]
138+
if: failure()
139+
runs-on: ubuntu-latest
140+
steps:
141+
- name: Send Slack message
142+
uses: Gamesight/slack-workflow-status@v1.0.1
143+
with:
144+
repo_token: ${{ secrets.GITHUB_TOKEN }}
145+
slack_webhook_url: ${{ secrets.SLACK_WEBHOOK_URL }}
146+
channel: '#spring-security-ci'
147+
name: 'CI Notifier'

0 commit comments

Comments
 (0)