Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
0968f7b
docs: add PR template
sovva6-14 Jun 5, 2026
a75ef4e
docs: add PR template
sovva6-14 Jun 6, 2026
8450a05
docs: upstream moved while you worked
sovva6-14 Jun 6, 2026
be8c121
docs: add PR template
sovva6-14 Jun 7, 2026
9a2873e
wip(lab2): Work progress
sovva6-14 Jun 9, 2026
cf5cb87
Task1 Done
sovva6-14 Jun 9, 2026
ab8e9ad
Task1 Done
sovva6-14 Jun 9, 2026
04b5e86
docs: upstream moved while you worked
sovva6-14 Jun 9, 2026
19847ff
Lab2 Done
sovva6-14 Jun 9, 2026
55731b8
delete stupid
sovva6-14 Jun 9, 2026
657b853
test Verified
sovva6-14 Jun 9, 2026
51038bb
test again :)
sovva6-14 Jun 9, 2026
a56c59b
verified signature finaly
sovva6-14 Jun 9, 2026
0d27cbe
create feature/lab3, ci, update pr
sovva6-14 Jun 17, 2026
16c2493
pr update
sovva6-14 Jun 17, 2026
1a0b11d
Merge branch 'inno-devops-labs:main' into main
sovva6-14 Jun 17, 2026
90aa199
mrconfict
sovva6-14 Jun 17, 2026
239140a
Create go.yml
sovva6-14 Jun 17, 2026
82e7fcf
Create ci.yml
sovva6-14 Jun 17, 2026
58c3b24
Create pr_gate.yml
sovva6-14 Jun 17, 2026
eaf23fb
Create prgate.yml
sovva6-14 Jun 17, 2026
428accd
Update prgate.yml
sovva6-14 Jun 17, 2026
9c4b404
delete .yml files
sovva6-14 Jun 17, 2026
0ed06c8
new ci.yml
sovva6-14 Jun 17, 2026
2db3026
update ci sha
sovva6-14 Jun 17, 2026
5b93eed
fix golangci
sovva6-14 Jun 17, 2026
ed38523
update lab3 and pr_template
sovva6-14 Jun 17, 2026
dd00f36
complete lab4 (task1+task2)
sovva6-14 Jun 17, 2026
0f184f9
vagrantfile + lab5
sovva6-14 Jun 24, 2026
c23c730
submission lab5
sovva6-14 Jun 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
## Goal
<!-- What does this PR accomplish? 1 sentence. -->

Complete lab 3 DevOps

## Changes
* Added submissions/lab3.md
* Create GitHub Action CI Workflows
* Added Go environment ubuntu 24.04

## Testing
<!-- How did you verify it? -->
* Start CI action on GitHub and green CI run
* Verfied CI run pipeline

## Checklist
- ☑️ Title is a clear sentence (≤ 70 chars)
- ☑️ Vet, Test, and Lint checks pass
- ☑️ `submissions/lab3.md` updated
83 changes: 83 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
name: PR Gate

on:
push:
branches: [ main ]
paths:
- 'app/**'
- '.github/workflows/ci.yml'
pull_request:
branches: [ main ]
paths:
- 'app/**'
- '.github/workflows/ci.yml'

permissions:
contents: read # минимальные права

jobs:
# ---------- vet ----------
vet:
name: go vet
runs-on: ubuntu-24.04
strategy:
matrix:
go-version: [ '1.23', '1.24' ]
fail-fast: false
defaults:
run:
working-directory: app
steps:
- name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Setup Go
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.3.0
with:
go-version: ${{ matrix.go-version }}
cache: true
- name: Run go vet
run: go vet ./...

# ---------- test ----------
test:
name: go test -race
runs-on: ubuntu-24.04
strategy:
matrix:
go-version: [ '1.23', '1.24' ]
fail-fast: false
defaults:
run:
working-directory: app
steps:
- name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Setup Go
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.3.0
with:
go-version: ${{ matrix.go-version }}
cache: true
- name: Run tests with race detector
run: go test -race -count=1 ./...

# ---------- lint ----------
lint:
name: golangci-lint
runs-on: ubuntu-24.04
defaults:
run:
working-directory: app
steps:
- name: Checkout code
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Setup Go
uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.3.0
with:
go-version: '1.24' # достаточно одной версии для линтера
cache: true
- name: Install golangci-lint v2.5.0
run: |
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | \
sh -s -- -b $(go env GOPATH)/bin v2.5.0
- name: Run golangci-lint
run: golangci-lint run ./...
Binary file added app/lab4-trace.pcap
Binary file not shown.
Binary file added lab4-trace.pcap
Binary file not shown.
132 changes: 132 additions & 0 deletions lab4-trace.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
19:11:19.932815 IP 127.0.0.1.42566 > 127.0.0.1.8080: Flags [S], seq 3179416048, win 65495, options [mss 65495,sackOK,TS val 2461922435 ecr 0,nop,wscale 7], length 0
E..<..@.@.(..........F.... ..........0.........
............
19:11:19.932821 IP 127.0.0.1.8080 > 127.0.0.1.42566: Flags [R.], seq 0, ack 3179416049, win 0, length 0
E..(..@.@.<............F...... .P...$...
19:11:19.932861 IP6 ::1.40002 > ::1.8080: Flags [S], seq 2374255427, win 65476, options [mss 65476,sackOK,TS val 2676338689 ecr 0,nop,wscale 7], length 0
`.~..(.@.................................B....CC.........0.........
............
19:11:19.932866 IP6 ::1.8080 > ::1.40002: Flags [R.], seq 0, ack 2374255428, win 0, length 0
`.k9...@...................................B......CDP.......
19:12:26.641138 IP 127.0.0.1.41710 > 127.0.0.1.8080: Flags [S], seq 509650619, win 65495, options [mss 65495,sackOK,TS val 2461989143 ecr 0,nop,wscale 7], length 0
E..<1.@.@.
..............`...........0.........
............
19:12:26.641142 IP 127.0.0.1.8080 > 127.0.0.1.41710: Flags [R.], seq 0, ack 509650620, win 0, length 0
E..(..@.@.<..................`..P...*3..
19:12:26.641165 IP6 ::1.32816 > ::1.8080: Flags [S], seq 630744336, win 65476, options [mss 65476,sackOK,TS val 2676405397 ecr 0,nop,wscale 7], length 0
` .d.(.@.................................0..%.e..........0.........
............
19:12:26.641168 IP6 ::1.8080 > ::1.32816: Flags [R.], seq 0, ack 630744337, win 0, length 0
`.$....@...................................0....%.e.P.......
19:12:43.027807 IP 127.0.0.1.41602 > 127.0.0.1.8080: Flags [S], seq 851489407, win 65495, options [mss 65495,sackOK,TS val 2462005530 ecr 0,nop,wscale 7], length 0
E..<.y@.@..@............2............0.........
..9.........
19:12:43.027811 IP 127.0.0.1.8080 > 127.0.0.1.41602: Flags [R.], seq 0, ack 851489408, win 0, length 0
E..(..@.@.<.................2...P...
{..
19:12:43.027836 IP6 ::1.34804 > ::1.8080: Flags [S], seq 3910870731, win 65476, options [mss 65476,sackOK,TS val 2676421784 ecr 0,nop,wscale 7], length 0
`..Q.(.@......................................&..........0.........
............
19:12:43.027839 IP6 ::1.8080 > ::1.34804: Flags [R.], seq 0, ack 3910870732, win 0, length 0
`......@..........................................&.P.......
19:12:54.413810 IP 127.0.0.1.52472 > 127.0.0.1.8080: Flags [S], seq 1293846705, win 65495, options [mss 65495,sackOK,TS val 2462016916 ecr 0,nop,wscale 7], length 0
E..<.H@.@.[q............M............0.........
..e.........
19:12:54.413816 IP 127.0.0.1.8080 > 127.0.0.1.52472: Flags [R.], seq 0, ack 1293846706, win 0, length 0
E..(..@.@.<.................M...P....t..
19:12:54.413855 IP6 ::1.50118 > ::1.8080: Flags [S], seq 971549680, win 65476, options [mss 65476,sackOK,TS val 2676433170 ecr 0,nop,wscale 7], length 0
`.|s.(.@....................................9............0.........
..!.........
19:12:54.413860 IP6 ::1.8080 > ::1.50118: Flags [R.], seq 0, ack 971549681, win 0, length 0
`.+f...@........................................9...P.......
19:13:30.465338 IP 127.0.0.1.45936 > 127.0.0.1.8080: Flags [S], seq 499019428, win 65495, options [mss 65495,sackOK,TS val 2462052968 ecr 0,nop,wscale 7], length 0
E..<c.@.@............p....n..........0.........
...h........
19:13:30.465343 IP 127.0.0.1.8080 > 127.0.0.1.45936: Flags [R.], seq 0, ack 499019429, win 0, length 0
E..(..@.@.<............p......n.P...Rj..
19:13:30.465371 IP6 ::1.45326 > ::1.8080: Flags [S], seq 2488604191, win 65476, options [mss 65476,sackOK,TS val 2676469222 ecr 0,nop,wscale 7], length 0
`.J .(.@.....................................U...........0.........
............
19:13:30.465375 IP6 ::1.8080 > ::1.45326: Flags [R.], seq 0, ack 2488604192, win 0, length 0
`../...@.........................................U. P.......
21:33:29.974894 IP 127.0.0.1.54142 > 127.0.0.1.8080: Flags [S], seq 289262757, win 65495, options [mss 65495,sackOK,TS val 2470452477 ecr 0,nop,wscale 7], length 0
E..<.$@.@............~...=...........0.........
.@..........
21:33:29.974902 IP 127.0.0.1.8080 > 127.0.0.1.54142: Flags [S.], seq 2132570133, ack 289262758, win 65483, options [mss 65495,sackOK,TS val 2470452477 ecr 2470452477,nop,wscale 7], length 0
E..<..@.@.<............~..p..=.......0.........
.@...@......
21:33:29.974907 IP 127.0.0.1.54142 > 127.0.0.1.8080: Flags [.], ack 1, win 512, options [nop,nop,TS val 2470452477 ecr 2470452477], length 0
E..4.%@.@............~...=....p......(.....
.@...@..
21:33:29.974939 IP 127.0.0.1.54142 > 127.0.0.1.8080: Flags [P.], seq 1:176, ack 1, win 512, options [nop,nop,TS val 2470452477 ecr 2470452477], length 175: HTTP: POST /notes HTTP/1.1
E....&@.@............~...=....p............
.@...@..POST /notes HTTP/1.1
Host: localhost:8080
User-Agent: curl/7.81.0
Accept: */*
Content-Type: application/json
Content-Length: 39

{"title":"trace me","body":"in flight"}
21:33:29.974940 IP 127.0.0.1.8080 > 127.0.0.1.54142: Flags [.], ack 176, win 511, options [nop,nop,TS val 2470452477 ecr 2470452477], length 0
E..4.+@.@.$............~..p..=.U.....(.....
.@...@..
21:33:29.980128 IP 127.0.0.1.8080 > 127.0.0.1.54142: Flags [P.], seq 1:207, ack 176, win 512, options [nop,nop,TS val 2470452482 ecr 2470452477], length 206: HTTP: HTTP/1.1 201 Created
E....,@.@.#............~..p..=.U...........
.@...@..HTTP/1.1 201 Created
Content-Type: application/json
Date: Wed, 17 Jun 2026 18:33:29 GMT
Content-Length: 93

{"id":5,"title":"trace me","body":"in flight","created_at":"2026-06-17T18:33:29.975704318Z"}

21:33:29.980139 IP 127.0.0.1.54142 > 127.0.0.1.8080: Flags [.], ack 207, win 511, options [nop,nop,TS val 2470452482 ecr 2470452482], length 0
E..4.'@.@............~...=.U..p......(.....
.@...@..
21:33:29.980234 IP 127.0.0.1.54142 > 127.0.0.1.8080: Flags [F.], seq 176, ack 207, win 512, options [nop,nop,TS val 2470452482 ecr 2470452482], length 0
E..4.(@.@............~...=.U..p......(.....
.@...@..
21:33:29.980286 IP 127.0.0.1.8080 > 127.0.0.1.54142: Flags [F.], seq 207, ack 177, win 512, options [nop,nop,TS val 2470452482 ecr 2470452482], length 0
E..4.-@.@.$............~..p..=.V.....(.....
.@...@..
21:33:29.980293 IP 127.0.0.1.54142 > 127.0.0.1.8080: Flags [.], ack 208, win 512, options [nop,nop,TS val 2470452482 ecr 2470452482], length 0
E..4.)@.@............~...=.V..p......(.....
.@...@..
21:34:41.834814 IP 127.0.0.1.47718 > 127.0.0.1.8080: Flags [S], seq 1421564529, win 65495, options [mss 65495,sackOK,TS val 2470524337 ecr 0,nop,wscale 7], length 0
E..<g+@.@............f..T.Zq.........0.........
.A5.........
21:34:41.834822 IP 127.0.0.1.8080 > 127.0.0.1.47718: Flags [S.], seq 2578938132, ack 1421564530, win 65483, options [mss 65495,sackOK,TS val 2470524337 ecr 2470524337,nop,wscale 7], length 0
E..<..@.@.<............f..y.T.Zr.....0.........
.A5..A5.....
21:34:41.834828 IP 127.0.0.1.47718 > 127.0.0.1.8080: Flags [.], ack 1, win 512, options [nop,nop,TS val 2470524337 ecr 2470524337], length 0
E..4g,@.@............f..T.Zr..y......(.....
.A5..A5.
21:34:41.834861 IP 127.0.0.1.47718 > 127.0.0.1.8080: Flags [P.], seq 1:176, ack 1, win 512, options [nop,nop,TS val 2470524337 ecr 2470524337], length 175: HTTP: POST /notes HTTP/1.1
E...g-@.@............f..T.Zr..y............
.A5..A5.POST /notes HTTP/1.1
Host: localhost:8080
User-Agent: curl/7.81.0
Accept: */*
Content-Type: application/json
Content-Length: 39

{"title":"trace me","body":"in flight"}
21:34:41.834863 IP 127.0.0.1.8080 > 127.0.0.1.47718: Flags [.], ack 176, win 511, options [nop,nop,TS val 2470524337 ecr 2470524337], length 0
E..4.i@.@..X...........f..y.T.[!.....(.....
.A5..A5.
21:34:41.839333 IP 127.0.0.1.8080 > 127.0.0.1.47718: Flags [P.], seq 1:207, ack 176, win 512, options [nop,nop,TS val 2470524341 ecr 2470524337], length 206: HTTP: HTTP/1.1 201 Created
E....j@.@..............f..y.T.[!...........
.A5..A5.HTTP/1.1 201 Created
Content-Type: application/json
Date: Wed, 17 Jun 2026 18:34:41 GMT
Content-Length: 93

{"id":6,"title":"trace me","body":"in flight","created_at":"2026-06-17T18:34:41.835071034Z"}

21:34:41.839349 IP 127.0.0.1.47718 > 127.0.0.1.8080: Flags [.], ack 207, win 511, options [nop,nop,TS val 2470524342 ecr 2470524341], length 0
E..4g.@.@............f..T.[!..y......(.....
.A5..A5.
21:34:41.839506 IP 127.0.0.1.47718 > 127.0.0.1.8080: Flags [F.], seq 176, ack 207, win 512, options [nop,nop,TS val 2470524342 ecr 2470524341], length 0
E..4g/@.@............f..T.[!..y......(.....
.A5..A5.
160 changes: 160 additions & 0 deletions submissions/lab2.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
#important work


```git rev-parse HEAD```

66bbd4db9228bc9a4cab7439746b993749c026ab

```git cat-file -t HEAD```

commit

```git cat-file -p HEAD```

tree 20bda2b2625085720751a3e794f82e5625a409b3
parent 170000c9d1b5e90a37b6f1a9b826552d53051773
author Dmitrii Creed <creeed22@gmail.com> 1780392934 +0400
committer Dmitrii Creed <creeed22@gmail.com> 1780394046 +0400

```git cat-file -p 20bda2b2625085720751a3e794f82e5625a409b3```

100644 blob 1c0a1e94b7bbdd951f456cda51af6b8484cc3cee .gitignore
100644 blob d10c04c6e7e0014f4fe883599c11747c15012d4e README.md
040000 tree 7d0898a908e274ea809722844cdbd836f3b1c05a app
040000 tree 6db686e340ecdd318fa43375e26254293371942a labs
040000 tree 3f11973a71be5915539cb53313149aa319d69cb5 lectures

```git cat-file -p 7d0898a908e274ea809722844cdbd836f3b1c05a```

100644 blob 8ba1a5234925005265281bf7809153487097373c .golangci.yml
100644 blob 24ab0258318f4aac6ec7d3a924a1d6f05209b446 Makefile
100644 blob 1aed7f8904100182d3fb4e1b90dbf3bd5a126beb README.md
100644 blob b76e91cf916dcebc1d6898e22012c737c117003a go.mod
100644 blob c534979c5a3aa0e032fb61e1562d4bd343ecaf4c handlers.go
100644 blob 9dff2e3e5b734f9afa4bc26c30d784bee8aa327c handlers_test.go
100644 blob e258ffcfe44ebc6923eb78d51c63fc2317aa1dfd main.go
100644 blob ecf4fd2edd38dcbc82459122660aa424342f9148 seed.json
100644 blob 4a9ca2b3a371cc43f8762095a6944cd96ea7d7d0 store.go
100644 blob 3b8ff9d45ae9e6781ffe333ccc7eff40da35a1bf store_test.go

```ls -la .git/```

total 25
drwxr-xr-x 1 UserName 197121 0 Jun 9 15:17 ./
drwxr-xr-x 1 UserName 197121 0 Jun 9 15:18 ../
-rw-r--r-- 1 UserName 197121 80 Jun 8 00:20 COMMIT_EDITMSG
-rw-r--r-- 1 UserName 197121 189 Jun 8 00:34 config
-rw-r--r-- 1 UserName 197121 73 Jun 4 00:25 description
-rw-r--r-- 1 UserName 197121 0 Jun 9 15:22 FETCH_HEAD
-rw-r--r-- 1 UserName 197121 29 Jun 9 15:17 HEAD
drwxr-xr-x 1 UserName 197121 0 Jun 4 00:25 hooks/
-rw-r--r-- 1 UserName 197121 3055 Jun 9 15:16 index
drwxr-xr-x 1 UserName 197121 0 Jun 4 00:25 info/
drwxr-xr-x 1 UserName 197121 0 Jun 4 00:25 logs/
drwxr-xr-x 1 UserName 197121 0 Jun 9 15:22 objects/
-rw-r--r-- 1 UserName 197121 46 Jun 4 00:32 packed-refs
drwxr-xr-x 1 UserName 197121 0 Jun 4 00:25 refs/

```cat .git/HEAD```

ref: refs/heads/feature/lab2

```ls .git/refs/heads/```

feature/ main

```ls .git/objects/ | head```

0a/
0c/
0e/
0f/
13/
1a/
27/
38/
3a/
40/

```find .git/objects -type f | wc -l```

29


```git log --oneline```

66bbd4d (HEAD -> feature/lab2, main) docs(lab1): align Task 3 GitHub Community engagement with other courses
170000c Merge pull request #907 from inno-devops-labs/s26-refactor
d50436c fix(lab12,gitignore): Spin SDK (WAGI removed in Spin 3.x); minimal student-safe gitignore
4705a3d fix(.gitignore): stop ignoring submissions/
4082340 docs(grading,lab11,lab12): bonus labs to 4+4+2; grading rebalanced to 70-14-5-20-30 = 139%
7b16dc5 docs(lab10): switch deploy targets to card-free platforms — HF Spaces + Cloudflare Tunnel
4a05efa docs(labs): scaffold the skill — labs 5-12 stop handing students copy-paste answers
8387fb9 docs(lab3): scaffold the skill — students write their own CI yaml; GitLab as parallel path
983fba0 docs(course): rewrite README + add .gitignore for project-threaded structure
7914e37 docs(labs): refactor 12 labs to 6+4+2 (lab1) / 6+4+bonus (lab2-10) / 10pts (lab11-12)
aa5aa1c docs(lectures): rewrite lec1-10 + add reading11/12 for project-threaded course
b8fc480 feat(app): introduce QuickNotes Go service for project-threaded course
6f044dd Replace IPFS with Nix
0a87e1c refactor: reduce prescriptiveness in GitLab CI instructions
eaea715 feat: add GitLab CI alternative instructions to lab3
d6b6a03 Update lab2
87810a0 feat: remove old Exam Exemption Policy
1e1c32b feat: update structure
6c27ee7 feat: publish lecs 9 & 10
1826c36 feat: update lab7
3049f08 feat: publish lec8
da8f635 feat: introduce all labs and revised structure
04b174e feat: publish lab and lec #5
67f12f1 feat: publish labs 4&5, revise others
82d1989 feat: publish lab3 and lec3
3f80c83 feat: publish lec2
499f2ba feat: publish lab2
af0da89 feat: update lab1
74a8c27 Publish lab1
f0485c0 Publish lec1
31dd11b Publish README.md

```git reflog```

66bbd4d (HEAD -> feature/lab2, main) HEAD@{0}: reset: moving to HEAD~2
03cdb25 HEAD@{1}: commit: lab1
9a2873e HEAD@{2}: commit: wip(lab2): Work progress
66bbd4d (HEAD -> feature/lab2, main) HEAD@{3}: checkout: moving from main to feature/lab2
66bbd4d (HEAD -> feature/lab2, main) HEAD@{4}: checkout: moving from feature/lab1 to main
dce058f (feature/lab1) HEAD@{5}: checkout: moving from main to feature/lab1
66bbd4d (HEAD -> feature/lab2, main) HEAD@{6}: checkout: moving from feature/lab1 to main
dce058f (feature/lab1) HEAD@{7}: commit: docs(lab1): start submission
66bbd4d (HEAD -> feature/lab2, main) HEAD@{8}: checkout: moving from main to feature/lab1
66bbd4d (HEAD -> feature/lab2, main) HEAD@{9}: clone: from https://github.com/sovva6-14/DevOps-Intro.git

```git reset --hard 9a2873e```

HEAD is now at 9a2873e wip(lab2): Work progress

```git push origin "v0.1.0-lab2-Sovva"```


Enumerating objects: 1, done.
Counting objects: 100% (1/1), done.
Writing objects: 100% (1/1), 420 bytes | 420.00 KiB/s, done.
Total 1 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
To https://github.com/sovva6-14/DevOps-Intro.git
* [new tag] v0.1.0-lab2-Sovva -> v0.1.0-lab2-Sovva

```git commit -S -s --allow-empty -m "docs: upstream moved while you worked"```

[feature/lab2 04b5e86] docs: upstream moved while you worked


```git push --force-with-lease origin feature/lab2```

Enumerating objects: 14, done.
Counting objects: 100% (14/14), done.
Delta compression using up to 20 threads
Compressing objects: 100% (10/10), done.
Writing objects: 100% (13/13), 3.95 KiB | 3.96 MiB/s, done.
Total 13 (delta 7), reused 6 (delta 1), pack-reused 0 (from 0)
remote: Resolving deltas: 100% (7/7), completed with 1 local object.
To https://github.com/sovva6-14/DevOps-Intro.git
+ be131f7...04b5e86 feature/lab2 -> feature/lab2 (forced update)
Loading