Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add ci checks #864

Open
wants to merge 22 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
1946d48
update README.md
sivaratrisrinivas Nov 26, 2024
951d561
added Github action workflows
sivaratrisrinivas Nov 26, 2024
d1f0bb5
made last step change in job
sivaratrisrinivas Nov 26, 2024
2fe94bd
update step in tests job
sivaratrisrinivas Nov 27, 2024
05b2d8a
update step in tests job
sivaratrisrinivas Nov 27, 2024
3b9107b
update step in tests job
sivaratrisrinivas Nov 27, 2024
b1144be
update README.md
sivaratrisrinivas Nov 27, 2024
4c08bd2
update README.md
sivaratrisrinivas Nov 27, 2024
c4e23d3
Merge pull request #1 from srinivassivaratri/addtests
sivaratrisrinivas Nov 27, 2024
555987e
add style job to ci.yml
sivaratrisrinivas Nov 27, 2024
14a1390
Add style checks to CI workflow
sivaratrisrinivas Nov 27, 2024
0254caa
Merge pull request #4 from srinivassivaratri/add-ci-checks
sivaratrisrinivas Nov 27, 2024
7e2933b
Add gosec security checks to CI workflow
sivaratrisrinivas Nov 28, 2024
1006cbb
Fix security issues found by gosec
sivaratrisrinivas Nov 28, 2024
81dc675
Fix security issues found by gosec
sivaratrisrinivas Nov 28, 2024
24a752f
Fix format check command in CI workflow
sivaratrisrinivas Nov 28, 2024
1b133c5
Fix format check command in CI workflow
sivaratrisrinivas Nov 28, 2024
0ad7c6f
Fix fcode formatting
sivaratrisrinivas Nov 28, 2024
272990b
added Deploy job in cd.yml
sivaratrisrinivas Nov 29, 2024
7523ff4
Merge pull request #7 from srinivassivaratri/add-gosec-checks
sivaratrisrinivas Nov 29, 2024
5efa296
feat: add CI/CD configuration for GCP deployment
sivaratrisrinivas Dec 3, 2024
29ba246
Merge pull request #3 from srinivassivaratri/main
sivaratrisrinivas Dec 3, 2024
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
48 changes: 48 additions & 0 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
name: CD

on:
push:
branches: [main]

jobs:
Deploy:
<<<<<<< HEAD
=======
permissions:
contents: 'read'
id-token: 'write'

>>>>>>> feat: add CI/CD configuration for GCP deployment
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: Set up Go
uses: actions/setup-go@v4
with:
<<<<<<< HEAD
go-version: '1.23.0'

- name: Build Production
run: bash scripts/buildprod.sh
=======
go-version: '1.22.0'

- name: Build Production
run: bash scripts/buildprod.sh

- name: Google Auth
uses: 'google-github-actions/auth@v2'
with:
credentials_json: '${{ secrets.GCP_CREDENTIALS }}'

- name: Set up Cloud SDK
uses: 'google-github-actions/setup-gcloud@v2'

- name: Configure Docker for Artifact Registry
run: gcloud auth configure-docker us-central1-docker.pkg.dev --quiet

- name: Build and Push Docker image
run: |
gcloud builds submit --tag us-central1-docker.pkg.dev/notely-443204/notely-ar-repo/notely:latest .
>>>>>>> feat: add CI/CD configuration for GCP deployment
50 changes: 50 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: ci

on:
pull_request:
branches: [main]

jobs:
tests:
name: Tests
runs-on: ubuntu-latest

steps:
- name: Check out code
uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.23.0'

- name: Run unit tests
run: go test ./... -cover

- name: Install gosec
run: go install github.com/securego/gosec/v2/cmd/gosec@latest

- name: Run gosec
run: gosec ./...

style:
name: Style
runs-on: ubuntu-latest

steps:
- name: Check out code
uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: '1.23.0'

- name: Check formatting
run: test -z $(go fmt ./...)

- name: Install staticcheck
run: go install honnef.co/go/tools/cmd/staticcheck@latest

- name: Run staticcheck
run: staticcheck ./...
41 changes: 39 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,41 @@
# Binary files
out
.env
learn-cicd-starter
notely
learn-cicd-starter

# Environment files
.env
.env.*

# Google Cloud SDK
google-cloud-sdk/
google-cloud-cli-*.tar.gz

# Build artifacts
*.exe
*.exe~
*.dll
*.so
*.dylib
bin/
dist/

# Go specific
*.test
*.out
vendor/
go.work

# IDE and editor files
.idea/
.vscode/
*.swp
*.swo

# OS specific
.DS_Store
Thumbs.db

# Temporary files
tmp/
temp/
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# learn-cicd-starter (Notely)

![Tests](https://github.com/srinivasivaratri/learn-cicd-starter/actions/workflows/ci.yml/badge.svg)

This repo contains the starter code for the "Notely" application for the "Learn CICD" course on [Boot.dev](https://boot.dev).

## Local Development
Expand All @@ -21,3 +23,6 @@ go build -o notely && ./notely
*This starts the server in non-database mode.* It will serve a simple webpage at `http://localhost:8080`.

You do *not* need to set up a database or any interactivity on the webpage yet. Instructions for that will come later in the course!


Srinivas's version of Boot.dev's Notely app.
9 changes: 5 additions & 4 deletions json.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,14 @@ func respondWithError(w http.ResponseWriter, code int, msg string) {
}

func respondWithJSON(w http.ResponseWriter, code int, payload interface{}) {
w.Header().Set("Content-Type", "application/json")
dat, err := json.Marshal(payload)
if err != nil {
log.Printf("Error marshalling JSON: %s", err)
w.WriteHeader(500)
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(code)
w.Write(dat)
if _, err := w.Write(dat); err != nil {
log.Printf("Error writing response: %v", err)
}
}
11 changes: 8 additions & 3 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"log"
"net/http"
"os"
"time"

"github.com/go-chi/chi"
"github.com/go-chi/cors"
Expand Down Expand Up @@ -89,10 +90,14 @@ func main() {

router.Mount("/v1", v1Router)
srv := &http.Server{
Addr: ":" + port,
Handler: router,
Addr: ":" + port,
Handler: router,
ReadHeaderTimeout: 5 * time.Second,
}

log.Printf("Serving on port: %s\n", port)
log.Printf("serving on port: %s\n", port)
log.Fatal(srv.ListenAndServe())
}