mirror of
https://github.com/dpup/meshstream.git
synced 2026-03-28 17:42:37 +01:00
Script for building and pushing docker to ECR
This commit is contained in:
5
.github/workflows/cicd.yml
vendored
5
.github/workflows/cicd.yml
vendored
@@ -27,11 +27,6 @@ jobs:
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y protobuf-compiler
|
||||
|
||||
- name: Install protoc-gen-go
|
||||
run: |
|
||||
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
|
||||
echo "$(go env GOPATH)/bin" >> $GITHUB_PATH
|
||||
|
||||
- name: Generate Protocol Buffers
|
||||
run: make gen-proto
|
||||
|
||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -34,7 +34,6 @@ Thumbs.db
|
||||
|
||||
# Dependency directories
|
||||
vendor/
|
||||
bin/tools/
|
||||
|
||||
# Log files
|
||||
*.log
|
||||
@@ -57,6 +56,7 @@ bin/tools/
|
||||
# Local development files
|
||||
*.local
|
||||
.air.toml
|
||||
*.local.sh
|
||||
|
||||
# Node.js
|
||||
node_modules/
|
||||
|
||||
2
Makefile
2
Makefile
@@ -47,7 +47,7 @@ baymesh: build
|
||||
@./dist/meshstream --verbose --mqtt-topic-prefix "msh/US/bayarea" 2>&1 | go tool github.com/dpup/logista
|
||||
|
||||
# Generate Go code from Protocol Buffers
|
||||
gen-proto:
|
||||
gen-proto: tools
|
||||
@mkdir -p $(ROOT_DIR)/generated
|
||||
PATH="$(TOOLS_DIR):$$PATH" protoc \
|
||||
-Iproto/ \
|
||||
|
||||
52
scripts/push-to-ecr.sh
Executable file
52
scripts/push-to-ecr.sh
Executable file
@@ -0,0 +1,52 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
# Load environment variables from .env file
|
||||
if [ -f .env ]; then
|
||||
echo "Loading environment variables from .env file"
|
||||
export $(grep -v '^#' .env | xargs)
|
||||
else
|
||||
echo "Warning: .env file not found. Using default environment variables."
|
||||
fi
|
||||
|
||||
# AWS ECR repository configuration
|
||||
if [ -z "${ECR_REPOSITORY}" ]; then
|
||||
echo "Error: ECR_REPOSITORY environment variable is not set. Please set it in .env file."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
AWS_REGION=${AWS_REGION:-"us-east-1"}
|
||||
IMAGE_TAG=${IMAGE_TAG:-"latest"}
|
||||
|
||||
# Check if AWS CLI is installed
|
||||
if ! command -v aws &> /dev/null; then
|
||||
echo "Error: AWS CLI is not installed. Please install it first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if Docker is installed
|
||||
if ! command -v docker &> /dev/null; then
|
||||
echo "Error: Docker is not installed. Please install it first."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Building Docker image for Meshstream..."
|
||||
docker build \
|
||||
--build-arg MESHSTREAM_API_BASE_URL="${MESHSTREAM_API_BASE_URL:-}" \
|
||||
--build-arg MESHSTREAM_APP_ENV="${MESHSTREAM_APP_ENV:-production}" \
|
||||
--build-arg MESHSTREAM_SITE_TITLE="${MESHSTREAM_SITE_TITLE:-Bay Area Mesh}" \
|
||||
--build-arg MESHSTREAM_SITE_DESCRIPTION="${MESHSTREAM_SITE_DESCRIPTION:-Meshtastic activity in the Bay Area region, CA.}" \
|
||||
--build-arg MESHSTREAM_GOOGLE_MAPS_ID="${MESHSTREAM_GOOGLE_MAPS_ID}" \
|
||||
--build-arg MESHSTREAM_GOOGLE_MAPS_API_KEY="${MESHSTREAM_GOOGLE_MAPS_API_KEY}" \
|
||||
-t meshstream:${IMAGE_TAG} .
|
||||
|
||||
echo "Tagging image for ECR repository..."
|
||||
docker tag meshstream:${IMAGE_TAG} ${ECR_REPOSITORY}:${IMAGE_TAG}
|
||||
|
||||
echo "Logging in to AWS ECR..."
|
||||
aws ecr get-login-password --region ${AWS_REGION} | docker login --username AWS --password-stdin ${ECR_REPOSITORY%/*}
|
||||
|
||||
echo "Pushing image to ECR repository..."
|
||||
docker push ${ECR_REPOSITORY}:${IMAGE_TAG}
|
||||
|
||||
echo "Successfully pushed image to ${ECR_REPOSITORY}:${IMAGE_TAG}"
|
||||
Reference in New Issue
Block a user