first commit
build and deploy / build (push) Successful in 1m29s
Details
build and deploy / build (push) Successful in 1m29s
Details
This commit is contained in:
commit
e740a5d93d
|
@ -0,0 +1,36 @@
|
||||||
|
name: build and deploy
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: catthehacker/ubuntu:act-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
- uses: docker/setup-buildx-action@v3
|
||||||
|
- uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: git.usbharu.dev
|
||||||
|
username: usbharu
|
||||||
|
password: ${{ secrets.PUBLIC_REPOSITORY_PACKAGE_WRITE_TOKEN }}
|
||||||
|
- name: metadata
|
||||||
|
id: meta
|
||||||
|
uses: docker/metadata-action@v5
|
||||||
|
with:
|
||||||
|
images: git.usbharu.dev/usbharu/pg_backup_job
|
||||||
|
tags: |
|
||||||
|
type=raw,value=latest
|
||||||
|
type=sha,prefix=,suffix=,format=short
|
||||||
|
- name: build
|
||||||
|
uses: docker/build-push-action@v5
|
||||||
|
with:
|
||||||
|
file: ./Dockerfile
|
||||||
|
push: true
|
||||||
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
|
labels: ${{ steps.meta.outputs.labels }}
|
|
@ -0,0 +1,8 @@
|
||||||
|
# デフォルトの無視対象ファイル
|
||||||
|
/shelf/
|
||||||
|
/workspace.xml
|
||||||
|
# エディターベースの HTTP クライアントリクエスト
|
||||||
|
/httpRequests/
|
||||||
|
# Datasource local storage ignored files
|
||||||
|
/dataSources/
|
||||||
|
/dataSources.local.xml
|
|
@ -0,0 +1,17 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="DataSourceManagerImpl" format="xml" multifile-model="true">
|
||||||
|
<data-source source="LOCAL" name="postgres@localhost" uuid="da0cdc63-ec5f-4210-aa59-8ae07b84b63f">
|
||||||
|
<driver-ref>postgresql</driver-ref>
|
||||||
|
<synchronize>true</synchronize>
|
||||||
|
<jdbc-driver>org.postgresql.Driver</jdbc-driver>
|
||||||
|
<jdbc-url>jdbc:postgresql://localhost:5432/postgres</jdbc-url>
|
||||||
|
<jdbc-additional-properties>
|
||||||
|
<property name="com.intellij.clouds.kubernetes.db.host.port" />
|
||||||
|
<property name="com.intellij.clouds.kubernetes.db.enabled" value="false" />
|
||||||
|
<property name="com.intellij.clouds.kubernetes.db.container.port" />
|
||||||
|
</jdbc-additional-properties>
|
||||||
|
<working-dir>$ProjectFileDir$</working-dir>
|
||||||
|
</data-source>
|
||||||
|
</component>
|
||||||
|
</project>
|
|
@ -0,0 +1,25 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="JsonSchemaMappingsProjectConfiguration">
|
||||||
|
<state>
|
||||||
|
<map>
|
||||||
|
<entry key="docker-compose.yml">
|
||||||
|
<value>
|
||||||
|
<SchemaInfo>
|
||||||
|
<option name="name" value="docker-compose.yml" />
|
||||||
|
<option name="relativePathToSchema" value="https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json" />
|
||||||
|
<option name="applicationDefined" value="true" />
|
||||||
|
<option name="patterns">
|
||||||
|
<list>
|
||||||
|
<Item>
|
||||||
|
<option name="path" value="docker-compose.yml" />
|
||||||
|
</Item>
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</SchemaInfo>
|
||||||
|
</value>
|
||||||
|
</entry>
|
||||||
|
</map>
|
||||||
|
</state>
|
||||||
|
</component>
|
||||||
|
</project>
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectRootManager">
|
||||||
|
<output url="file://$PROJECT_DIR$/out" />
|
||||||
|
</component>
|
||||||
|
</project>
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectModuleManager">
|
||||||
|
<modules>
|
||||||
|
<module fileurl="file://$PROJECT_DIR$/pg_backup_job.iml" filepath="$PROJECT_DIR$/pg_backup_job.iml" />
|
||||||
|
</modules>
|
||||||
|
</component>
|
||||||
|
</project>
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
|
@ -0,0 +1,20 @@
|
||||||
|
# ベースイメージにPostgreSQL 15の公式クライアントを使用
|
||||||
|
FROM postgres:15
|
||||||
|
|
||||||
|
# 必要なツールをインストール
|
||||||
|
RUN apt-get update && apt-get install -y \
|
||||||
|
curl \
|
||||||
|
awscli \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# 作業ディレクトリ
|
||||||
|
WORKDIR /backup
|
||||||
|
|
||||||
|
# スクリプトをコピー
|
||||||
|
COPY backup.sh /backup/backup.sh
|
||||||
|
|
||||||
|
# 実行権限を付与
|
||||||
|
RUN chmod +x /backup/backup.sh
|
||||||
|
|
||||||
|
# エントリーポイントを設定
|
||||||
|
ENTRYPOINT ["/backup/backup.sh"]
|
|
@ -0,0 +1,34 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# 必須環境変数のチェック
|
||||||
|
if [[ -z "${PG_HOST}" || -z "${PG_PORT}" || -z "${PG_USER}" || -z "${PG_PASSWORD}" || -z "${PG_DATABASE}" || -z "${S3_BUCKET}" || -z "${AWS_ACCESS_KEY_ID}" || -z "${AWS_SECRET_ACCESS_KEY}" ]]; then
|
||||||
|
echo "必須環境変数が設定されていません。"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 環境変数の設定
|
||||||
|
export AWS_ACCESS_KEY_ID="${AWS_ACCESS_KEY_ID}"
|
||||||
|
export AWS_SECRET_ACCESS_KEY="${AWS_SECRET_ACCESS_KEY}"
|
||||||
|
export AWS_DEFAULT_REGION="${AWS_DEFAULT_REGION:-us-east-1}"
|
||||||
|
|
||||||
|
# ダンプファイル名
|
||||||
|
DUMP_FILE="dump_$(date +%Y%m%d%H%M%S).sql"
|
||||||
|
|
||||||
|
# pg_dumpを実行
|
||||||
|
export PGPASSWORD="${PG_PASSWORD}"
|
||||||
|
pg_dump -h "${PG_HOST}" -p "${PG_PORT}" -U "${PG_USER}" -d "${PG_DATABASE}" -F c -b -v -f "${DUMP_FILE}"
|
||||||
|
|
||||||
|
# S3にアップロード
|
||||||
|
if [[ -n "${S3_ENDPOINT}" ]]; then
|
||||||
|
# カスタムエンドポイント指定時
|
||||||
|
aws --endpoint-url "${S3_ENDPOINT}" s3 cp "${DUMP_FILE}" "s3://${S3_BUCKET}/${DUMP_FILE}"
|
||||||
|
else
|
||||||
|
# デフォルトエンドポイント
|
||||||
|
aws s3 cp "${DUMP_FILE}" "s3://${S3_BUCKET}/${DUMP_FILE}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ローカルのダンプファイルを削除
|
||||||
|
rm -f "${DUMP_FILE}"
|
||||||
|
|
||||||
|
echo "バックアップとアップロードが完了しました。"
|
|
@ -0,0 +1,62 @@
|
||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
db:
|
||||||
|
image: postgres:15
|
||||||
|
container_name: postgres_db
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: testuser
|
||||||
|
POSTGRES_PASSWORD: testpassword
|
||||||
|
POSTGRES_DB: testdb
|
||||||
|
ports:
|
||||||
|
- "5435:5432"
|
||||||
|
volumes:
|
||||||
|
- db_data:/var/lib/postgresql/data
|
||||||
|
|
||||||
|
|
||||||
|
pg_dump_uploader:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
container_name: pg_dump_uploader
|
||||||
|
environment:
|
||||||
|
PG_HOST: db
|
||||||
|
PG_PORT: 5432
|
||||||
|
PG_USER: testuser
|
||||||
|
PG_PASSWORD: testpassword
|
||||||
|
PG_DATABASE: testdb
|
||||||
|
S3_BUCKET: test-bucket
|
||||||
|
AWS_ACCESS_KEY_ID: test-access-key
|
||||||
|
AWS_SECRET_ACCESS_KEY: test-secret-key
|
||||||
|
AWS_DEFAULT_REGION: us-east-1
|
||||||
|
S3_ENDPOINT: http://minio:9000
|
||||||
|
depends_on:
|
||||||
|
- db
|
||||||
|
- minio
|
||||||
|
|
||||||
|
minio:
|
||||||
|
image: minio/minio
|
||||||
|
container_name: minio
|
||||||
|
command: server /data --console-address ":9001"
|
||||||
|
environment:
|
||||||
|
MINIO_ROOT_USER: test-access-key
|
||||||
|
MINIO_ROOT_PASSWORD: test-secret-key
|
||||||
|
ports:
|
||||||
|
- "9000:9000"
|
||||||
|
- "9001:9001"
|
||||||
|
volumes:
|
||||||
|
- minio_data:/data
|
||||||
|
createbuckets:
|
||||||
|
image: minio/mc
|
||||||
|
depends_on:
|
||||||
|
- minio
|
||||||
|
entrypoint: >
|
||||||
|
/bin/sh -c "
|
||||||
|
until (/usr/bin/mc config host add myminio http://minio:9000 test-access-key test-secret-key) do echo '...waiting...' && sleep 1; done;
|
||||||
|
/usr/bin/mc mb myminio/test-bucket;
|
||||||
|
/usr/bin/mc policy download myminio/test-bucket;
|
||||||
|
exit 0;
|
||||||
|
"
|
||||||
|
volumes:
|
||||||
|
db_data:
|
||||||
|
minio_data:
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<module type="GENERAL_MODULE" version="4">
|
||||||
|
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||||
|
<exclude-output />
|
||||||
|
<content url="file://$MODULE_DIR$" />
|
||||||
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
|
</component>
|
||||||
|
</module>
|
Loading…
Reference in New Issue