Impr: fixing run front end tests #31
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
name: CI/CD Pipeline | |
on: | |
push: | |
branches: | |
- master | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up JDK 1.11 | |
uses: actions/setup-java@v1 | |
with: | |
java-version: 1.11 | |
- name: Build Resource Server with Maven | |
run: mvn -B package --file resource_server/pom.xml | |
- name: Build Authorization Server With Maven | |
run: mvn -B package --file authorization_server/pom.xml | |
- name: Set up Node.js | |
uses: actions/setup-node@v2 | |
with: | |
node-version: '18.20.2' | |
- name: Install dependencies | |
run: | | |
cd client | |
npm install | |
- name: Build Frontend with Angular | |
run: | | |
cd client | |
export NODE_OPTIONS=--openssl-legacy-provider | |
npm run build --prod | |
- name: Upload Resource Server Artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: resource-server-artifact | |
path: resource_server/target/*.jar | |
- name: Upload Authorization Server Artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: authorization-server-artifact | |
path: authorization_server/target/*.jar | |
- name: Upload Frontend Artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: frontend-artifact | |
path: client/dist/* | |
test: | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Set up JDK 1.11 | |
uses: actions/setup-java@v1 | |
with: | |
java-version: 1.11 | |
- name: Set up Node.js | |
uses: actions/setup-node@v2 | |
with: | |
node-version: '18.20.2' | |
- name: Cache Node.js modules | |
uses: actions/cache@v3 | |
with: | |
path: ~/.npm | |
key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} | |
restore-keys: | | |
${{ runner.os }}-node- | |
- name: Install dependencies | |
run: | | |
cd client | |
npm install | |
npm install -g @angular/cli@10 | |
- name: Install Chrome | |
run: sudo apt-get install -y chromium-browser | |
- name: Run Linter | |
run: | | |
cd client | |
npm run lint || true | |
- name: Download Resource Server Artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: resource-server-artifact | |
path: resource_server/target | |
- name: Download Authorization Server Artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: authorization-server-artifact | |
path: authorization_server/target | |
- name: Download Client Server Artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: frontend-artifact | |
path: client/dist | |
- name: Run Tests for Resource Server | |
run: mvn -B test --file resource_server/pom.xml | |
- name: Run Tests for Authorization Server | |
run: mvn -B test --file authorization_server/pom.xml | |
- name: Run Tests | |
run: | | |
cd client | |
npm run test -- --no-watch --no-progress --browsers=ChromeHeadlessCI | |
- name: Upload Test Results | |
if: always() | |
uses: actions/upload-artifact@v2 | |
with: | |
name: test-results | |
path: ./coverage | |
deploy: | |
runs-on: ubuntu-latest | |
needs: test | |
env: | |
DOCKER_REPOSITORY: ${{ secrets.DOCKER_USERNAME }}/desofs2024_m1b_6 | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Download Resource Server Artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: resource-server-artifact | |
path: resource_server/target | |
- name: Download Authorization Server Artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: authorization-server-artifact | |
path: authorization_server/target | |
- name: Download Frontend Artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: frontend-artifact | |
path: client/dist | |
- name: Build Docker images | |
run: | | |
docker build -t resource_server resource_server/ | |
docker build -t authorization_server authorization_server/ | |
docker build -t client client/ | |
- name: Create Docker tags | |
run: | | |
docker tag resource_server $DOCKER_REPOSITORY:resource_server_latest | |
docker tag authorization_server $DOCKER_REPOSITORY:authorization_server_latest | |
docker tag client $DOCKER_REPOSITORY:client_latest | |
- name: Login to DockerHub | |
uses: docker/login-action@v1 | |
with: | |
username: ${{ secrets.DOCKER_USERNAME }} | |
password: ${{ secrets.DOCKER_PASSWORD }} | |
- name: Push Docker images | |
run: | | |
docker push $DOCKER_REPOSITORY:resource_server_latest | |
docker push $DOCKER_REPOSITORY:authorization_server_latest | |
docker push $DOCKER_REPOSITORY:client_latest |