-
-
Notifications
You must be signed in to change notification settings - Fork 0
128 lines (122 loc) · 6.68 KB
/
build-pocket.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
################################################################################
# SPDX-License-Identifier: CC0-1.0
# SPDX-FileType: OTHER
# SPDX-FileCopyrightText: (c) 2022, OpenGateware authors and contributors
################################################################################
name: Build/Release
################################################################################
# How to create a tag to launch the workflow
# git tag -a "0.1.0" -m "Release v0.1.0"
# git push origin --tags
################################################################################
on:
push:
tags:
- "[0-9]+.[0-9]+.[0-9]+"
################################################################################
jobs:
synthesis:
runs-on: ubuntu-latest
env:
CORE: xevious
DISPLAY_NAME: "Namco Xevious"
CATEGORY: arcade
AUTHOR: boogermann
TARGET: pocket
STAGE_FOLDER: staging
RELEASE_FOLDER: release
RECIPE_FOLDER: rom-recipes
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
RAETRO_WEBHOOK: ${{ secrets.RAETRO_WEBHOOK }}
FPGAGAMING_WEBHOOK: ${{ secrets.FPGAGAMING_WEBHOOK }}
steps:
- name: "🧰 Checkout Repository"
uses: actions/checkout@v3
- name: "🏗️ Compile Design"
run: |
docker run --rm -v ${{ github.workspace }}:/build raetro/quartus:pocket \
quartus_sh --flow compile projects/${CORE}_${TARGET}.qpf
- name: "🟦 Staging Files for Release"
if: startsWith(github.ref, 'refs/tags/')
id: stage
run: |
############################################################
# Create Tags
############################################################
VERSION=${GITHUB_REF#refs/*/}
DATE=$(date +'%Y-%m-%d')
CORE_FOLDER=${AUTHOR}.${CORE}
RBF_FILE=${CORE}_${TARGET}.rbf
echo ::set-output name=VERSION::${VERSION}
echo ::set-output name=REPO::${CATEGORY}-${CORE}
echo ::set-output name=TITLE::${DISPLAY_NAME}
echo ::set-output name=RELEASE_FOLDER::${RELEASE_FOLDER}
echo ::set-output name=RELEASE_FILE::${CORE_FOLDER}_${TARGET}-${VERSION}.zip
echo ::set-output name=RECIPE_FILE::${CORE_FOLDER}_rom-recipes-${VERSION}.zip
############################################################
# Clear/Create Folders
############################################################
rm -rf ${STAGE_FOLDER} ${RELEASE_FOLDER}
mkdir -p ${STAGE_FOLDER} ${RELEASE_FOLDER}
############################################################
# Copy Packaging Folder
############################################################
cp -R pkg/${TARGET}/* ${STAGE_FOLDER}
############################################################
# Clear git and png source files
############################################################
find ./${STAGE_FOLDER} -type f \( -name "*.png*" -o -name "*.gitkeep*" \) -delete;
############################################################
# Update core.json Version and Release Date
############################################################
sed -i -e "s/<%- VERSION %>/${VERSION}/g" -e "s/<%- RELEASE_DATE %>/${DATE}/g" ${STAGE_FOLDER}/Cores/${CORE_FOLDER}/core.json
############################################################
# Reverse Bitstream
############################################################
wget https://gist.githubusercontent.com/boogermann/fba1f59c87f9c8c9404cc68878b4eb1a/raw/7e93a3560902e0136dcb29fa6c41d06f06d78fb2/reverse_bits.c
g++ reverse_bits.c -o reverse_bits
./reverse_bits projects/output_files/${RBF_FILE} ${STAGE_FOLDER}/Cores/${CORE_FOLDER}/bitstream.rbf_r
- name: "📦 Create Distribution Files"
if: startsWith(github.ref, 'refs/tags/')
id: zip
run: |
pushd ./${STAGE_FOLDER}
zip -r ../${RELEASE_FOLDER}/${{ steps.stage.outputs.RELEASE_FILE }} .
popd
pushd ./pkg/${RECIPE_FOLDER}
zip -r ../../${RELEASE_FOLDER}/${{ steps.stage.outputs.RECIPE_FILE }} .
popd
- name: "🚀 Create a new GitHub Release"
uses: softprops/action-gh-release@v0.1.14
if: startsWith(github.ref, 'refs/tags/')
with:
name: Release v${{ steps.stage.outputs.VERSION }}
files: |
${{ steps.stage.outputs.RELEASE_FOLDER }}/*
- name: "📢 Send Discord Announcements"
if: startsWith(github.ref, 'refs/tags/')
run: |
declare -a StringArray=("${RAETRO_WEBHOOK}" "${FPGAGAMING_WEBHOOK}")
for webhook_url in ${StringArray[@]}; do
curl \
-H "Content-Type: application/json" \
-d '{
"username": "OpenGateware",
"avatar_url": "https://avatars.githubusercontent.com/u/112050328",
"embeds": [{
"color": 2021216,
"title": "A new core stable release is available for the Pocket",
"thumbnail": { "url": "https://github.com/opengateware/${{ steps.stage.outputs.REPO }}/raw/master/docs/git-social.jpg" },
"fields": [
{ "name": "Title", "value": "[${{ steps.stage.outputs.TITLE }}](https://github.com/opengateware/${{ steps.stage.outputs.REPO }}/)", "inline": true },
{ "name": "Version", "value": "[${{ steps.stage.outputs.VERSION }}](https://github.com/opengateware/${{ steps.stage.outputs.REPO }}/releases/tag/${{ steps.stage.outputs.VERSION }})", "inline": true },
{ "name": "Category", "value": "Arcade" },
{ "name": "Developer", "value": "[Boogermann](https://github.com/boogermann)" },
{ "name": "Download Core", "value": "[${{ steps.stage.outputs.RELEASE_FILE }}](https://github.com/opengateware/${{ steps.stage.outputs.REPO }}/releases/download/${{ steps.stage.outputs.VERSION }}/${{ steps.stage.outputs.RELEASE_FILE }})" },
{ "name": "Download ROM Recipes", "value": "[${{ steps.stage.outputs.RECIPE_FILE }}](https://github.com/opengateware/${{ steps.stage.outputs.REPO }}/releases/download/${{ steps.stage.outputs.VERSION }}/${{ steps.stage.outputs.RECIPE_FILE }})" },
{ "name": "Previous Releases", "value": "[https://github.com/opengateware/${{ steps.stage.outputs.REPO }}/releases](https://github.com/opengateware/${{ steps.stage.outputs.REPO }}/releases)" }
]
}]
}' \
$webhook_url
done