-
Notifications
You must be signed in to change notification settings - Fork 20
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #16 from merschformann/merschformann/support-aarch…
…64-docker Adds linux/arm64 docker image, bumps to net8, reworks release process
- Loading branch information
Showing
19 changed files
with
212 additions
and
87 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
# Ignore build directories | ||
bin/ | ||
obj/ | ||
|
||
# Ignore some project files | ||
.git/ | ||
.vs/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
name: publish | ||
|
||
on: | ||
workflow_dispatch: | ||
inputs: | ||
VERSION: | ||
description: "The version to release (e.g. 1.0.0)" | ||
required: true | ||
|
||
jobs: | ||
release: | ||
runs-on: ubuntu-latest | ||
env: | ||
VERSION: ${{ inputs.VERSION }} | ||
GH_TOKEN: ${{ github.token }} | ||
SSH_AUTH_SOCK: /tmp/ssh_agent.sock | ||
permissions: | ||
contents: write | ||
steps: | ||
- name: configure git with the bot credentials | ||
run: | | ||
mkdir -p ~/.ssh | ||
ssh-keyscan github.com >> ~/.ssh/known_hosts | ||
ssh-agent -a $SSH_AUTH_SOCK > /dev/null | ||
ssh-add - <<< "${{ secrets.BOT_SSH_KEY }}" | ||
echo "${{ secrets.BOT_SIGNING_KEY }}" > ~/.ssh/signing.key | ||
chmod 600 ~/.ssh/signing.key | ||
git config --global user.name "Merschbotmann" | ||
git config --global user.email "bot.merschformann@gmail.com" | ||
git config --global gpg.format ssh | ||
git config --global user.signingkey ~/.ssh/signing.key | ||
git clone git@github.com:merschformann/sardine-can.git | ||
cd sardine-can | ||
git checkout ${{ github.ref_name }} | ||
git rev-parse --short HEAD | ||
- name: bump version in project | ||
run: | | ||
python Material/Scripts/release.py --version $VERSION | ||
working-directory: ./sardine-can | ||
|
||
- name: commit version bump | ||
run: | | ||
git commit -am "Bumping version to $VERSION" | ||
git push origin ${{ github.ref_name }} | ||
working-directory: ./sardine-can | ||
|
||
- name: push release tag | ||
run: | | ||
git tag $VERSION | ||
git push origin $VERSION | ||
working-directory: ./sardine-can | ||
|
||
- name: create release | ||
run: | | ||
gh release create $VERSION \ | ||
--verify-tag \ | ||
--generate-notes \ | ||
--title $VERSION | ||
working-directory: ./sardine-can | ||
|
||
docker-image: | ||
runs-on: ubuntu-24.04 | ||
needs: release | ||
|
||
steps: | ||
- uses: actions/checkout@v4 | ||
with: | ||
ref: ${{ inputs.VERSION }} | ||
|
||
- name: Set up QEMU | ||
uses: docker/setup-qemu-action@v3 | ||
|
||
- name: Set up Docker Buildx | ||
uses: docker/setup-buildx-action@v3 | ||
|
||
- name: Get version | ||
run: | | ||
echo "VERSION=$(cat VERSION.txt)" >> $GITHUB_ENV | ||
- name: Build the SardineCan Docker image | ||
run: | | ||
echo "Building SardineCan docker in ${{ env.VERSION }}" | ||
echo ${{ secrets.GITHUB_TOKEN }} | docker login ghcr.io -u ${{ github.actor }} --password-stdin | ||
export LATEST_TAG="ghcr.io/merschformann/sardinecan:latest" | ||
export VERSION_TAG="ghcr.io/merschformann/sardinecan:${{ env.VERSION }}" | ||
docker buildx build --platform linux/amd64,linux/arm64 --push -t $LATEST_TAG -t $VERSION_TAG -f Dockerfile .. | ||
working-directory: ./SC.Service |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,90 @@ | ||
import argparse | ||
import glob | ||
import os | ||
import re | ||
import xml.etree.ElementTree as ET | ||
|
||
VERSION_FILE = os.path.join(os.path.dirname(__file__), "..", "..", "VERSION.txt") | ||
|
||
|
||
def parse_args() -> argparse.Namespace: | ||
""" | ||
Parse command line arguments. | ||
""" | ||
parser = argparse.ArgumentParser(description="Bump the version of the project.") | ||
parser.add_argument("--version", required=True, help="The version to bump to.") | ||
return parser.parse_args() | ||
|
||
|
||
def check_version(version: str) -> bool: | ||
""" | ||
Check whether a given version is in expected format and actually newer than the | ||
current version. | ||
""" | ||
if not re.match(r"^\d+\.\d+\.\d+$", version): | ||
raise Exception(f"Version {version} is not in the format x.y.z") | ||
|
||
with open(VERSION_FILE, "r") as f: | ||
current_version = f.read().strip() | ||
|
||
version = version.strip("v") | ||
current_version = current_version.strip("v") | ||
|
||
def parse_version(version: str): | ||
return tuple(map(int, version.split("."))) | ||
|
||
if parse_version(version) <= parse_version(current_version): | ||
raise Exception( | ||
f"New version {version} is not newer than current version {current_version}" | ||
) | ||
|
||
|
||
def bump_version_csproj(csproj_file: str, version: str) -> None: | ||
""" | ||
Bump the version of a csproj file. | ||
""" | ||
try: | ||
tree = ET.parse(csproj_file) | ||
root = tree.getroot() | ||
|
||
bumped = False | ||
for elem in root.iter(): | ||
if elem.tag == "Version": | ||
elem.text = version | ||
bumped = True | ||
|
||
if not bumped: | ||
raise Exception("No version element found") | ||
|
||
tree.write(csproj_file) | ||
except Exception as e: | ||
print(f"Error bumping version in {csproj_file}: {e}") | ||
|
||
|
||
def bump_version_main(version: str) -> None: | ||
""" | ||
Bump the main version file. | ||
""" | ||
with open(VERSION_FILE, "w") as f: | ||
f.write(version) | ||
|
||
|
||
def main() -> None: | ||
args = parse_args() | ||
version = args.version | ||
|
||
check_version(version) | ||
|
||
csproj_files = glob.glob( | ||
os.path.join(os.path.dirname(__file__), "..", "..", "**", "*.csproj"), | ||
recursive=True, | ||
) | ||
for csproj_file in csproj_files: | ||
if "Test" in csproj_file: | ||
continue | ||
bump_version_csproj(csproj_file, version) | ||
bump_version_main(version) | ||
|
||
|
||
if __name__ == "__main__": | ||
main() |
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,22 +1,14 @@ | ||
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging. | ||
|
||
FROM mcr.microsoft.com/dotnet/aspnet:7.0 AS base | ||
WORKDIR /app | ||
EXPOSE 80 | ||
|
||
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build | ||
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:8.0 AS build | ||
WORKDIR /src | ||
COPY ["SC.Service/SC.Service.csproj", "SC.Service/"] | ||
RUN dotnet restore "SC.Service/SC.Service.csproj" | ||
COPY . . | ||
RUN dotnet restore "SC.Service/SC.Service.csproj" | ||
WORKDIR "/src/SC.Service" | ||
RUN dotnet build "SC.Service.csproj" -c Release -o /app/build | ||
|
||
FROM build AS publish | ||
RUN dotnet publish "SC.Service.csproj" -c Release -o /app/publish | ||
|
||
FROM base AS final | ||
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS final | ||
LABEL org.opencontainers.image.source="https://github.com/merschformann/sardine-can" | ||
WORKDIR /app | ||
COPY --from=publish /app/publish . | ||
EXPOSE 80 | ||
COPY --from=build /app/publish . | ||
ENTRYPOINT ["dotnet", "SC.Service.dll"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.