My_CICD_Side_1 - itnett/FTD02H-N GitHub Wiki

🎓 Guide til Din Nye Utviklingsprosess med CI/CD og GitHub Repositories

📚 Introduksjon

Du har nå satt opp en sofistikert arbeidsflyt som gjør at du kan jobbe effektivt gjennom alle aspektene av IT-drift og sikkerhet ved Fagskolen Innlandet. Dette systemet inkluderer CI/CD (Continuous Integration/Continuous Deployment) for å automatisere testing og distribusjon av koden din, samt flere GitHub-repositories for å håndtere både dokumentasjon og kode. Denne guiden vil forklare hva du har laget, hvordan du kan bruke det, og hvordan du kan optimalisere arbeidsflyten din for å oppnå best mulig resultat i studiene dine.

🚀 Hva Er CI/CD?

CI/CD (Continuous Integration/Continuous Deployment) er en praksis i programvareutvikling som gjør det mulig å integrere kodeendringer ofte og på en automatisert måte distribuere den til produksjon eller andre miljøer. Dette gir mange fordeler, spesielt i komplekse prosjekter med mange bevegelige deler.

🔄 Continuous Integration (CI)

Continuous Integration er prosessen hvor utviklere integrerer koden sin i et felles repository flere ganger om dagen. Hver integrasjon blir validert gjennom automatiserte bygg og tester for å oppdage feil tidlig.

Fordeler for deg:

  • Hyppige tilbakemeldinger: Ved å integrere koden ofte og la CI-pipeline kjøre tester, får du raskt vite om noe har gått galt.
  • Bedre kodekvalitet: Hver gang du pusher kode til https://github.com/itnett/MyFirst_CICD, kjører CI automatiske tester for å sikre at koden din fungerer som den skal.
  • Sikkerhet i utvikling: Du kan være trygg på at koden som pusher er testet og validert.

🚀 Continuous Deployment (CD)

Continuous Deployment er en utvidelse av CI der kode som har passert tester automatisk blir distribuert til produksjon. I ditt tilfelle betyr det at kodeendringer som passerer CI-testene blir automatisk oppdatert i ditt https://github.com/itnett/FTD02N-repository.

Fordeler for deg:

  • Automatisert distribusjon: Ingen behov for manuelt arbeid med å distribuere kodeendringer. Alt skjer automatisk.
  • Raskere leveranser: Koden er alltid klar til bruk, noe som gjør det lettere å holde prosjektet ditt oppdatert.

📁 Dine GitHub Repositories

Du har satt opp flere repositories for å håndtere både kode og dokumentasjon. La oss gå gjennom hver av dem og se hvordan de fungerer sammen.

1. https://github.com/itnett/FTD02H-N/wiki (Legacy Wiki)

  • Formål: Dette er din opprinnelige Wiki hvor du har dokumentert dine notater, teorier, og kodebiter gjennom studiene dine.
  • Fremtidig Bruk: Selv om dette fortsatt er et verdifullt arkiv, vil vi etter hvert migrere all relevant kode til https://github.com/itnett/FTD02N. Du kan fortsatt bruke dette repoet til å dokumentere konsepter og teorier.

Hvordan Bruke:

  • Fortsett med å dokumentere: Du kan fortsette å legge til innhold her, spesielt der hvor innholdet er mer teoretisk og ikke nødvendigvis knyttet til spesifikke kodeprosjekter.
  • Bruk WikiMigrationScript: Når du har kodeblokker i dokumentasjonen, kan du kjøre scriptet for å migrere koden til https://github.com/itnett/FTD02N automatisk.

2. https://github.com/itnett/FTD02N (Kode Repository)

  • Formål: Dette repository er dedikert til å lagre all koden du utvikler under studiene, organisert etter språk eller funksjon.
  • Struktur: Koden er organisert i mapper basert på språk (f.eks., Python, Bash, SQL) eller funksjon. Hver kodefil har en tilknyttet README.md som forklarer dens opprinnelse, funksjon, og hvor den ble migrert fra.
  • CI/CD-Integrasjon: Med CI/CD satt opp i https://github.com/itnett/MyFirst_CICD, vil alle kodeendringer automatisk testes og publiseres.

Hvordan Bruke:

  • Lagre og vedlikehold koden din: Alt fra små scripts til store prosjekter kan lagres her. Hver fil vil ha en README.md som gir kontekst og forklaring.
  • Automatisk testing og distribusjon: Når du pusher til master, kjører CI/CD-pipelinen og sørger for at alt fungerer som det skal, og deretter publiserer oppdateringene automatisk.

3. https://github.com/itnett/FTD02N/wiki (Ny Wiki)

  • Formål: Dette er din nye Wiki dedikert til FTD02N, hvor dokumentasjonen er tettere knyttet til koden. Denne Wiki-en inneholder lenker til koden som ligger i https://github.com/itnett/FTD02N.
  • Oppdateringer: Med WikiMigrationScript blir koden automatisk flyttet hit fra https://github.com/itnett/FTD02H-N/wiki, og relevante sider blir oppdatert med lenker til koden i det nye repoet.

Hvordan Bruke:

  • Dokumenter spesifikke prosjekter: Bruk denne Wiki-en til å dokumentere koden din, labber, og andre praktiske prosjekter. Hver side bør inneholde lenker til den relevante koden i https://github.com/itnett/FTD02N.
  • Hold innholdet oppdatert: Ettersom koden oppdateres, sørg for at lenkene i Wiki-en alltid peker til den nyeste versjonen.

4. https://github.com/itnett/MyFirst_CICD (CI/CD Pipeline)

  • Formål: Dette repoet inneholder konfigurasjonen for din CI/CD-pipeline. Her defineres hvordan koden skal testes, bygges, og distribueres.
  • Automatisering: CI/CD-pipelinen kjører automatisk hver gang du pusher til https://github.com/itnett/FTD02N. Den kjører tester, oppdaterer koden, og oppdaterer dokumentasjonen.

Hvordan Bruke:

  • Legg til nye workflows: Du kan legge til eller endre CI/CD-workflows for å inkludere flere tester, deployment-trinn, eller andre automatiseringer.
  • Overvåk workflows: Følg med på https://github.com/itnett/MyFirst_CICD/actions for å se om dine builds og deploys kjører som forventet. Hvis det er feil, vil du kunne se loggene her og rette dem.

🎯 Optimal Jobbing Gjennom Kursene Dine

Generell Arbeidsflyt

  1. Dokumentasjon og Notater:

    • Start med å skrive notater og teoretisk dokumentasjon i https://github.com/itnett/FTD02H-N/wiki. Dette kan være alt fra konsepter, matematiske utledninger, eller planlegging av prosjekter.
    • Legg til kodeblokker som støtte for forklaringer der det er relevant.
  2. Kodeutvikling:

    • Lag koden i ditt lokale miljø og organiser den i mapper etter språk eller funksjon.
    • Når du er klar, pusher du koden til https://github.com/itnett/FTD02N, hvor den vil bli automatisk testet og publisert.
  3. Migrering av Kode:

    • Kjør WikiMigrationScript for å flytte kode fra https://github.com/itnett/FTD02H-N/wiki til https://github.com/itnett/FTD02N.
    • Scriptet oppretter mapper, flytter koden, og oppdaterer Wiki-sidene med lenker til koden i det nye repoet.
  4. Oppdatering av Ny Wiki:

    • Ettersom koden oppdateres, sørg for at https://github.com/itnett/FTD02N/wiki har lenker til de nyeste versjonene av koden.
    • Dette sikrer at all dokumentasjon er oppdatert og peker på riktig kode.

Langsiktig Plan

  • Fortsett å bruke https://github.com/itnett/FTD02H-N/wiki som en teoretisk ressurs i løpet av de neste månedene, mens du gradvis migrerer koden til https://github.com/itnett/FTD02N.
  • Etter 1-3 måneder, vurder å fullføre migreringen og bruke https://github.com/itnett/FTD02N/wiki som din primære dokumentasjonskilde, med alt teoretisk innhold, kode, og labber samlet på ett sted.
  • Eksperimenter med CI/CD for å legge til flere automatiserte trinn i arbeidsfly

ten din. Dette kan inkludere automatisert testing for forskjellige miljøer (f.eks., Windows og Linux), statisk kodeanalyse, eller sikkerhetsskanninger.

🌟 Tilgjengelige Ressurser

GitHub Actions

GitHub Actions gir deg kraften til å lage CI/CD-workflows direkte i GitHub. Dette er hjertet av din nye automatiserte arbeidsflyt, og her kan du:

  • Definere workflows for testing, bygging, og distribusjon.
  • Kjøre tester automatisk hver gang du pusher kode.
  • Distribuere kode til produksjonsmiljøer, eller som i ditt tilfelle, til publisering på GitHub.

GitHub Wiki

GitHub Wiki er en enkel og kraftig plattform for å dokumentere prosjektene dine. Med din nye struktur, kan du:

  • Opprette Wiki-sider som er koblet direkte til den nyeste koden.
  • Organisere dokumentasjon på en måte som gjør den lett tilgjengelig for deg selv og andre.
  • Sikre at dokumentasjonen alltid er oppdatert gjennom automatisert migrering og oppdatering.

GitHub Repositories

Med flere repositories kan du:

  • Separere kode og dokumentasjon for å holde ting organisert.
  • Bruke private og offentlige repos for å kontrollere hva som er synlig for andre.
  • Samarbeide med andre ved å gi dem tilgang til spesifikke repos og workflows.

Dette systemet er designet for å gi deg en strukturert, automatisert og effektiv måte å håndtere både kode og dokumentasjon på. Ved å bruke disse verktøyene riktig, vil du ikke bare forbedre læringen din, men også utvikle ferdigheter som er høyt verdsatt i IT-bransjen.

For å sette opp dine CI/CD-workflows, script-filer, og dokumentasjon på en organisert måte, kan vi gå gjennom en detaljert prosess for hvordan du skal opprette og navngi disse filene. Hver fil vil inneholde en overskrift med navn, versjonsnummer, og beskrivelse av funksjon eller hensikt med koden.

🛠 Hvordan Opprette, Navngi, og Dokumentere Skript

1. Opprette og Navngi Skriptfiler

For hvert kodeeksempel du har i din dokumentasjon, opprett en ny fil i https://github.com/itnett/FTD02N-repositoryet. Følg disse trinnene:

A. Python Script Eksempel

Hvis du har et Python-skript fra dokumentasjonen, kan filen opprettes som følger:

Filnavn: data_analysis_script_v1.py

Innhold:

# Filename: data_analysis_script_v1.py
# Version: 1.0
# Author: [Ditt navn]
# Date: [DD.MM.YYYY]
# Description: This script performs data analysis on a dataset and generates summary statistics.

def analyze_data(data):
    """
    Analyze the given dataset and return summary statistics.
    
    Parameters:
    data (list of numbers): The dataset to analyze.
    
    Returns:
    dict: A dictionary containing the summary statistics.
    """
    mean = sum(data) / len(data)
    median = sorted(data)[len(data) // 2]
    return {"mean": mean, "median": median}

# Example usage:
data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
stats = analyze_data(data)
print("Mean:", stats["mean"])
print("Median:", stats["median"])
B. Bash Script Eksempel

For et Bash-skript, kan filen opprettes slik:

Filnavn: backup_script_v1.sh

Innhold:

#!/bin/bash
# Filename: backup_script_v1.sh
# Version: 1.0
# Author: [Ditt navn]
# Date: [DD.MM.YYYY]
# Description: This script creates a backup of the specified directory.

SOURCE_DIR="/path/to/source"
DEST_DIR="/path/to/destination"

# Create backup
tar -czvf "$DEST_DIR/backup_$(date +%F).tar.gz" "$SOURCE_DIR"

# Log the backup operation
echo "Backup created for $SOURCE_DIR on $(date)" >> backup.log
C. SQL Script Eksempel

For et SQL-skript:

Filnavn: user_data_extraction_v1.sql

Innhold:

-- Filename: user_data_extraction_v1.sql
-- Version: 1.0
-- Author: [Ditt navn]
-- Date: [DD.MM.YYYY]
-- Description: This script extracts user data based on certain criteria.

SELECT user_id, user_name, email
FROM users
WHERE registration_date > '2024-01-01';

📜 Hvordan Bruke GitHub til å Publisere Koden

1. Legge til Kode i Repository

Gå til https://github.com/itnett/FTD02N på din lokale maskin:

# Gå til repoet
cd path/to/FTD02N

# Legg til nye filer
git add data_analysis_script_v1.py
git add backup_script_v1.sh
git add user_data_extraction_v1.sql

# Commit endringer
git commit -m "Added initial versions of Python, Bash, and SQL scripts"

# Push til GitHub
git push origin master

2. Oppdatere Wiki med Lenkene til Koden

For å oppdatere https://github.com/itnett/FTD02N/wiki med lenker til de nye skriptene, kan du legge til følgende markdown-innhold:

## Data Analysis Script

Dette Python-skriptet utfører dataanalyse på et datasett og genererer oppsummeringsstatistikk.

[Se skriptet her](https://github.com/itnett/FTD02N/blob/main/data_analysis_script_v1.py)

---

## Backup Script

Dette Bash-skriptet lager en sikkerhetskopi av en spesifisert katalog.

[Se skriptet her](https://github.com/itnett/FTD02N/blob/main/backup_script_v1.sh)

---

## User Data Extraction Script

Dette SQL-skriptet trekker ut brukerdata basert på visse kriterier.

[Se skriptet her](https://github.com/itnett/FTD02N/blob/main/user_data_extraction_v1.sql)

📦 Bruke CI/CD Pipeline for Automatisering

1. CI/CD Workflow

For å kjøre disse skriptene som en del av CI/CD-prosessen, oppdaterer du din ci-cd.yml i https://github.com/itnett/MyFirst_CICD med nye trinn som kjører skriptene:

name: CI/CD Pipeline

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Set up Python
      uses: actions/setup-python@v2
      with:
        python-version: '3.11'

    - name: Install dependencies
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt

    - name: Run Python Script
      run: |
        python data_analysis_script_v1.py

    - name: Run Bash Script
      run: |
        bash backup_script_v1.sh

    - name: Run SQL Script
      run: |
        sqlite3 database.db < user_data_extraction_v1.sql

    - name: Commit and push changes
      run: |
        git config --local user.email "github-actions[bot]@users.noreply.github.com"
        git config --local user.name "github-actions[bot]"
        git add .
        git commit -m "Automated commit from GitHub Actions"
        git push
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

💼 Hvordan Integrere Dette i Din Studiehverdag

  1. Bruk https://github.com/itnett/FTD02H-N/wiki for notater:

    • Fortsett å legge inn notater, ideer, og teorier her, og bruk WikiMigrationScript til å trekke ut og flytte koden til https://github.com/itnett/FTD02N.
  2. Bruk https://github.com/itnett/FTD02N for kodeprosjekter:

    • Hold koden organisert, og legg til nye versjoner når du oppdaterer skriptene dine.
    • Bruk CI/CD-pipelinen til å kjøre automatiserte tester og deploys.
  3. Hold Wiki-en oppdatert:

    • Sørg for at https://github.com/itnett/FTD02N/wiki inneholder lenker til de nyeste versjonene av koden din.
  4. Eksperimenter med CI/CD:

    • Legg til nye workflows for å automatisere andre aspekter av utviklingsprosessen, som sikkerhetsskanninger eller kontinuerlig deploy til en webserver.

📈 Oppsummering

Du har nå satt opp en effektiv arbeidsflyt som integrerer dokumentasjon, koding, testing, og distribusjon i et sømløst system. Dette vil være en stor ressurs i studiene dine og forberede deg på en karriere i IT-bransjen. Lykke til! 🎉

La oss gå dypere inn i hvordan du kan bruke CI/CD-arbeidsflyten, GitHub-repositorier, og skript for å effektivisere utvikling, testing, og vedlikehold av kode som skal kjøre i ulike miljøer som Trinket, Anaconda, VLC, Windows, og laboratoriemiljøer.

📂 1. Organisering av Kode i GitHub Repository

A. Opprette Mappestruktur for Forskjellige Miljøer

For å holde koden din organisert basert på hvor den skal kjøre, kan du opprette en mappestruktur i ditt GitHub-repository som skiller mellom forskjellige miljøer.

Eksempel på Mappestruktur:

FTD02N/
│
├── Trinket/
│   ├── trinket_script_1.py
│   └── trinket_script_2.py
│
├── Anaconda/
│   ├── environment.yml
│   └── anaconda_script_1.py
│
├── VLC/
│   ├── vlc_script_1.sh
│   └── vlc_script_2.sh
│
├── Windows/
│   ├── windows_script_1.bat
│   └── windows_script_2.ps1
│
└── Lab/
    ├── lab_script_1.py
    └── lab_script_2.sql

B. Navngivning og Dokumentasjon

Hver fil bør navngis på en måte som reflekterer dens funksjon, og hver fil bør ha en toppseksjon som dokumenterer formål, versjon, og forfatter.

Eksempel på en Python-fil for Trinket:

# Filename: trinket_script_1.py
# Version: 1.0
# Author: [Ditt navn]
# Date: [DD.MM.YYYY]
# Description: This script is designed to run in Trinket.io to demonstrate basic data visualization.

import matplotlib.pyplot as plt

data = [1, 2, 3, 4, 5]
plt.plot(data)
plt.title('Basic Data Visualization in Trinket')
plt.show()

Eksempel på en Windows PowerShell-fil:

# Filename: windows_script_1.ps1
# Version: 1.0
# Author: [Ditt navn]
# Date: [DD.MM.YYYY]
# Description: This PowerShell script is designed to automate backups on a Windows system.

$source = "C:\Users\YourName\Documents"
$destination = "D:\Backups\Documents_Backup"

Copy-Item -Path $source -Destination $destination -Recurse
Write-Output "Backup completed successfully."

🔄 2. Automatisere Testing og Kjøring med CI/CD

A. Automatisere Testing for Forskjellige Miljøer

Ved å bruke din CI/CD-pipeline, kan du sette opp forskjellige testmiljøer og kjøre spesifikke tester basert på hvor koden skal kjøre. For eksempel, hvis du har et skript som skal kjøre i Anaconda, kan du definere et Anaconda-miljø og kjøre skriptene dine der.

Eksempel på CI/CD Workflow for Anaconda:

name: CI/CD Pipeline

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Set up Python with Anaconda
      uses: conda-incubator/setup-miniconda@v2
      with:
        environment-file: Anaconda/environment.yml
        auto-activate-base: false

    - name: Run Anaconda Script
      run: |
        conda activate myenv
        python Anaconda/anaconda_script_1.py

B. Kjøre Skript i Ulike Miljøer med GitHub Actions

Du kan konfigurere GitHub Actions til å kjøre skript i forskjellige miljøer som en del av din CI/CD-pipeline. Dette kan inkludere alt fra Python-skript i Anaconda til bash-skript som automatiserer VLC på Linux.

Eksempel på Workflow for Windows Skript:

name: Windows Script Execution

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  run-windows-scripts:
    runs-on: windows-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Run PowerShell Script
      run: |
        powershell.exe -File Windows/windows_script_1.ps1

💡 3. Vedlikehold og Distribusjon av Kode

A. Kjøring og Vedlikehold i Ulike Miljøer

For å forenkle kjøring og vedlikehold av kode i forskjellige miljøer, kan du bruke følgende tilnærminger:

  1. Trinket:

    • Hold koden enkel og bruk Python-biblioteker som er kompatible med Trinket.io.
    • Last opp koden til GitHub, og link til den fra din Trinket-profil for enkel tilgang.
  2. Anaconda:

    • Bruk en environment.yml-fil for å sikre at alle nødvendige avhengigheter installeres korrekt.
    • Automatiser testing og kjøring av skript med GitHub Actions, som vist tidligere.
  3. VLC:

    • Automatiser videobehandling og mediaavspilling med bash- eller Python-skript som kjører direkte på en server eller maskin.
    • Bruk CI/CD til å kjøre skript automatisk når ny media blir lagt til eller endret.
  4. Windows:

    • Bruk PowerShell- eller batch-skript for å automatisere systemvedlikehold, backups, og andre oppgaver.
    • CI/CD kan automatisere kjøring av disse skriptene på Windows-maskiner.
  5. Lab:

    • Organiser og versjonskontroller laboratoriekode som Python, SQL, eller bash-skript.
    • Bruk CI/CD til å kjøre labeksperimenter automatisk når koden endres.

B. Distribusjon til Andre Plattform

Bruk CI/CD-pipelinen til å automatisk distribuere kode til relevante miljøer:

  • Trinket: Publiser koden som en del av din GitHub wiki eller legg inn lenker i dokumentasjonen.
  • Anaconda: Sørg for at kode distribueres til Anaconda-miljøer via en requirements.txt eller environment.yml.
  • VLC: Automatiser deploy til servere som håndterer medieavspilling.
  • Windows: Deploy PowerShell-skript til Windows-servere eller maskiner.
  • Lab: Deploy eksperimentkoden til laboratoriemiljøer og sikre at alle avhengigheter er installert.

🔄 4. CI/CD Pipelines for Kontinuerlig Integrasjon og Distribusjon

A. Oppdatere Pipelines for Nye Oppgaver

Legg til nye jobber i CI/CD-pipelinen for å automatisere oppgaver som backups, sikkerhetskopier, eller mediekonvertering. For eksempel:

Oppgave for Automatisk Backup:

jobs:
  automatic-backup:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout code
      uses: actions/checkout@v2

    - name: Run Backup Script
      run: |
        bash VLC/backup_script_v1.sh

B. Overvåking og Vedlikehold av CI/CD Pipelines

Bruk GitHub Actions oversikt (Actions fanen på GitHub) for å overvåke kjøretid, feil, og resultater fra dine CI/CD-kjøringer.

  • Feilretting: Hvis en feil oppstår i en kjøring, kan du inspisere loggene direkte i GitHub Actions og gjøre nødvendige justeringer i skriptet eller pipelinen.
  • Optimalisering: Juster miljøer, versjonsnummer, og kjøringstid basert på erfaring og behov.

📚 5. Utdanning og Kontinuerlig Læring

  1. GitHub Repos: Bruk https://github.com/itnett/FTD02H-N/wiki som en læringsplattform og overfør gradvis din kunnskap til https://github.com/itnett/FTD02N som en arbeidsplattform for utvikling og koding.

  2. CI/CD for Sikkerhet: Inkluder automatiserte tester for sikkerhet i din pipeline, spesielt relevant for kurset i cybersikkerhet.

  3. Dokumentasjon og Wiki: Hold wiki-sidene oppdaterte og sørg for at de reflekterer de nyeste endringene i koden, spesielt når du oppdaterer eller refaktorerer kode.

  4. Eksperimenter: Bruk GitHub Actions til å eksperimentere med nye teknologier, biblioteker, og metoder du lærer i løpet av studiene. CI/CD gjør det enkelt å prøve nye ting uten risiko for å ødelegge eksisterende arbeidsflyter.

🎓 6. Konklusjon

Du har nå satt opp en omfattende infrastruktur som integrerer k

oding, testing, og dokumentasjon på en måte som er skreddersydd for dine studier og kommende karriere innen IT. Denne infrastrukturen vil tillate deg å jobbe effektivt, holde kodebasen ren og oppdatert, og samtidig lære nye teknologier og arbeidsflyter.

Bruk denne guiden som et referansepunkt mens du fortsetter studiene dine og gå tilbake til den for å justere, forbedre, og utvide dine arbeidsflyter etter hvert som du utvikler deg. Lykke til med studiene! 🚀

Her er et Python-skript som oppretter den nødvendige mappestrukturen, legger inn eksempelfiler, og dokumenterer hvert skritt for å gi deg en klar forståelse av hva som skjer. Dette skriptet inkluderer kommentarer som forklarer hver del av koden og dens funksjon.

Skript: setup_environment.py

import os

# Funksjon for å lage en mappe
def create_directory(path):
    if not os.path.exists(path):
        os.makedirs(path)
        print(f"Opprettet mappe: {path}")
    else:
        print(f"Mappe eksisterer allerede: {path}")

# Funksjon for å lage en fil med innhold
def create_file(path, content):
    with open(path, 'w') as file:
        file.write(content)
    print(f"Laget fil: {path}")

# Funksjon for å lage en README.md fil
def create_readme(path, filename, description):
    content = f"# {filename}\n\n## Versjon: 1.0\n\n## Beskrivelse\n{description}\n\n"
    create_file(os.path.join(path, 'README.md'), content)

# Funksjon for å opprette en Python-fil med eksempelinnhold
def create_python_file(path, filename, description):
    content = f'''# Filename: {filename}.py
# Version: 1.0
# Author: [Ditt navn]
# Date: [DD.MM.YYYY]
# Description: {description}

import matplotlib.pyplot as plt

data = [1, 2, 3, 4, 5]
plt.plot(data)
plt.title('Basic Data Visualization in Trinket')
plt.show()
'''
    create_file(os.path.join(path, f"{filename}.py"), content)

# Funksjon for å opprette en PowerShell-fil med eksempelinnhold
def create_powershell_file(path, filename, description):
    content = f'''# Filename: {filename}.ps1
# Version: 1.0
# Author: [Ditt navn]
# Date: [DD.MM.YYYY]
# Description: {description}

$source = "C:\\Users\\YourName\\Documents"
$destination = "D:\\Backups\\Documents_Backup"

Copy-Item -Path $source -Destination $destination -Recurse
Write-Output "Backup completed successfully."
'''
    create_file(os.path.join(path, f"{filename}.ps1"), content)

# Funksjon for å opprette en Bash-fil med eksempelinnhold
def create_bash_file(path, filename, description):
    content = f'''# Filename: {filename}.sh
# Version: 1.0
# Author: [Ditt navn]
# Date: [DD.MM.YYYY]
# Description: {description}

#!/bin/bash
echo "This is a sample bash script for VLC automation."
vlc --play-and-exit sample_video.mp4
'''
    create_file(os.path.join(path, f"{filename}.sh"), content)

# Funksjon for å opprette en Anaconda environment.yml fil
def create_anaconda_file(path, filename):
    content = '''name: myenv
channels:
  - defaults
dependencies:
  - python=3.8
  - numpy
  - matplotlib
'''
    create_file(os.path.join(path, f"{filename}.yml"), content)

# Hovedfunksjon som oppretter mapper og filer
def main():
    base_dir = 'FTD02N'

    # Opprett mappestruktur
    create_directory(base_dir)
    create_directory(os.path.join(base_dir, 'Trinket'))
    create_directory(os.path.join(base_dir, 'Anaconda'))
    create_directory(os.path.join(base_dir, 'VLC'))
    create_directory(os.path.join(base_dir, 'Windows'))
    create_directory(os.path.join(base_dir, 'Lab'))

    # Opprett filer med innhold
    create_python_file(os.path.join(base_dir, 'Trinket'), 'trinket_script_1', 'This script is designed to run in Trinket.io to demonstrate basic data visualization.')
    create_readme(os.path.join(base_dir, 'Trinket'), 'Trinket Script 1', 'Dette skriptet er laget for å demonstrere grunnleggende datavisualisering i Trinket.io.')

    create_anaconda_file(os.path.join(base_dir, 'Anaconda'), 'environment')
    create_python_file(os.path.join(base_dir, 'Anaconda'), 'anaconda_script_1', 'This script is designed to run in Anaconda environment with specified dependencies.')
    create_readme(os.path.join(base_dir, 'Anaconda'), 'Anaconda Script 1', 'Dette skriptet er laget for å kjøre i Anaconda-miljø med spesifiserte avhengigheter.')

    create_bash_file(os.path.join(base_dir, 'VLC'), 'vlc_script_1', 'This bash script automates VLC playback of a video file.')
    create_readme(os.path.join(base_dir, 'VLC'), 'VLC Script 1', 'Dette bash-skriptet automatiserer VLC-avspilling av en videofil.')

    create_powershell_file(os.path.join(base_dir, 'Windows'), 'windows_script_1', 'This PowerShell script is designed to automate backups on a Windows system.')
    create_readme(os.path.join(base_dir, 'Windows'), 'Windows Script 1', 'Dette PowerShell-skriptet er laget for å automatisere backups på et Windows-system.')

    create_python_file(os.path.join(base_dir, 'Lab'), 'lab_script_1', 'This Python script is for lab experiments.')
    create_readme(os.path.join(base_dir, 'Lab'), 'Lab Script 1', 'Dette Python-skriptet er laget for laboratorieeksperimenter.')

    print("Alle mapper og filer er opprettet.")

if __name__ == "__main__":
    main()

Hvordan Skriptet Fungerer

  • create_directory(path): Oppretter en mappe hvis den ikke allerede eksisterer.
  • create_file(path, content): Oppretter en fil og fyller den med angitt innhold.
  • create_readme(path, filename, description): Oppretter en README.md-fil som beskriver skriptets funksjon.
  • create_python_file(path, filename, description): Oppretter en Python-fil med et eksempel på grunnleggende koding og dokumentasjon.
  • create_powershell_file(path, filename, description): Oppretter en PowerShell-fil med et eksempel på backup-automatisering.
  • create_bash_file(path, filename, description): Oppretter en Bash-fil med et eksempel på VLC-automatisering.
  • create_anaconda_file(path, filename): Oppretter en environment.yml-fil for Anaconda som definerer avhengigheter.

Hvordan Bruke Skriptet

  1. Kjør Skriptet: Kjør setup_environment.py-skriptet. Dette vil opprette en mappestruktur under FTD02N/ med mapper for forskjellige miljøer som Trinket, Anaconda, VLC, Windows, og Lab.

  2. Utforsk Mappene: Etter kjøring, utforsk mappene for å se de opprettede filene. Hver mappe inneholder et skript med dokumentasjon i toppen som forklarer hva skriptet gjør og hvordan det skal brukes.

  3. Tilpass Skriptene: Rediger filene for å tilpasse dem til dine spesifikke behov. Du kan endre Python-koden, oppdatere README.md-filene, eller legge til flere skript i de relevante mappene.

  4. Commit til GitHub: Når du er fornøyd med strukturen og filene, bruk git add, git commit, og git push for å laste opp alt til GitHub-repositoriet ditt.

  5. Kjør og Vedlikehold: Bruk CI/CD-pipelinen du opprettet tidligere for å kjøre tester og distribusjon av kode automatisk når du pusher endringer til GitHub.

Videre Bruk

  • Trinket: Bruk Trinket-mappen for skript som skal kjøres i Trinket.io. Du kan enkelt eksportere dem og dele med andre.
  • Anaconda: Bruk Anaconda-mappen for prosjekter som krever spesifikke Python-pakker, og opprett environment.yml-filer for å administrere avhengigheter.
  • VLC: Bruk VLC-mappen for skript som automatiserer medieavspilling, konvertering eller andre VLC-relaterte oppgaver.
  • Windows: Bruk Windows-mappen for automatisering og systemvedlikehold på Windows-maskiner ved hjelp av PowerShell- eller batch-skript.
  • Lab: Bruk Lab-mappen for å lagre og versjonskontrollere kode relatert til laboratoriearbeid og eksperimenter.

Dette skriptet gir deg en klar start på å organisere og vedlikeholde koden din på en strukturert måte, samtidig som du utnytter kraften i GitHub og CI/CD for å automatisere prosesser.