-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
8da9f81
commit 6437b42
Showing
4 changed files
with
175 additions
and
7 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,130 @@ | ||
name: Barista API | ||
|
||
on: | ||
push: | ||
branches: [ "main" ] | ||
paths: | ||
- 'src/Barista/**' | ||
- '.github/workflows/barista-api.yml' | ||
workflow_dispatch: | ||
|
||
env: | ||
PROJECT_NAME: NCafe.Barista.Api | ||
REGISTRY: ghcr.io | ||
IMAGE_NAME: fredimachado/ncafe-barista-api | ||
|
||
defaults: | ||
run: | ||
working-directory: src/Barista/NCafe.Barista.Api | ||
|
||
jobs: | ||
build: | ||
runs-on: ubuntu-latest | ||
|
||
permissions: | ||
contents: read | ||
packages: write | ||
|
||
steps: | ||
|
||
- uses: actions/checkout@v3 | ||
|
||
- name: Setup .NET | ||
uses: actions/setup-dotnet@v3 | ||
with: | ||
dotnet-version: 7.0.x | ||
|
||
- name: Restore dependencies | ||
run: dotnet restore | ||
|
||
- name: Test | ||
run: dotnet test --results-directory ./testresults --logger "trx;LogFileName=test_results.xml" /p:CollectCoverage=true /p:CoverletOutputFormat=opencover /p:CoverletOutput=./testresults/coverage/ ../**.Tests/**.csproj | ||
|
||
- name: Build | ||
run: dotnet build -c Release --no-restore /p:CopyLocalLockFileAssemblies=true | ||
|
||
- name: Publish | ||
run: dotnet publish -c Release --no-restore --no-build -o ./output | ||
|
||
- name: Log in to the Container registry | ||
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 | ||
with: | ||
registry: ${{ env.REGISTRY }} | ||
username: ${{ github.actor }} | ||
password: ${{ secrets.GITHUB_TOKEN }} | ||
|
||
- name: Extract metadata (tags, labels) for Docker | ||
id: meta | ||
uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 | ||
with: | ||
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} | ||
|
||
- name: Build and push Docker image | ||
uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4 | ||
with: | ||
context: src/Barista/NCafe.Barista.Api | ||
push: true | ||
tags: ${{ steps.meta.outputs.tags }} | ||
labels: ${{ steps.meta.outputs.labels }} | ||
|
||
- name: Install Helm | ||
uses: azure/setup-helm@v3 | ||
with: | ||
version: v3.11.1 | ||
|
||
- name: Generate release artifacts | ||
run: | | ||
chmod +x $GITHUB_WORKSPACE/scripts/generate-artifacts | ||
$GITHUB_WORKSPACE/scripts/generate-artifacts -a appspec.yaml -i ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} -t ${{ steps.meta.outputs.version }} -r https://fredimachado.github.io/helm-charts | ||
- name: Archive release artifacts | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
name: release-artifacts | ||
path: src/Barista/NCafe.Barista.Api/deploy/ | ||
|
||
release: | ||
runs-on: self-hosted | ||
needs: build | ||
|
||
env: | ||
ENVIRONMENT: dev | ||
CONNECTIONSTRINGS__EVENTSTORE: ${{ secrets.CONNECTIONSTRINGS__EVENTSTORE }} | ||
CONNECTIONSTRINGS__RABBITMQ: ${{ secrets.CONNECTIONSTRINGS__RABBITMQ }} | ||
NGINX_USER: ${{ secrets.NGINX_USER }} | ||
NGINX_PASSWORD: ${{ secrets.NGINX_PASSWORD }} | ||
|
||
environment: dev | ||
|
||
steps: | ||
|
||
- uses: actions/checkout@v3 | ||
|
||
- name: Download release artifacts | ||
uses: actions/download-artifact@v3 | ||
with: | ||
name: release-artifacts | ||
path: src/Barista/NCafe.Barista.Api/deploy/ | ||
|
||
- uses: jkroepke/setup-helmfile@v1 | ||
with: | ||
version: '0.156.0' | ||
|
||
- name: Deploy to Kubernetes | ||
run: | | ||
helmfile init --force | ||
sed -i "s/[$]namespace[$]/${{ env.ENVIRONMENT }}/g" deploy/helmfile.yaml | ||
echo -e "\e[92mConfiguring kubernetes access in pipeline...\e[0m" | ||
mkdir -p $(pwd)/.kube | ||
echo ${{ secrets.KUBE_CONFIG }} | base64 -d > $(pwd)/.kube/config | ||
export KUBECONFIG=$(pwd)/.kube/config | ||
echo -e "\e[92mDeploying to ${{ env.ENVIRONMENT }} environment...\e[0m" | ||
cd deploy | ||
helmfile --color -e ${{ env.ENVIRONMENT }} apply --set image.imagePullPolicy=Always | ||
- name: Update NGINX Proxy Manager | ||
run: | | ||
chmod +x $GITHUB_WORKSPACE/scripts/update-nginx | ||
app_name=$(sed -nr 's/^name: (.*)\s*/\1/p' appspec.yaml) | ||
export KUBECONFIG=$(pwd)/.kube/config | ||
$GITHUB_WORKSPACE/scripts/update-nginx $app_name ${{ env.ENVIRONMENT }} https://proxymanager.fredi.au/api 80 2 |
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,11 +1,18 @@ | ||
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build | ||
FROM mcr.microsoft.com/dotnet/aspnet:7.0-alpine | ||
WORKDIR /app | ||
COPY . . | ||
RUN dotnet publish src/Barista/NCafe.Barista.Api -c release -o out | ||
EXPOSE 80 | ||
|
||
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false | ||
|
||
RUN apk update && apk add --upgrade apk-tools && apk upgrade --available | ||
RUN apk add --no-cache icu-libs | ||
RUN apk add --no-cache tzdata | ||
|
||
RUN addgroup -S app -g 1000 \ | ||
&& adduser -S app -G app -u 1000 \ | ||
&& mkdir -p /app \ | ||
&& chown -R app:app /app | ||
|
||
FROM mcr.microsoft.com/dotnet/aspnet:6.0 | ||
WORKDIR /app | ||
COPY --from=build /app/out . | ||
ENV ASPNETCORE_URLS http://*:80 | ||
ENV ASPNETCORE_ENVIRONMENT docker | ||
COPY output . | ||
ENTRYPOINT dotnet NCafe.Barista.Api.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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -74,4 +74,6 @@ | |
|
||
app.MapHub<OrderHub>("/orderHub"); | ||
|
||
app.MapGet("/healthz", () => "OK"); | ||
|
||
app.Run(); |
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,29 @@ | ||
name: ncafe-barista-api | ||
|
||
ingress: | ||
enabled: true | ||
hosts: | ||
- host: ncafe-barista-api-dev.fredi.au | ||
paths: | ||
- path: / | ||
pathType: ImplementationSpecific | ||
|
||
resources: | ||
requests: | ||
cpu: 200m | ||
memory: 256Mi | ||
limits: | ||
cpu: 350m | ||
memory: 512Mi | ||
|
||
environment: | ||
- name: ConnectionStrings__EventStore | ||
valueFromSecret: EventStoreConnectionString | ||
- name: ConnectionStrings__RabbitMq | ||
valueFromSecret: RabbitMqConnectionString | ||
|
||
secrets: | ||
EventStoreConnectionString: "{{CONNECTIONSTRINGS__EVENTSTORE}}" | ||
RabbitMqConnectionString: "{{CONNECTIONSTRINGS__RABBITMQ}}" | ||
|
||
replicaCount: 1 |