-
Notifications
You must be signed in to change notification settings - Fork 0
94 lines (89 loc) · 3.3 KB
/
master-pull-request-merge-reaction.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
name: Master pull-request merge reaction
on:
pull_request:
types: [closed]
branches:
- 'master'
env:
artifacts_path: ${{ github.workspace }}/Artifacts
zips_path: ${{ github.workspace }}/Zips
jobs:
tag_master_and_sync_dev:
name: Tag master merge commit, FF back to dev
if: github.event.pull_request.merged == true
runs-on: windows-latest
outputs:
new_version: ${{ steps.get-proj-ver.outputs.version }}
target_fp_version: ${{ steps.check_target_fp.outputs.fp_version }}
steps:
- name: Get project version
id: get-proj-ver
uses: oblivioncth/actions/cmake/get-project-version@dev
- name: Set Git user to ObyBotCI
uses: oblivioncth/actions/git/set-git-user-to-oby-bot@dev
- name: Checkout Project
id: proj-checkout
uses: oblivioncth/actions/git/smart-checkout@dev
- name: Get target FP version
id: check_target_fp
working-directory: ${{ steps.proj-checkout.outputs.path }}
env:
match_start: set\(TARGET_FP_VERSION_PREFIX
match_end: \)
run: |
$project_lists = Get-Content -Raw CMakeLists.txt
if(!($project_lists -match '(?<=${{ env.match_start }})(.*)(?=${{ env.match_end }})')){
throw "Could not get target FP version!"
}
$target_version = "v$($Matches[1].Trim())"
echo "fp_version=$target_version" >> $Env:GITHUB_OUTPUT
- name: Tag master with new version tag
uses: oblivioncth/actions/git/tag@dev
with:
tag: 'v${{ steps.get-proj-ver.outputs.version }}'
message: 'Release v${{ steps.get-proj-ver.outputs.version }}'
- name: Move 'latest' tag
uses: oblivioncth/actions/git/move-latest-tag@dev
- name: Fast-forward merge master into to dev
if: always()
uses: oblivioncth/actions/git/merge-branches@dev
with:
source_branch: master
target_branch: dev
ff: only
build_fil_release_windows:
name: Build FIL Release (Windows)
needs: tag_master_and_sync_dev
if: github.event.pull_request.merged == true
uses: ./.github/workflows/build-fil-windows.yml
secrets:
qt_ffynnon_cred: ${{ secrets.OBYBOT_FFYNNON_CREDS }}
create-release:
name: Create GitHub release
needs: [build_fil_release_windows, tag_master_and_sync_dev]
if: github.event.pull_request.merged == true
runs-on: ubuntu-latest
steps:
- name: Download built static FIL artifact (Windows)
uses: actions/download-artifact@v4
with:
path: ${{ env.artifacts_path }}
- name: Zip up release artifacts
shell: pwsh
run: |
$artifact_folders = Get-ChildItem -Directory -Path "${{ env.artifacts_path }}"
foreach($art_dir in $artifact_folders)
{
$name = $art_dir.name
$path = $art_dir.fullname
7z a "${{ env.zips_path }}/${name}.zip" "${path}/*"
}
- name: Generate release
uses: softprops/action-gh-release@v2
with:
name: "FIL Release v${{ needs.tag_master_and_sync_dev.outputs.new_version }} (Targets FP ${{ needs.tag_master_and_sync_dev.outputs.target_fp_version }})"
tag_name: "v${{ needs.tag_master_and_sync_dev.outputs.new_version }}"
fail_on_unmatched_files: true
generate_release_notes: true
files: |
${{ env.zips_path }}/*.zip