top of page

CI / CD with GitHub in .NET


ree

GitHub uses GitHub Actions to launch CI / CD, the documentation for which can be found here and read in full. Here’s an example of how to set up a CI / CD using GitHub.


We built a sample project and did a sample test to see how it worked.


ree

Because we want to see the process of CI CD, we write our test simply.

using Xunit;

namespace UiTest
{
    public class SampleTest    
    {        
        [Fact]
        public void Just_For_Run_Sample_Test()        
        {
            // Arrange
            var myvar = "test";
            
            //Act
            bool result = (myvar == "test");
            
            //Assert 
            Assert.True(result);         
        }    
    }
}

We see that our testament, which has no business, is passed.


ree


Inside the repository we created on the GitHub site, go to the Action tab and select .NET.


Note that we can use different languages and platforms to use this service, because our project example is .NET, we choose this option.


ree

Click on the Configure button to get GitHub a sample code for the settings for us.


ree

As you can see, in the .github workflows folder, it creates a file called dotnet.yml, and we just need to write the settings we want in this file.


The file is with yml extension and is for our settings.

For the sample project, we use the following code.


name: .NET
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build-test-deploy:
runs-on: ubuntu-latest
steps:
    - uses: actions/checkout@v3
    - name: 🚀 Setup .NET
uses: actions/setup-dotnet@v2
with:
dotnet-version: 6.0.x
    - name: 🔨 Restore dependencies
run: dotnet restore
    - name: 💣 Build
run: dotnet build --no-restore
    - name: 🔍 Test
run: dotnet test --no-build --verbosity normal
    - name: 📂 Sync files
uses: SamKirkland/FTP-Deploy-Action@4.3.0
with:
server: ${{ secrets.ftp_server }}
username: ${{ secrets.ftp_user }}
password: ${{ secrets.ftp_password }}

At the beginning of the file, as specified in., We said in which actions the operation should be performed

on:
push:
branches: [ master ]

When we Push it on Master branch, the operation starts .


Next we created a job and called it build-test-deploy, which means what operations are performed in this job

jobs:
build-test-deploy:

And the most important part is our steps or our step, which is performed in turn and we have the following steps:


Setup .NET

I tell GitHub what our project code is and what version it is

uses: actions/setup-dotnet@v2
with:
dotnet-version: 6.0.x


Restore dependencies

Which captures the packages that are within the project

run: dotnet test — no-build — verbosity normal


Test

Runs our tests (the important part of the job is that the automated tests we wrote must be passed to continue the process)

run: dotnet test — no-build — verbosity normal


Sync files

uses: SamKirkland/FTP-Deploy-Action@4.3.0
with:
server: ${{ secrets.ftp_server }}
username: ${{ secrets.ftp_user }}
password: ${{ secrets.ftp_password }}

If all the steps are passed, our file will be transferred to the FTP address that we gave it.


We defined the FTP settings by secret so that we can use them but they are not visible.


By $ {secrets.ftp_password} We mean that the GitHub reads this value from the secrets we defined for it.


To define the secret we go to


Settings> Secrets> Actions


Go and click on New repository secret, then enter the name of your variable, for example ftp_password, and enter its value, and in our settings code this way we can return its value


${{ secrets.ftp_password }}

ree

This will read our values, but they will not be accessible or visible.


If the gateway encounters a problem in any of the steps, the process will stop and will not continue.

At the end, our project will be published.


Well, we commit the file and it PUSH and start CI CD automatically.


ree

The file is added to the .github / workflows / dotnet.yml address and we must remember the values

ftp_server
ftp_user
ftp_password

Be sure to create it in Settings> Secrets> Actions and define it.


Let’s go and see what happens. :)


Well, we did the first push and GitHub Actions starts


Go to the Action tab and see that we got an error


ree

By clicking and viewing, we can see the details of the error


ree

In the 📂 Sync files section for transferring files to FTP we got an error !


Error: Input needed and not supplied: server


We ate because we did not define the secret for the server and did not set the value.

As you can see, GitHub shows all the steps with details and logs that you can see by clicking on each step.


An email will also be sent to you informing that we made a mistake and faild job.


ree

To fix the problem, we define the secrets and run them again.


ree

Note that you can do both a push to re-run and the re-run button inside the actions.


ree

We put a simple Push inside the project itself to see the result


ree

Yes :) We see that the action was successfully executed and our version was published, that done with just a simple push.


From now on, it is enough to just push our changes to get our version on the server, just as easily.


But keep in mind that if any of the steps are not done, our version will not publish , for example, our tests will not pass, for example, I will pass the test result false (I will put a ! next to it) and I will push it to see the result.

Assert.True( ! result);

The result will be


ree

My test did not pass and as a result, my version was not published.


Of course, I will fix the test again to pass.


ree

I hope you like this article and it will be useful for you :).



Source: Medium - Reza Mansouri


The Tech Platform

1 Comment


Guest
a day ago

Πώς να αξιοποιήσεις τα μπόνους σου στα διαδικτυακά καζίνο: Συμβουλές και στρατηγικές


Τα διαδικτυακά καζίνο έχουν κερδίσει μια ιδιαίτερη θέση στη ζωή των απανταχού παίκτων, προσφέροντας αμέτρητες ευκαιρίες και εμπειρίες. Ένα από τα πιο ελκυστικά χαρακτηριστικά που προσφέρουν αυτά τα καζίνο είναι τα μπόνους. Είτε πρόκειται για μπόνους καλωσορίσματος, είτε για δωρεάν περιστροφές, είτε για προσφορές επαναφόρτωσης, τα μπόνους μπορούν να κάνουν τη https://nvcasino.gr/login/ διαφορά ανάμεσα σε μια μέτρια εμπειρία παιχνιδιού και σε μια εξαιρετική. Αλλά πώς μπορείτε να αξιοποιήσετε αυτά τα μπόνους με τον καλύτερο τρόπο; Σε αυτή την άρθρο, θα αναλύσουμε τις στρατηγικές που θα σας βοηθήσουν να επωφεληθείτε από τα μπόνους σας, διασφαλίζοντας έτσι ότι θα έχετε τη μέγιστη απόλαυση και πιθανές νίκες.

Κατανόηση των Διαφορετικών Ειδών…

ree
Like
bottom of page