Skip to content

Commit

Permalink
bundled for productions
Browse files Browse the repository at this point in the history
  • Loading branch information
Xanonymous-GitHub committed Dec 4, 2021
1 parent a8e3d6b commit 779d867
Show file tree
Hide file tree
Showing 9 changed files with 49 additions and 37 deletions.
39 changes: 10 additions & 29 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -1,38 +1,19 @@
name: deply to server
name: SonarQube
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]

jobs:
deploy:
name: deploy
build:
name: Scan
runs-on: ubuntu-latest
steps:
- name: executing remote ssh commands using ssh key
uses: appleboy/ssh-action@master
env:
PUBKEY: ${{ secrets.SSL_CERT }}
PRIKEY: ${{ secrets.SSL_KEY }}
- uses: actions/checkout@v2
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USER }}
key: ${{ secrets.PRIVATE_KEY }}
port: ${{ secrets.PORT }}
envs: PUBKEY,PRIKEY
script_stop: true
script: |
sudo pm2 kill
sudo pkill flask || echo 'killed'
sudo rm -rf ./hey-ptt
git clone https://github.com/NPC-GO/hey-ptt.git
cd hey-ptt || exit
sudo rm -rf ./git
pip3 install -r requirements.txt
export FLASK_APP=app.py
mkdir certs
touch ./certs/server.pub
touch ./certs/server.key
echo "$PUBKEY" >> ./certs/server.pub
echo "$PRIKEY" >> ./certs/server.key
pm2 start -i max
fetch-depth: 0
- uses: sonarsource/sonarqube-scan-action@master
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }}
15 changes: 15 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
FROM python:alpine

ARG PORT=7777

ENV PORT=$PORT

COPY . /heyptt

WORKDIR /heyptt

RUN pip3 install -r ./requirements.txt --upgrade

EXPOSE $PORT

CMD ["python3", "serve.py"]
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
# Hey-PTT

<p align="center">
<a href="https://ptt.npc-go.com" target="_blank">
<img alt="Hey_Ptt_Logo Logo" width="256px" src="https://i.imgur.com/dLHhTGV.png">
</a>
</p>

<h1 align="center">Hey-PTT</h1>

![deply to server](https://github.com/NPC-GO/hey-ptt/workflows/deply%20to%20server/badge.svg)
[![CodeFactor](https://www.codefactor.io/repository/github/npc-go/hey-ptt/badge)](https://www.codefactor.io/repository/github/npc-go/hey-ptt)

[Try it Now!](https://ptt.xcc.tw)

## Contributors:
- [Xanonymous](https://github.com/Xanonymous-GitHub)
- **Project Manager**.
Expand Down
3 changes: 1 addition & 2 deletions app.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,5 @@ def article_ids():
def get_boards():
return cra.get_popular_boards()


if __name__ == '__main__':
app.run(port=443, debug=False)
app.run()
10 changes: 10 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
version: '3'

services:
heyptt:
build:
context: .
dockerfile: ./Dockerfile
ports:
- '7777:7777'
restart: unless-stopped
3 changes: 2 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
bs4
requests
flask
flask
waitress
5 changes: 5 additions & 0 deletions serve.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
from waitress import serve
import app
import os

serve(app.app, host='0.0.0.0', port=os.environ['PORT'])
1 change: 1 addition & 0 deletions sonar-project.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
sonar.projectKey=Hey-PTT
4 changes: 2 additions & 2 deletions website/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,9 @@ <h1 class="title-text"></h1>
<p id="loading-text">載入中</p>
</div>
<div id="footer">
Copyright © 2020 <span><img
Copyright © 2021 <span><img
alt
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAOZlWElmTU0AKgAAAAgABgESAAMAAAABAAEAAAEaAAUAAAABAAAAVgEbAAUAAAABAAAAXgExAAIAAAAiAAAAZgEyAAIAAAAUAAAAiIdpAAQAAAABAAAAnAAAAAAAAAeAAAAAAQAAB4AAAAABQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpADIwMjA6MDQ6MDUgMDE6Mzg6NTkAAASQBAACAAAAFAAAANKgAQADAAAAAQABAACgAgAEAAAAAQAAACCgAwAEAAAAAQAAACAAAAAAMjAxOTowNjowMiAxNzowMDoxOQB3c7+/AAAACXBIWXMAASdHAAEnRwEEDsU+AAAK3GlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgICAgICAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjkzMTdkZDU1LWRmNjEtNDhjZi1iYjE0LWRlZTZkZGU3MTI3MzwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjJlNDM4ZmQzLWIzYjUtNTk0NS1iMmE3LTRkMzU2OGIxYWY2ZDwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjhjYmZhMTVkLTA4ODgtMTI0Ni05YWFhLTNiNDYyMzUxNjY5NzwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxOCAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTktMDYtMDJUMTc6MDA6MTkrMDg6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6OGNiZmExNWQtMDg4OC0xMjQ2LTlhYWEtM2I0NjIzNTE2Njk3PC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgMjEuMSAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAyMC0wMy0wM1QwMDo0MTo0MyswODowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo2MTIzMWY4Zi1hMDNhLTQ5NjEtOTIxNS0zMDNlOTA0ZTkyMzM8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgMjEuMSAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAyMC0wNC0wNVQwMTozODo1OSswODowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo5MzE3ZGQ1NS1kZjYxLTQ4Y2YtYmIxNC1kZWU2ZGRlNzEyNzM8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAyMC0wNC0wNVQwMTozODo1OSswODowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4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"></span>N.P.C.GO
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAOZlWElmTU0AKgAAAAgABgESAAMAAAABAAEAAAEaAAUAAAABAAAAVgEbAAUAAAABAAAAXgExAAIAAAAiAAAAZgEyAAIAAAAUAAAAiIdpAAQAAAABAAAAnAAAAAAAAAeAAAAAAQAAB4AAAAABQWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpADIwMjA6MDQ6MDUgMDE6Mzg6NTkAAASQBAACAAAAFAAAANKgAQADAAAAAQABAACgAgAEAAAAAQAAACCgAwAEAAAAAQAAACAAAAAAMjAxOTowNjowMiAxNzowMDoxOQB3c7+/AAAACXBIWXMAASdHAAEnRwEEDsU+AAAK3GlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgICAgICAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjkzMTdkZDU1LWRmNjEtNDhjZi1iYjE0LWRlZTZkZGU3MTI3MzwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjJlNDM4ZmQzLWIzYjUtNTk0NS1iMmE3LTRkMzU2OGIxYWY2ZDwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjhjYmZhMTVkLTA4ODgtMTI0Ni05YWFhLTNiNDYyMzUxNjY5NzwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxOCAoV2luZG93cyk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTktMDYtMDJUMTc6MDA6MTkrMDg6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6OGNiZmExNWQtMDg4OC0xMjQ2LTlhYWEtM2I0NjIzNTE2Njk3PC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgMjEuMSAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAyMC0wMy0wM1QwMDo0MTo0MyswODowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo2MTIzMWY4Zi1hMDNhLTQ5NjEtOTIxNS0zMDNlOTA0ZTkyMzM8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBQaG90b3Nob3AgMjEuMSAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAyMC0wNC0wNVQwMTozODo1OSswODowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo5MzE3ZGQ1NS1kZjYxLTQ4Y2YtYmIxNC1kZWU2ZGRlNzEyNzM8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAyMC0wNC0wNVQwMTozODo1OSswODowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTggKFdpbmRvd3MpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4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"></span>N.P.C.
<span>
<a href="https://github.com/NPC-GO/hey-ptt" target="_blank">
<svg aria-hidden="true" class="octicon octicon-mark-github v-align-middle" height="15px"
Expand Down

0 comments on commit 779d867

Please sign in to comment.