mirror of
https://github.com/bitwarden/server
synced 2025-12-26 13:13:24 +00:00
Bitwarden Unified Self-Host project (#2410)
This commit is contained in:
135
.github/workflows/build.yml
vendored
135
.github/workflows/build.yml
vendored
@@ -9,12 +9,11 @@ on:
|
||||
paths-ignore:
|
||||
- ".github/workflows/**"
|
||||
workflow_dispatch:
|
||||
inputs: {}
|
||||
|
||||
jobs:
|
||||
cloc:
|
||||
name: CLOC
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b
|
||||
@@ -29,7 +28,7 @@ jobs:
|
||||
|
||||
lint:
|
||||
name: Lint
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Checkout repo
|
||||
uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846
|
||||
@@ -83,7 +82,7 @@ jobs:
|
||||
|
||||
build-artifacts:
|
||||
name: Build artifacts
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
needs:
|
||||
- testing
|
||||
- lint
|
||||
@@ -91,31 +90,31 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- service_name: Admin
|
||||
- project_name: Admin
|
||||
base_path: ./src
|
||||
node: true
|
||||
- service_name: Api
|
||||
- project_name: Api
|
||||
base_path: ./src
|
||||
- service_name: Billing
|
||||
- project_name: Billing
|
||||
base_path: ./src
|
||||
- service_name: Events
|
||||
- project_name: Events
|
||||
base_path: ./src
|
||||
- service_name: EventsProcessor
|
||||
- project_name: EventsProcessor
|
||||
base_path: ./src
|
||||
- service_name: Icons
|
||||
- project_name: Icons
|
||||
base_path: ./src
|
||||
- service_name: Identity
|
||||
- project_name: Identity
|
||||
base_path: ./src
|
||||
- service_name: Notifications
|
||||
- project_name: Notifications
|
||||
base_path: ./src
|
||||
- service_name: Server
|
||||
- project_name: Server
|
||||
base_path: ./util
|
||||
- service_name: Setup
|
||||
- project_name: Setup
|
||||
base_path: ./util
|
||||
- service_name: Sso
|
||||
- project_name: Sso
|
||||
base_path: ./bitwarden_license/src
|
||||
node: true
|
||||
- service_name: Scim
|
||||
- project_name: Scim
|
||||
base_path: ./bitwarden_license/src
|
||||
dotnet: true
|
||||
steps:
|
||||
@@ -138,8 +137,8 @@ jobs:
|
||||
echo "GitHub ref: $GITHUB_REF"
|
||||
echo "GitHub event: $GITHUB_EVENT"
|
||||
|
||||
- name: Restore/Clean service
|
||||
working-directory: ${{ matrix.base_path }}/${{ matrix.service_name }}
|
||||
- name: Restore/Clean project
|
||||
working-directory: ${{ matrix.base_path }}/${{ matrix.project_name }}
|
||||
run: |
|
||||
echo "Restore"
|
||||
dotnet restore
|
||||
@@ -148,92 +147,89 @@ jobs:
|
||||
|
||||
- name: Build node
|
||||
if: ${{ matrix.node }}
|
||||
working-directory: ${{ matrix.base_path }}/${{ matrix.service_name }}
|
||||
working-directory: ${{ matrix.base_path }}/${{ matrix.project_name }}
|
||||
run: |
|
||||
npm ci
|
||||
npm run build
|
||||
|
||||
- name: Publish service
|
||||
working-directory: ${{ matrix.base_path }}/${{ matrix.service_name }}
|
||||
- name: Publish project
|
||||
working-directory: ${{ matrix.base_path }}/${{ matrix.project_name }}
|
||||
run: |
|
||||
echo "Publish"
|
||||
dotnet publish -c "Release" -o obj/build-output/publish
|
||||
|
||||
cd obj/build-output/publish
|
||||
zip -r ${{ matrix.service_name }}.zip .
|
||||
mv ${{ matrix.service_name }}.zip ../../../
|
||||
zip -r ${{ matrix.project_name }}.zip .
|
||||
mv ${{ matrix.project_name }}.zip ../../../
|
||||
|
||||
pwd
|
||||
ls -atlh ../../../
|
||||
|
||||
- name: Upload service artifact
|
||||
- name: Upload project artifact
|
||||
uses: actions/upload-artifact@6673cd052c4cd6fcf4b4e6e60ea986c889389535
|
||||
with:
|
||||
name: ${{ matrix.service_name }}.zip
|
||||
path: ${{ matrix.base_path }}/${{ matrix.service_name }}/${{ matrix.service_name }}.zip
|
||||
name: ${{ matrix.project_name }}.zip
|
||||
path: ${{ matrix.base_path }}/${{ matrix.project_name }}/${{ matrix.project_name }}.zip
|
||||
if-no-files-found: error
|
||||
|
||||
build-docker:
|
||||
name: Build Docker images
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
needs: build-artifacts
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- service_name: Admin
|
||||
- project_name: Admin
|
||||
base_path: ./src
|
||||
docker_repos: [bitwarden, bitwardenqa.azurecr.io]
|
||||
dotnet: true
|
||||
- service_name: Api
|
||||
- project_name: Api
|
||||
base_path: ./src
|
||||
docker_repos: [bitwarden, bitwardenqa.azurecr.io]
|
||||
dotnet: true
|
||||
- service_name: Attachments
|
||||
- project_name: Attachments
|
||||
base_path: ./util
|
||||
docker_repos: [bitwarden, bitwardenqa.azurecr.io]
|
||||
- service_name: Events
|
||||
- project_name: Events
|
||||
base_path: ./src
|
||||
docker_repos: [bitwarden, bitwardenqa.azurecr.io]
|
||||
dotnet: true
|
||||
- service_name: EventsProcessor
|
||||
- project_name: EventsProcessor
|
||||
base_path: ./src
|
||||
docker_repos: [bitwardenqa.azurecr.io]
|
||||
dotnet: true
|
||||
- service_name: Icons
|
||||
- project_name: Icons
|
||||
base_path: ./src
|
||||
docker_repos: [bitwarden, bitwardenqa.azurecr.io]
|
||||
dotnet: true
|
||||
- service_name: Identity
|
||||
- project_name: Identity
|
||||
base_path: ./src
|
||||
docker_repos: [bitwarden, bitwardenqa.azurecr.io]
|
||||
dotnet: true
|
||||
- service_name: K8S-Proxy
|
||||
- project_name: MsSql
|
||||
base_path: ./util
|
||||
docker_repos: [bitwarden, bitwardenqa.azurecr.io]
|
||||
- service_name: MsSql
|
||||
- project_name: Nginx
|
||||
base_path: ./util
|
||||
docker_repos: [bitwarden, bitwardenqa.azurecr.io]
|
||||
- service_name: Nginx
|
||||
base_path: ./util
|
||||
docker_repos: [bitwarden, bitwardenqa.azurecr.io]
|
||||
- service_name: Notifications
|
||||
- project_name: Notifications
|
||||
base_path: ./src
|
||||
docker_repos: [bitwarden, bitwardenqa.azurecr.io]
|
||||
dotnet: true
|
||||
- service_name: Server
|
||||
- project_name: Server
|
||||
base_path: ./util
|
||||
docker_repos: [bitwarden, bitwardenqa.azurecr.io]
|
||||
dotnet: true
|
||||
- service_name: Setup
|
||||
- project_name: Setup
|
||||
base_path: ./util
|
||||
docker_repos: [bitwarden, bitwardenqa.azurecr.io]
|
||||
dotnet: true
|
||||
- service_name: Sso
|
||||
- project_name: Sso
|
||||
base_path: ./bitwarden_license/src
|
||||
docker_repos: [bitwarden, bitwardenqa.azurecr.io]
|
||||
dotnet: true
|
||||
- service_name: Scim
|
||||
- project_name: Scim
|
||||
base_path: ./bitwarden_license/src
|
||||
docker_repos: [bitwarden, bitwardenqa.azurecr.io]
|
||||
dotnet: true
|
||||
@@ -243,36 +239,31 @@ jobs:
|
||||
uses: actions/checkout@a12a3943b4bdde767164f792f33f40b04645d846
|
||||
|
||||
########## Build Docker Image ##########
|
||||
- name: Setup service name
|
||||
- name: Setup project name
|
||||
id: setup
|
||||
run: |
|
||||
SERVICE_NAME=$(echo "${{ matrix.service_name }}" | awk '{print tolower($0)}')
|
||||
echo "Matrix name: ${{ matrix.service_name }}"
|
||||
echo "SERVICE_NAME: $SERVICE_NAME"
|
||||
echo "::set-output name=service_name::$SERVICE_NAME"
|
||||
PROJECT_NAME=$(echo "${{ matrix.project_name }}" | awk '{print tolower($0)}')
|
||||
echo "Matrix name: ${{ matrix.project_name }}"
|
||||
echo "PROJECT_NAME: $PROJECT_NAME"
|
||||
echo "::set-output name=project_name::$PROJECT_NAME"
|
||||
|
||||
- name: Get build artifact
|
||||
if: ${{ matrix.dotnet }}
|
||||
uses: actions/download-artifact@fb598a63ae348fa914e94cd0ff38f362e927b741
|
||||
with:
|
||||
name: ${{ matrix.service_name }}.zip
|
||||
name: ${{ matrix.project_name }}.zip
|
||||
|
||||
- name: Setup build artifact
|
||||
if: ${{ matrix.dotnet }}
|
||||
run: |
|
||||
mkdir -p ${{ matrix.base_path}}/${{ matrix.service_name }}/obj/build-output/publish
|
||||
unzip ${{ matrix.service_name }}.zip \
|
||||
-d ${{ matrix.base_path }}/${{ matrix.service_name }}/obj/build-output/publish
|
||||
mkdir -p ${{ matrix.base_path}}/${{ matrix.project_name }}/obj/build-output/publish
|
||||
unzip ${{ matrix.project_name }}.zip \
|
||||
-d ${{ matrix.base_path }}/${{ matrix.project_name }}/obj/build-output/publish
|
||||
|
||||
- name: Build Docker images
|
||||
run: |
|
||||
if [ "${{ matrix.service_name }}" = "K8S-Proxy" ]; then
|
||||
docker build -f ${{ matrix.base_path }}/Nginx/Dockerfile-k8s \
|
||||
-t ${{ steps.setup.outputs.service_name }} ${{ matrix.base_path }}/Nginx
|
||||
else
|
||||
docker build -t ${{ steps.setup.outputs.service_name }} \
|
||||
${{ matrix.base_path }}/${{ matrix.service_name }}
|
||||
fi
|
||||
- name: Build Docker image
|
||||
env:
|
||||
PROJECT_NAME: ${{ steps.setup.outputs.project_name }}
|
||||
run: docker build -t $PROJECT_NAME ${{ matrix.base_path }}/${{ matrix.project_name }}
|
||||
|
||||
########## ACR ##########
|
||||
- name: Login to Azure - QA Subscription
|
||||
@@ -283,8 +274,9 @@ jobs:
|
||||
- name: Login to Azure ACR
|
||||
run: az acr login -n bitwardenqa
|
||||
|
||||
- name: Tag and Push RC to Azure ACR QA registry
|
||||
- name: Tag and Push image to Azure ACR QA registry
|
||||
env:
|
||||
PROJECT_NAME: ${{ steps.setup.outputs.project_name }}
|
||||
REGISTRY: bitwardenqa.azurecr.io
|
||||
run: |
|
||||
IMAGE_TAG=$(echo "${GITHUB_REF:11}" | sed "s#/#-#g") # slash safe branch name
|
||||
@@ -292,9 +284,9 @@ jobs:
|
||||
IMAGE_TAG=dev
|
||||
fi
|
||||
|
||||
docker tag ${{ steps.setup.outputs.service_name }} \
|
||||
$REGISTRY/${{ steps.setup.outputs.service_name }}:$IMAGE_TAG
|
||||
docker push $REGISTRY/${{ steps.setup.outputs.service_name }}:$IMAGE_TAG
|
||||
docker tag $PROJECT_NAME \
|
||||
$REGISTRY/$PROJECT_NAME:$IMAGE_TAG
|
||||
docker push $REGISTRY/$PROJECT_NAME:$IMAGE_TAG
|
||||
|
||||
- name: Log out of Docker
|
||||
run: docker logout
|
||||
@@ -360,6 +352,7 @@ jobs:
|
||||
github.ref == 'refs/heads/rc' ||
|
||||
github.ref == 'refs/heads/hotfix-rc')
|
||||
env:
|
||||
PROJECT_NAME: ${{ steps.setup.outputs.project_name }}
|
||||
REGISTRY: bitwarden
|
||||
run: |
|
||||
IMAGE_TAG=$(echo "${GITHUB_REF:11}" | sed "s#/#-#g") # slash safe branch name
|
||||
@@ -367,9 +360,9 @@ jobs:
|
||||
IMAGE_TAG=dev
|
||||
fi
|
||||
|
||||
docker tag ${{ steps.setup.outputs.service_name }} \
|
||||
$REGISTRY/${{ steps.setup.outputs.service_name }}:$IMAGE_TAG
|
||||
docker push $REGISTRY/${{ steps.setup.outputs.service_name }}:$IMAGE_TAG
|
||||
docker tag $PROJECT_NAME \
|
||||
$REGISTRY/$PROJECT_NAME:$IMAGE_TAG
|
||||
docker push $REGISTRY/$PROJECT_NAME:$IMAGE_TAG
|
||||
|
||||
- name: Log out of Docker and disable Docker Notary
|
||||
if: |
|
||||
@@ -383,7 +376,7 @@ jobs:
|
||||
|
||||
upload:
|
||||
name: Upload
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
needs: build-docker
|
||||
steps:
|
||||
- name: Checkout repo
|
||||
@@ -462,7 +455,7 @@ jobs:
|
||||
check-failures:
|
||||
name: Check for failures
|
||||
if: always()
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
needs:
|
||||
- cloc
|
||||
- lint
|
||||
|
||||
Reference in New Issue
Block a user