diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml
index 97df2cc..0c8742c 100644
--- a/.github/workflows/cd.yml
+++ b/.github/workflows/cd.yml
@@ -6,81 +6,77 @@ on:
workflow_dispatch:
-jobs:
- build:
+env:
+ BUILD_FOLDER_PATH: bin
+
+jobs:
+ netcorebuild:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- - name: Mono Build
+ - name: DotNET Core Setup
+ uses: actions/setup-dotnet@v1
+ with:
+ dotnet-version: '3.1.x'
+
+ - name: DotNET Core Build
run: |
- chmod +x build.sh && ./build.sh
+ chmod +x netcorebuild.sh && ./netcorebuild.sh "$BUILD_FOLDER_PATH"
+
+ tar -cf solution.tar LaboratoryWork.sln Project
- name: Upload Artifacts
uses: actions/upload-artifact@v2
with:
- name: program
- path: main.exe
+ name: solution
+ path: "${{ env.BUILD_FOLDER_PATH }}/solution.tar"
retention-days: 1
-
- lint:
- runs-on: ubuntu-latest
- needs: build
-
- steps:
- - uses: actions/checkout@v2
-
- - name: Markdown Check
- run: |
- sudo chown -R $(whoami) /usr/local/bin /usr/local/lib /usr/local/include /usr/local/share
- npm install -g markdownlint-cli
- markdownlint *.md
- - name: Shell Check
- if: always()
- run: |
- sudo apt-get install shellcheck
- shellcheck *.sh
-
- - name: Download Artifacts
- uses: actions/download-artifact@v2
- with:
- name: program
- - name: CSharp Check
- if: always()
- run: |
- sudo apt update
- sudo apt-get install gendarme
- gendarme -- *.exe
publish:
runs-on: ubuntu-latest
- needs: lint
+ needs: netcorebuild
steps:
- uses: actions/checkout@v2
- - name: Download Artifacts
+ - name: Download Build Artifacts
uses: actions/download-artifact@v2
with:
- name: program
+ name: solution
+ path: ${{ env.BUILD_FOLDER_PATH }}
+
+ - name: Unarchive Artifacts
+ run: |
+ cd "$BUILD_FOLDER_PATH"
+ tar -xf solution.tar
+ rm -f solution.tar
+
- name: Convert Flowchart
run: |
- sudo apt install snapd
- sudo snap install drawio
- drawio -x -o flowchart.pdf flowchart.drawio
+ sudo apt update
+ sudo apt-get install -y libappindicator3-1
+
+ sudo apt -y install wget
+ wget https://github.com/jgraph/drawio-desktop/releases/download/v12.3.2/draw.io-amd64-12.3.2.deb
+ sudo dpkg -i draw.io-amd64-12.3.2.deb
+ sudo apt -y -f install
+
+ export DISPLAY=:1
+ xvfb-run -a drawio -a -x -o "$BUILD_FOLDER_PATH/flowchart.pdf" flowchart.drawio --no-sandbox --headless --disable-gpu
+
- name: Archive
run: |
- tar -cf release.tar main.exe flowchart.pdf
-
+ cd "$BUILD_FOLDER_PATH"
+ tar -cf release.tar *
- name: Environment Variable Setup
run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/}" >> $GITHUB_ENV
-
- - name: Publish to GitHub
+ - name: Publish Build to GitHub
uses: "marvinpinto/action-automatic-releases@latest"
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
automatic_release_tag: "${{ env.RELEASE_VERSION }}"
prerelease: false
title: "${{ env.RELEASE_VERSION }} Build"
- files: release.tar
+ files: ${{ env.BUILD_FOLDER_PATH }}/release.tar
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 0502c40..3eeb99c 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,13 +1,14 @@
name: CI
on:
- push:
- branches: [ master ]
pull_request:
- branches: [ master ]
+ branches: master
workflow_dispatch:
+env:
+ BUILD_FOLDER_PATH: bin
+
jobs:
build:
runs-on: ubuntu-latest
@@ -25,10 +26,20 @@ jobs:
name: program
path: main.exe
retention-days: 1
-
+
+ netcorebuild:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: NET Core Build
+ run: |
+ chmod +x netcorebuild.sh && ./netcorebuild.sh "$BUILD_FOLDER_PATH"
+
lint:
runs-on: ubuntu-latest
- needs: build
+ needs: [build, netcorebuild]
steps:
- uses: actions/checkout@v2
@@ -41,16 +52,16 @@ jobs:
- name: Shell Check
if: always()
run: |
- sudo apt-get install shellcheck
shellcheck *.sh
- name: Download Artifacts
+ if: always()
uses: actions/download-artifact@v2
with:
name: program
- name: CSharp Check
if: always()
run: |
- sudo apt update
+ sudo apt-get update
sudo apt-get install gendarme
gendarme -- *.exe
diff --git a/flowchart.drawio b/flowchart.drawio
index db784be..01b8cb7 100644
--- a/flowchart.drawio
+++ b/flowchart.drawio
@@ -1 +1 @@
-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
\ No newline at end of file
+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
\ No newline at end of file
diff --git a/netcorebuild.sh b/netcorebuild.sh
new file mode 100644
index 0000000..7ae7fab
--- /dev/null
+++ b/netcorebuild.sh
@@ -0,0 +1,16 @@
+#!/usr/bin/env bash
+
+BUILD_FOLDER_PATH="$1"
+
+shopt -s extglob
+mkdir "$BUILD_FOLDER_PATH"
+cd "$BUILD_FOLDER_PATH" || exit
+dotnet new sln -n LaboratoryWork
+dotnet new console -n Project
+dotnet sln LaboratoryWork.sln add Project/Project.csproj
+cp ../!(assembly).cs Project/
+mkdir Project/Extensions Project/Utils
+cp ../Extensions/*.cs Project/Extensions/
+cp ../Utils/*.cs Project/Utils/
+rm -f Project/Program.cs
+dotnet build LaboratoryWork.sln