Skip to content

Commit 1ff49fb

Browse files
committed
SONARPHP-1693 Migration from Cirrus CI to GitHub Actions
Files generated by GH Copilot in IntelliJ Idea
1 parent a978e72 commit 1ff49fb

File tree

6 files changed

+447
-0
lines changed

6 files changed

+447
-0
lines changed

.github/workflows/build.yml

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
name: Main Workflow
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
- 'branch-*'
8+
- 'dogfood-on-*'
9+
pull_request:
10+
branches:
11+
- master
12+
- 'branch-*'
13+
workflow_dispatch:
14+
15+
jobs:
16+
build:
17+
name: Build
18+
runs-on: ubuntu-latest
19+
permissions:
20+
contents: read
21+
steps:
22+
- uses: actions/checkout@v4
23+
with:
24+
fetch-depth: 1
25+
submodules: 'recursive'
26+
27+
- name: Set up JDK 17
28+
uses: actions/setup-java@v4
29+
with:
30+
java-version: 17
31+
distribution: 'temurin'
32+
33+
- name: Setup Gradle
34+
uses: gradle/gradle-build-action@v3
35+
with:
36+
gradle-version: wrapper
37+
38+
- name: Export project version
39+
id: project_version
40+
run: |
41+
mkdir -p project-version
42+
PROJECTVERSION=$(./gradlew printVersion --console=plain -q)
43+
echo "PROJECT_VERSION=$PROJECTVERSION" >> $GITHUB_ENV
44+
echo "$PROJECTVERSION" > project-version/evaluated_project_version.txt
45+
46+
- name: Build
47+
env:
48+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
49+
SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }}
50+
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
51+
SIGN_KEY: ${{ secrets.SIGN_KEY }}
52+
PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }}
53+
run: |
54+
source .github/workflows/cirrus-env BUILD
55+
./gradlew build storeProjectVersion -x test -x sonar --console=plain --no-daemon --info
56+
57+
- name: Upload project version
58+
uses: actions/upload-artifact@v4
59+
with:
60+
name: project-version
61+
path: project-version/
62+
retention-days: 1
63+
64+
test:
65+
name: Test
66+
needs: build
67+
runs-on: ubuntu-latest
68+
permissions:
69+
contents: read
70+
steps:
71+
- uses: actions/checkout@v4
72+
with:
73+
fetch-depth: 1
74+
submodules: 'recursive'
75+
76+
- name: Set up JDK 17
77+
uses: actions/setup-java@v4
78+
with:
79+
java-version: 17
80+
distribution: 'temurin'
81+
82+
- name: Setup Gradle
83+
uses: gradle/gradle-build-action@v3
84+
with:
85+
gradle-version: wrapper
86+
87+
- name: Download project version
88+
uses: actions/download-artifact@v4
89+
with:
90+
name: project-version
91+
path: project-version/
92+
93+
- name: Test and analyze
94+
env:
95+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
96+
SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }}
97+
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
98+
run: |
99+
source .github/workflows/cirrus-env BUILD
100+
./gradlew test sonar --console=plain --no-daemon --info -x artifactoryPublish
101+
102+
- name: Upload test results
103+
if: always()
104+
uses: actions/upload-artifact@v4
105+
with:
106+
name: test-results
107+
path: '**/test-results/**/*.xml'
108+
109+
windows_qa:
110+
name: Windows QA
111+
needs: build
112+
runs-on: windows-latest
113+
if: ${{ !github.event.pull_request || !contains(github.event.pull_request.labels.*.name, 'skip-ci') }}
114+
steps:
115+
- uses: actions/checkout@v4
116+
with:
117+
fetch-depth: 1
118+
submodules: 'recursive'
119+
120+
- name: Set up JDK 17
121+
uses: actions/setup-java@v4
122+
with:
123+
java-version: 17
124+
distribution: 'temurin'
125+
126+
- name: Setup Gradle
127+
uses: gradle/gradle-build-action@v3
128+
with:
129+
gradle-version: wrapper
130+
131+
- name: Run Windows tests
132+
env:
133+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
134+
run: |
135+
source .github/workflows/cirrus-env CI
136+
./gradlew test --console=plain --no-daemon --info
137+
138+
- name: Upload test results
139+
if: always()
140+
uses: actions/upload-artifact@v4
141+
with:
142+
name: windows-test-results
143+
path: '**/test-results/**/*.xml'

.github/workflows/int-tests.yml

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
name: Plugin Integration Tests
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
- 'branch-*'
8+
- 'dogfood-on-*'
9+
paths-ignore:
10+
- '**/src/main/resources/org/sonar/l10n/*/rules/**'
11+
- '**/src/main/resources/com/sonar/l10n/*/rules/**'
12+
- '**sonarpedia.json'
13+
- '**.md'
14+
pull_request:
15+
branches:
16+
- master
17+
- 'branch-*'
18+
paths-ignore:
19+
- '**/src/main/resources/org/sonar/l10n/*/rules/**'
20+
- '**/src/main/resources/com/sonar/l10n/*/rules/**'
21+
- '**sonarpedia.json'
22+
- '**.md'
23+
workflow_dispatch:
24+
25+
jobs:
26+
plugin_tests:
27+
name: Plugin Tests
28+
needs: build
29+
runs-on: ubuntu-latest
30+
strategy:
31+
fail-fast: false
32+
matrix:
33+
sq_version: [LATEST_RELEASE, DEV]
34+
steps:
35+
- uses: actions/checkout@v4
36+
with:
37+
fetch-depth: 1
38+
submodules: 'recursive'
39+
40+
- name: Set up JDK 17
41+
uses: actions/setup-java@v4
42+
with:
43+
java-version: 17
44+
distribution: 'temurin'
45+
46+
- name: Setup Gradle
47+
uses: gradle/gradle-build-action@v3
48+
with:
49+
gradle-version: wrapper
50+
51+
- name: Set Orchestrator home
52+
run: |
53+
TODAY=$(date '+%Y-%m-%d')
54+
echo "TODAY=${TODAY}" >> $GITHUB_ENV
55+
echo "ORCHESTRATOR_HOME=${GITHUB_WORKSPACE}/orchestrator/${TODAY}" >> $GITHUB_ENV
56+
mkdir -p ${GITHUB_WORKSPACE}/orchestrator/${TODAY}
57+
58+
- name: Run plugin integration tests
59+
env:
60+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
61+
SQ_VERSION: ${{ matrix.sq_version }}
62+
KEEP_ORCHESTRATOR_RUNNING: "true"
63+
run: |
64+
source .github/workflows/cirrus-env QA
65+
./gradlew its:plugin:integrationTest -Dsonar.runtimeVersion=${SQ_VERSION} --info --build-cache --console plain --no-daemon
66+
67+
- name: Upload test results
68+
if: always()
69+
uses: actions/upload-artifact@v4
70+
with:
71+
name: plugin-test-results-${{ matrix.sq_version }}
72+
path: '**/test-results/**/*.xml'

.github/workflows/pr-analysis.yml

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
name: PR Analysis Tests
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
- 'branch-*'
8+
- 'dogfood-on-*'
9+
paths-ignore:
10+
- '**/src/main/resources/org/sonar/l10n/*/rules/**'
11+
- '**/src/main/resources/com/sonar/l10n/*/rules/**'
12+
- '**sonarpedia.json'
13+
- '**.md'
14+
pull_request:
15+
branches:
16+
- master
17+
- 'branch-*'
18+
paths-ignore:
19+
- '**/src/main/resources/org/sonar/l10n/*/rules/**'
20+
- '**/src/main/resources/com/sonar/l10n/*/rules/**'
21+
- '**sonarpedia.json'
22+
- '**.md'
23+
workflow_dispatch:
24+
25+
jobs:
26+
pr_analysis:
27+
name: PR Analysis
28+
needs: build
29+
runs-on: ubuntu-latest
30+
steps:
31+
- uses: actions/checkout@v4
32+
with:
33+
fetch-depth: 1
34+
submodules: 'recursive'
35+
36+
- name: Set up JDK 17
37+
uses: actions/setup-java@v4
38+
with:
39+
java-version: 17
40+
distribution: 'temurin'
41+
42+
- name: Setup Gradle
43+
uses: gradle/gradle-build-action@v3
44+
with:
45+
gradle-version: wrapper
46+
47+
- name: Set Orchestrator home
48+
run: |
49+
TODAY=$(date '+%Y-%m-%d')
50+
echo "TODAY=${TODAY}" >> $GITHUB_ENV
51+
echo "ORCHESTRATOR_HOME=${GITHUB_WORKSPACE}/orchestrator/${TODAY}" >> $GITHUB_ENV
52+
mkdir -p ${GITHUB_WORKSPACE}/orchestrator/${TODAY}
53+
54+
- name: Run PR analysis tests
55+
env:
56+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
57+
SQ_VERSION: LATEST_RELEASE
58+
KEEP_ORCHESTRATOR_RUNNING: "true"
59+
run: |
60+
source .github/workflows/cirrus-env QA
61+
./gradlew its:ruling:integrationTest -Dsonar.runtimeVersion=${SQ_VERSION} --tests "PhpPrAnalysisTest" --info --build-cache --console plain --no-daemon
62+
63+
- name: Upload test results
64+
if: always()
65+
uses: actions/upload-artifact@v4
66+
with:
67+
name: pr-analysis-test-results
68+
path: '**/test-results/**/*.xml'

.github/workflows/promote.yml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
name: Promote
2+
3+
on:
4+
workflow_run:
5+
workflows:
6+
- Main Workflow
7+
- Windows QA
8+
- Ruling Tests
9+
- Plugin Integration Tests
10+
- PR Analysis Tests
11+
types:
12+
- completed
13+
14+
jobs:
15+
promote:
16+
name: Promote
17+
runs-on: ubuntu-latest
18+
if: ${{ github.event.workflow_run.conclusion == 'success' }}
19+
steps:
20+
- uses: actions/checkout@v4
21+
with:
22+
fetch-depth: 1
23+
24+
- name: Download project version
25+
uses: actions/download-artifact@v4
26+
with:
27+
name: project-version
28+
path: project-version/
29+
30+
- name: Promote artifacts
31+
env:
32+
GITHUB_TOKEN: ${{ secrets.PROMOTION_TOKEN }}
33+
ARTIFACTORY_PROMOTE_ACCESS_TOKEN: ${{ secrets.ARTIFACTORY_PROMOTE_ACCESS_TOKEN }}
34+
run: |
35+
source .github/workflows/cirrus-env PROMOTE
36+
cirrus_jfrog_promote
37+
export PROJECT_VERSION=$(cat project-version/evaluated_project_version.txt)
38+
github-notify-promotion
39+
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
name: Security Scan
2+
3+
on:
4+
push:
5+
branches:
6+
- master
7+
- 'branch-*'
8+
workflow_dispatch:
9+
10+
jobs:
11+
sca_scan:
12+
name: Security Scan
13+
needs: build
14+
runs-on: ubuntu-latest
15+
steps:
16+
- uses: actions/checkout@v4
17+
with:
18+
fetch-depth: 1
19+
submodules: 'recursive'
20+
21+
- name: Set up JDK 17
22+
uses: actions/setup-java@v4
23+
with:
24+
java-version: 17
25+
distribution: 'temurin'
26+
27+
- name: Setup Gradle
28+
uses: gradle/gradle-build-action@v3
29+
with:
30+
gradle-version: wrapper
31+
32+
- name: Download project version
33+
uses: actions/download-artifact@v4
34+
with:
35+
name: project-version
36+
path: project-version/
37+
38+
- name: Run Mend scan
39+
env:
40+
WS_APIKEY: ${{ secrets.WS_APIKEY }}
41+
run: |
42+
source .github/workflows/cirrus-env QA
43+
export PROJECT_VERSION=$(cat project-version/evaluated_project_version.txt)
44+
GRADLE_OPTS="-Xmx64m -Dorg.gradle.jvmargs='-Xmx3G' -Dorg.gradle.daemon=false" ./gradlew :php-frontend:processResources -Pkotlin.compiler.execution.strategy=in-process --console=plain --no-daemon
45+
source ws_scan.sh
46+
47+
- name: Upload scan results
48+
if: always()
49+
uses: actions/upload-artifact@v4
50+
with:
51+
name: whitesource-results
52+
path: whitesource/**/*

0 commit comments

Comments
 (0)