-
Notifications
You must be signed in to change notification settings - Fork 20
132 lines (129 loc) · 4.19 KB
/
workflow.yml
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
name: HCCore
on:
push:
branches:
- '*'
tags:
- v*.*.*
- v*.*.*-rc.*
pull_request:
jobs:
validation:
name: "Validate Gradle Wrapper"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: gradle/wrapper-validation-action@v1
build:
if: (!startsWith(github.ref, 'refs/tags/v'))
needs: validation
runs-on: ubuntu-latest
name: Gradle Build
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup Java
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: 17
java-package: jdk
- uses: actions/cache@v3
id: gradle-cache
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/gradle/dependency-locks/*.lockfile') }}
restore-keys: |
- ${{ runner.os }}-gradle-
- uses: actions/cache@v3
id: gradle-wrapper-cache
with:
path: ~/.gradle/wrapper
key: ${{ runner.os }}-gradlewrapper-${{ hashFiles('gradle/wrapper/*') }}
restore-keys: |
- ${{ runner.os }}-gradlewrapper-
- name: Gradle build
run: ./gradlew --build-cache --info --stacktrace build -Prelease.state=dev
- name: Upload jar to build artifacts
uses: actions/upload-artifact@v3
with:
name: built-plugin
path: build/libs/HCCore-Shadow-*.jar
release:
if: startsWith(github.ref, 'refs/tags/v')
needs: validation
runs-on: ubuntu-latest
name: Gradle Build Release
outputs:
release-assets: steps..outputs.assets
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup Java
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: 17
java-package: jdk
- uses: actions/cache@v3
id: gradle-cache
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/gradle/dependency-locks/*.lockfile') }}
restore-keys: |
- ${{ runner.os }}-gradle-
- uses: actions/cache@v3
id: gradle-wrapper-cache
with:
path: ~/.gradle/wrapper
key: ${{ runner.os }}-gradlewrapper-${{ hashFiles('gradle/wrapper/*') }}
restore-keys: |
- ${{ runner.os }}-gradlewrapper-
- name: Publish candidate
if: |
startsWith(github.ref, 'refs/tags/v') &&
contains(github.ref, '-rc.')
run: ./gradlew --build-cache --info --stacktrace -Prelease.useLastTag=true candidate
- name: Publish release
if: |
startsWith(github.ref, 'refs/tags/v') &&
(!contains(github.ref, '-rc.'))
run: ./gradlew --build-cache --info --stacktrace -Prelease.useLastTag=true final
- name: Upload jar to build artifacts
uses: actions/upload-artifact@v3
with:
name: built-plugin
path: build/libs/HCCore-Shadow-*.jar
- name: Release
id: add-gh-release
uses: softprops/action-gh-release@v1
with:
generate_release_notes: ${{ !(contains(github.ref, '-rc.')) }} # full releases only
prerelease: ${{ contains(github.ref, '-rc.') }}
files: "build/libs/HCCore-Shadow-*.jar"
deploy:
if: |
startsWith(github.ref, 'refs/tags/v') &&
(!contains(github.ref, '-rc.'))
needs: release
runs-on: ubuntu-latest
name: Deploy to Production Server
steps:
- name: Download released version
uses: actions/download-artifact@v3
with:
name: built-plugin
- name: SCP Deploy
env:
SSH_PRIVATE_KEY: ${{ secrets.MINECRAFT_DEPLOY_SSH_KEY }}
run: |
echo "$SSH_PRIVATE_KEY" > .ssh_private_key
chmod 700 .ssh_private_key
mkdir -p ~/.ssh/ && touch ~/.ssh/known_hosts
ssh-keyscan mc-admin.hackclub.com >> ~/.ssh/known_hosts
eval $(ssh-agent)
ssh-add - <<< "$SSH_PRIVATE_KEY"
scp -i .ssh_private_key HCCore-Shadow-*.jar [email protected]:/opt/minecraft/plugins/update
rm .ssh_private_key