From 7967de66f9a36d9c30b5a14330bca5137a95d04f Mon Sep 17 00:00:00 2001 From: jjstratton Date: Thu, 10 Oct 2024 11:15:50 -0700 Subject: [PATCH] common images and pipelines --- .github/workflows/build-push-common.yml | 65 +++++++++++++++++++ .../workflows/build-push-commonconstants.yml | 65 +++++++++++++++++++ .github/workflows/build-push-commonmodels.yml | 65 +++++++++++++++++++ backend/Dockerfile.Common | 38 +++++++++++ backend/Dockerfile.CommonConstants | 37 +++++++++++ backend/Dockerfile.CommonModels | 37 +++++++++++ 6 files changed, 307 insertions(+) create mode 100644 .github/workflows/build-push-common.yml create mode 100644 .github/workflows/build-push-commonconstants.yml create mode 100644 .github/workflows/build-push-commonmodels.yml create mode 100644 backend/Dockerfile.Common create mode 100644 backend/Dockerfile.CommonConstants create mode 100644 backend/Dockerfile.CommonModels diff --git a/.github/workflows/build-push-common.yml b/.github/workflows/build-push-common.yml new file mode 100644 index 00000000..ba0c180c --- /dev/null +++ b/.github/workflows/build-push-common.yml @@ -0,0 +1,65 @@ +name: diam-common + +on: + push: + branches: [jess-admin-tool] + paths: + - "backend/common/**" + - ".github/workflows/build-push-common.yml" + workflow_dispatch: +env: + IMAGE_NAME: common + WORKING_DIRECTORY: ./backend + BRANCH_NAME: develop + VALUES_FILE: dev + +jobs: + build: + runs-on: ubuntu-latest + + + if: github.event_name == 'push' + + steps: + - uses: actions/checkout@v4 + + - name: Set environment for branch + run: | + if [[ ${{ github.ref_name }} == 'main' ]]; then + echo "BRANCH_NAME=main" >> "$GITHUB_ENV" + echo "VALUES_FILE=prod" >> "$GITHUB_ENV" + fi + + if [[ ${{ github.ref_name }} == 'test' ]]; then + echo "BRANCH_NAME=test" >> "$GITHUB_ENV" + echo "VALUES_FILE=test" >> "$GITHUB_ENV" + fi + + if [[ ${{ github.ref_name }} == 'develop' ]]; then + echo "BRANCH_NAME=develop" >> "$GITHUB_ENV" + echo "VALUES_FILE=dev" >> "$GITHUB_ENV" + fi + + - name: Extract branch name + shell: bash + run: echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT + id: extract_branch + + - name: Branch name + run: echo running on branch ${GITHUB_REF##*/} + + - name: Login to Artifactory + uses: docker/login-action@v1 + with: + registry: artifacts.developer.gov.bc.ca + username: ${{ secrets.ARTIFACTORY_USERNAME }} + password: ${{ secrets.ARTIFACTORY_PASSWORD }} + + - name: Build Image + working-directory: ${{env.WORKING_DIRECTORY}} + run: | + docker build -t artifacts.developer.gov.bc.ca/de27-common/${{env.IMAGE_NAME}}:${GITHUB_REF##*/} -f Dockerfile.Common . + + - name: Docker Push to Artifactory + run: | + docker push artifacts.developer.gov.bc.ca/de27-common/${{env.IMAGE_NAME}}:${GITHUB_REF##*/} diff --git a/.github/workflows/build-push-commonconstants.yml b/.github/workflows/build-push-commonconstants.yml new file mode 100644 index 00000000..05f93671 --- /dev/null +++ b/.github/workflows/build-push-commonconstants.yml @@ -0,0 +1,65 @@ +name: diam-commonconstants + +on: + push: + branches: [jess-admin-tool] + paths: + - "backend/commonconstants/**" + - ".github/workflows/build-push-commonconstants.yml" + workflow_dispatch: +env: + IMAGE_NAME: commonconstants + WORKING_DIRECTORY: ./backend + BRANCH_NAME: develop + VALUES_FILE: dev + +jobs: + build: + runs-on: ubuntu-latest + + + if: github.event_name == 'push' + + steps: + - uses: actions/checkout@v4 + + - name: Set environment for branch + run: | + if [[ ${{ github.ref_name }} == 'main' ]]; then + echo "BRANCH_NAME=main" >> "$GITHUB_ENV" + echo "VALUES_FILE=prod" >> "$GITHUB_ENV" + fi + + if [[ ${{ github.ref_name }} == 'test' ]]; then + echo "BRANCH_NAME=test" >> "$GITHUB_ENV" + echo "VALUES_FILE=test" >> "$GITHUB_ENV" + fi + + if [[ ${{ github.ref_name }} == 'develop' ]]; then + echo "BRANCH_NAME=develop" >> "$GITHUB_ENV" + echo "VALUES_FILE=dev" >> "$GITHUB_ENV" + fi + + - name: Extract branch name + shell: bash + run: echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT + id: extract_branch + + - name: Branch name + run: echo running on branch ${GITHUB_REF##*/} + + - name: Login to Artifactory + uses: docker/login-action@v1 + with: + registry: artifacts.developer.gov.bc.ca + username: ${{ secrets.ARTIFACTORY_USERNAME }} + password: ${{ secrets.ARTIFACTORY_PASSWORD }} + + - name: Build Image + working-directory: ${{env.WORKING_DIRECTORY}} + run: | + docker build -t artifacts.developer.gov.bc.ca/de27-common/${{env.IMAGE_NAME}}:${GITHUB_REF##*/} -f Dockerfile.CommonConstants . + + - name: Docker Push to Artifactory + run: | + docker push artifacts.developer.gov.bc.ca/de27-common/${{env.IMAGE_NAME}}:${GITHUB_REF##*/} diff --git a/.github/workflows/build-push-commonmodels.yml b/.github/workflows/build-push-commonmodels.yml new file mode 100644 index 00000000..8bb1e9bd --- /dev/null +++ b/.github/workflows/build-push-commonmodels.yml @@ -0,0 +1,65 @@ +name: diam-commonmodels + +on: + push: + branches: [jess-admin-tool] + paths: + - "backend/commonmodels/**" + - ".github/workflows/build-push-commonmodels.yml" + workflow_dispatch: +env: + IMAGE_NAME: commonmodels + WORKING_DIRECTORY: ./backend + BRANCH_NAME: develop + VALUES_FILE: dev + +jobs: + build: + runs-on: ubuntu-latest + + + if: github.event_name == 'push' + + steps: + - uses: actions/checkout@v4 + + - name: Set environment for branch + run: | + if [[ ${{ github.ref_name }} == 'main' ]]; then + echo "BRANCH_NAME=main" >> "$GITHUB_ENV" + echo "VALUES_FILE=prod" >> "$GITHUB_ENV" + fi + + if [[ ${{ github.ref_name }} == 'test' ]]; then + echo "BRANCH_NAME=test" >> "$GITHUB_ENV" + echo "VALUES_FILE=test" >> "$GITHUB_ENV" + fi + + if [[ ${{ github.ref_name }} == 'develop' ]]; then + echo "BRANCH_NAME=develop" >> "$GITHUB_ENV" + echo "VALUES_FILE=dev" >> "$GITHUB_ENV" + fi + + - name: Extract branch name + shell: bash + run: echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT + id: extract_branch + + - name: Branch name + run: echo running on branch ${GITHUB_REF##*/} + + - name: Login to Artifactory + uses: docker/login-action@v1 + with: + registry: artifacts.developer.gov.bc.ca + username: ${{ secrets.ARTIFACTORY_USERNAME }} + password: ${{ secrets.ARTIFACTORY_PASSWORD }} + + - name: Build Image + working-directory: ${{env.WORKING_DIRECTORY}} + run: | + docker build -t artifacts.developer.gov.bc.ca/de27-common/${{env.IMAGE_NAME}}:${GITHUB_REF##*/} -f Dockerfile.CommonModels . + + - name: Docker Push to Artifactory + run: | + docker push artifacts.developer.gov.bc.ca/de27-common/${{env.IMAGE_NAME}}:${GITHUB_REF##*/} diff --git a/backend/Dockerfile.Common b/backend/Dockerfile.Common new file mode 100644 index 00000000..b907cb60 --- /dev/null +++ b/backend/Dockerfile.Common @@ -0,0 +1,38 @@ +#------------------------------------------------------------------------------------ +# WebAPI service Dockerfile +#------------------------------------------------------------------------------------ + + FROM mcr.microsoft.com/dotnet/aspnet:8.0-alpine AS base + WORKDIR /app + EXPOSE 8080 + ENV ASPNETCORE_URLS=http://*:8080 + ENV ASPNETCORE_ENVIRONMENT="Production" + ENV \ + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1 \ + LC_ALL=en_US.UTF-8 \ + LANG=en_US.UTF-8 + + RUN apk add --no-cache icu-libs + RUN apk add bash + + FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build + + WORKDIR /src + COPY ["common/Common.csproj", "common/Common.csproj"] + COPY ["CommonConstants/CommonConstants.csproj", "CommonConstants/CommonConstants.csproj"] + RUN dotnet restore -r linux-musl-x64 "common/Common.csproj" + COPY . . + RUN dotnet build -r linux-musl-x64 "common/Common.csproj" -c Release -o /app/build + + FROM build AS publish + RUN dotnet publish -r linux-musl-x64 "common/Common.csproj" -c Release -o /app/publish + USER root + + FROM base AS final + WORKDIR /app + COPY --from=publish /app/publish . + + USER 1001 + + ENTRYPOINT ["dotnet", "Common.dll"] + \ No newline at end of file diff --git a/backend/Dockerfile.CommonConstants b/backend/Dockerfile.CommonConstants new file mode 100644 index 00000000..6ba84ce8 --- /dev/null +++ b/backend/Dockerfile.CommonConstants @@ -0,0 +1,37 @@ +#------------------------------------------------------------------------------------ +# WebAPI service Dockerfile +#------------------------------------------------------------------------------------ + + FROM mcr.microsoft.com/dotnet/aspnet:8.0-alpine AS base + WORKDIR /app + EXPOSE 8080 + ENV ASPNETCORE_URLS=http://*:8080 + ENV ASPNETCORE_ENVIRONMENT="Production" + ENV \ + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1 \ + LC_ALL=en_US.UTF-8 \ + LANG=en_US.UTF-8 + + RUN apk add --no-cache icu-libs + RUN apk add bash + + FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build + + WORKDIR /src + COPY ["CommonConstants/CommonConstants.csproj", "CommonConstants/CommonConstants.csproj"] + RUN dotnet restore -r linux-musl-x64 "CommonConstants/CommonConstants.csproj" + COPY . . + RUN dotnet build -r linux-musl-x64 "CommonConstants/CommonConstants.csproj" -c Release -o /app/build + + FROM build AS publish + RUN dotnet publish -r linux-musl-x64 "CommonConstants/CommonConstants.csproj" -c Release -o /app/publish + USER root + + FROM base AS final + WORKDIR /app + COPY --from=publish /app/publish . + + USER 1001 + + ENTRYPOINT ["dotnet", "CommonConstants.dll"] + \ No newline at end of file diff --git a/backend/Dockerfile.CommonModels b/backend/Dockerfile.CommonModels new file mode 100644 index 00000000..f6afcae0 --- /dev/null +++ b/backend/Dockerfile.CommonModels @@ -0,0 +1,37 @@ +#------------------------------------------------------------------------------------ +# WebAPI service Dockerfile +#------------------------------------------------------------------------------------ + + FROM mcr.microsoft.com/dotnet/aspnet:8.0-alpine AS base + WORKDIR /app + EXPOSE 8080 + ENV ASPNETCORE_URLS=http://*:8080 + ENV ASPNETCORE_ENVIRONMENT="Production" + ENV \ + DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1 \ + LC_ALL=en_US.UTF-8 \ + LANG=en_US.UTF-8 + + RUN apk add --no-cache icu-libs + RUN apk add bash + + FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build + + WORKDIR /src + COPY ["CommonModels/CommonModels.csproj", "CommonModels/CommonModels.csproj"] + RUN dotnet restore -r linux-musl-x64 "CommonModels/CommonModels.csproj" + COPY . . + RUN dotnet build -r linux-musl-x64 "CommonModels/CommonModels.csproj" -c Release -o /app/build + + FROM build AS publish + RUN dotnet publish -r linux-musl-x64 "CommonModels/CommonModels.csproj" -c Release -o /app/publish + USER root + + FROM base AS final + WORKDIR /app + COPY --from=publish /app/publish . + + USER 1001 + + ENTRYPOINT ["dotnet", "CommonModels.dll"] + \ No newline at end of file