-
Notifications
You must be signed in to change notification settings - Fork 0
136 lines (120 loc) · 4.01 KB
/
ci.yml
File metadata and controls
136 lines (120 loc) · 4.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
name: "CI"
on:
push:
pull_request:
schedule:
- cron: '00 2 * * *'
workflow_dispatch:
inputs:
release:
description: "Publish Release"
type: boolean
default: false
concurrency:
cancel-in-progress: true
group: ci-${{ github.event.pull_request.number || github.ref }}
permissions:
contents: read
jobs:
build:
name: Build ${{ matrix.mc_version }}
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
mc_version:
- 1.20.5
- 1.21.6
outputs:
version: ${{ steps.resolve_variables.outputs.version }}
steps:
- name: Resolve variables
id: resolve_variables
run: |
MC_VERSION="${{ matrix.mc_version }}"
echo "PROJECT_NAME=v${MC_VERSION//./_}" >> $GITHUB_ENV
echo "OUTPUT_FILE_NAME=bridge_${MC_VERSION//./}.jar" >> $GITHUB_ENV
CALVER_BASE=$(date --utc +"%Y.%m.%d")
SHORT_COMMIT_SHA=$(cut -c1-8 <<< "${{ github.sha }}")
echo "version=$CALVER_BASE-$SHORT_COMMIT_SHA" >> $GITHUB_OUTPUT
- name: Checkout repository
uses: actions/checkout@v5
- name: Setup Java
uses: actions/setup-java@v4
with:
java-version: 24
check-latest: true
distribution: 'zulu'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
env:
GRADLE_BUILD_ACTION_CACHE_KEY_PREFIX: ${{ matrix.mc_version }}/
with:
add-job-summary: always
cache-cleanup: on-success
cache-read-only: ${{ github.ref != 'refs/heads/main' }}
# automatically publishes build scans for the main branch
build-scan-publish: ${{ github.ref == 'refs/heads/main' }}
build-scan-terms-of-use-agree: yes
build-scan-terms-of-use-url: "https://gradle.com/terms-of-service"
- name: Setup Loom cache
uses: actions/cache@v4
with:
path: '.gradle/loom-cache'
restore-keys: ${{ runner.os }}-${{ matrix.mc_version }}-gradle-loom-
key: ${{ runner.os }}-${{ matrix.mc_version }}-gradle-loom-${{ hashFiles('gradle/libs.versions.toml', 'gradle/wrapper/gradle-wrapper.properties') }}
- name: Run build
run: ./gradlew :${{ env.PROJECT_NAME }}:build -Pversion=${{ steps.resolve_variables.outputs.version }} --stacktrace
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
retention-days: 1
name: cloudnet_version_bridge_${{ env.PROJECT_NAME }}
path: ${{ env.PROJECT_NAME }}/build/libs/${{ env.OUTPUT_FILE_NAME }}
merge_jars:
name: Merge jars
needs: build
runs-on: ubuntu-latest
steps:
- name: Download artifacts
uses: actions/download-artifact@v5
with:
path: artifacts/
- name: Flatten artifact folder
run: |
mkdir merged
find artifacts -type f -name "*.jar" -exec cp {} merged/ \;
- name: Upload merged artifact zip
uses: actions/upload-artifact@v4
with:
path: merged/
name: cloudnet_version_bridge_merged
release:
name: Publish release
needs:
- build
- merge_jars
if: ${{ github.event.inputs.release == 'true' }}
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- name: Download artifacts
uses: actions/download-artifact@v5
with:
path: artifacts/
name: cloudnet_version_bridge_merged
- name: Zip artifacts
run: zip -j cloudnet_fabric_version_bridge_all.zip artifacts/*
- name: Publish release
env:
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
GH_PROMPT_DISABLED: true
run: |
gh release create '${{ needs.build.outputs.version }}' cloudnet_fabric_version_bridge_all.zip \
--latest \
--generate-notes \
--fail-on-no-commits \
--target '${{ github.sha }}' \
--title '${{ needs.build.outputs.version }}'