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
|
||||
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__)
|
||||
|
||||
load_dotenv()
|
||||
@@ -96,7 +103,7 @@ def index():
|
||||
has_next = offset + per_page < total
|
||||
now = datetime.now(tz)
|
||||
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'])
|
||||
def add_entry():
|
||||
@@ -153,7 +160,7 @@ def search():
|
||||
page = 1
|
||||
has_prev = 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'])
|
||||
def login():
|
||||
|
||||
@@ -210,12 +210,10 @@
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<footer class="mt-16 py-6 border-t border-gray-800 text-center text-gray-500 text-sm">
|
||||
<span class="mr-1">JDB-NET © {{ now.year }}</span>
|
||||
<footer class="mt-8 py-6 border-t border-gray-800 text-center text-gray-500 text-sm">
|
||||
<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>
|
||||
·
|
||||
<a href="mailto:jamie@jdbnet.co.uk?subject=EchoLog" class="text-gray-500 hover:text-pink-400 hover:underline ml-1">Support</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>
|
||||
</footer>
|
||||
|
||||
<script>
|
||||
|
||||
Reference in New Issue
Block a user