feat: ✨ add release please
This commit is contained in:
@@ -0,0 +1,72 @@
|
|||||||
|
name: Release Please
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
pull-requests: write
|
||||||
|
packages: write
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
release-please:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
release_created: ${{ steps.release.outputs.release_created }}
|
||||||
|
steps:
|
||||||
|
- uses: googleapis/release-please-action@v4
|
||||||
|
id: release
|
||||||
|
with:
|
||||||
|
manifest-file: .release-please-manifest.json
|
||||||
|
config-file: .release-please-config.json
|
||||||
|
|
||||||
|
- name: Checkout
|
||||||
|
if: ${{ steps.release.outputs.release_created }}
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
if: ${{ steps.release.outputs.release_created }}
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
- name: Log in to GitHub Container Registry
|
||||||
|
if: ${{ steps.release.outputs.release_created }}
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: ghcr.io
|
||||||
|
username: ${{ github.actor }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Read version
|
||||||
|
if: ${{ steps.release.outputs.release_created }}
|
||||||
|
id: version
|
||||||
|
run: |
|
||||||
|
VERSION=$(cat VERSION)
|
||||||
|
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
||||||
|
echo "VERSION=$VERSION" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Build and push Docker image
|
||||||
|
if: ${{ steps.release.outputs.release_created }}
|
||||||
|
uses: docker/build-push-action@v6
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
push: true
|
||||||
|
tags: |
|
||||||
|
ghcr.io/jdb-net/echolog:${{ env.VERSION }}
|
||||||
|
ghcr.io/jdb-net/echolog:latest
|
||||||
|
build-args: |
|
||||||
|
VERSION=${{ env.VERSION }}
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
name: Deploy to Kubernetes
|
||||||
|
needs: release-please
|
||||||
|
if: ${{ needs.release-please.outputs.release_created }}
|
||||||
|
runs-on: [ k3s-lan-01 ]
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Apply manifests
|
||||||
|
run: |
|
||||||
|
sudo kubectl replace -f deployment.yml --grace-period=60 --force
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
stages:
|
|
||||||
- buildandpush
|
|
||||||
- deploy
|
|
||||||
|
|
||||||
variables:
|
|
||||||
IMAGE_NAME: "$HARBOR_REGISTRY/public/echolog"
|
|
||||||
|
|
||||||
buildandpush:
|
|
||||||
stage: buildandpush
|
|
||||||
image: docker:latest
|
|
||||||
tags:
|
|
||||||
- docker
|
|
||||||
script:
|
|
||||||
- echo "$HARBOR_PASSWORD" | docker login $HARBOR_REGISTRY -u "$HARBOR_USERNAME" --password-stdin
|
|
||||||
- docker build -t $IMAGE_NAME:$IMAGE_TAG .
|
|
||||||
- docker tag $IMAGE_NAME:$IMAGE_TAG $IMAGE_NAME:latest
|
|
||||||
- docker push $IMAGE_NAME:$IMAGE_TAG
|
|
||||||
- docker push $IMAGE_NAME:latest
|
|
||||||
|
|
||||||
deploy:
|
|
||||||
stage: deploy
|
|
||||||
tags:
|
|
||||||
- k3s-lan-01
|
|
||||||
script:
|
|
||||||
- sudo kubectl replace -f deployment.yml --grace-period=60 --force
|
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"packages": {
|
||||||
|
".": {
|
||||||
|
"release-type": "simple",
|
||||||
|
"version-file": "VERSION"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"$schema": "https://raw.githubusercontent.com/googleapis/release-please/main/schemas/config.json"
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
".": "1.0.0"
|
||||||
|
}
|
||||||
@@ -6,6 +6,13 @@ from datetime import datetime, date as datedate, datetime as dt
|
|||||||
import mysql.connector
|
import mysql.connector
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
|
# Read version from VERSION file
|
||||||
|
try:
|
||||||
|
with open('VERSION', 'r') as f:
|
||||||
|
__version__ = f.read().strip()
|
||||||
|
except FileNotFoundError:
|
||||||
|
__version__ = 'unknown'
|
||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
|
|
||||||
load_dotenv()
|
load_dotenv()
|
||||||
@@ -96,7 +103,7 @@ def index():
|
|||||||
has_next = offset + per_page < total
|
has_next = offset + per_page < total
|
||||||
now = datetime.now(tz)
|
now = datetime.now(tz)
|
||||||
streak = calculate_streak()
|
streak = calculate_streak()
|
||||||
return render_template('index.html', entries=entries, today=today, page=page, has_prev=has_prev, has_next=has_next, now=now, todays_entry=todays_entry, streak=streak)
|
return render_template('index.html', entries=entries, today=today, page=page, has_prev=has_prev, has_next=has_next, now=now, todays_entry=todays_entry, streak=streak, version=__version__)
|
||||||
|
|
||||||
@app.route('/add', methods=['POST'])
|
@app.route('/add', methods=['POST'])
|
||||||
def add_entry():
|
def add_entry():
|
||||||
@@ -153,7 +160,7 @@ def search():
|
|||||||
page = 1
|
page = 1
|
||||||
has_prev = False
|
has_prev = False
|
||||||
has_next = False
|
has_next = False
|
||||||
return render_template('index.html', entries=entries, today=today, now=now, page=page, has_prev=has_prev, has_next=has_next)
|
return render_template('index.html', entries=entries, today=today, now=now, page=page, has_prev=has_prev, has_next=has_next, version=__version__)
|
||||||
|
|
||||||
@app.route('/login', methods=['GET', 'POST'])
|
@app.route('/login', methods=['GET', 'POST'])
|
||||||
def login():
|
def login():
|
||||||
|
|||||||
@@ -210,12 +210,10 @@
|
|||||||
</section>
|
</section>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<footer class="mt-16 py-6 border-t border-gray-800 text-center text-gray-500 text-sm">
|
<footer class="mt-8 py-6 border-t border-gray-800 text-center text-gray-500 text-sm">
|
||||||
<span class="mr-1">JDB-NET © {{ now.year }}</span>
|
<span class="mr-1"><a href="https://www.jdbnet.co.uk" target="_blank" rel="noopener" class="text-gray-500 hover:text-pink-400 hover:underline mx-1">JDB-NET</a> © {{ now.year }}</span>
|
||||||
·
|
·
|
||||||
<a href="https://projects.jdbnet.co.uk/echolog" target="_blank" rel="noopener" class="text-gray-500 hover:text-pink-400 hover:underline mx-1">Docs</a>
|
<span class="mx-1"><a href="https://github.com/JDB-NET/echolog" target="_blank" rel="noopener" class="text-gray-500 hover:text-pink-400 hover:underline mx-1">v{{ version }}</a></span>
|
||||||
·
|
|
||||||
<a href="mailto:jamie@jdbnet.co.uk?subject=EchoLog" class="text-gray-500 hover:text-pink-400 hover:underline ml-1">Support</a>
|
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|||||||
Reference in New Issue
Block a user