この記事は デジタル創作サークル UniProject Advent Calendar 2025 14 日目の記事です。
前書き
みなさんは GitHub Actions を知っていますか?
タグを付けたり、コードを push したりすると、自動で処理を実行してくれる仕組みです。
これを使って、さまざまな作業を自動化できます。
本記事では、実際に自動化した内容を紹介していきます。
本編
今回はDockerのbuildしてアップロードしたりします、あとGoをビルドしたものをArtifactsとしてダウンロードしたりします。
基本的な使い方
まず、リポジトリの中に.github/workflowsフォルダーを作り、その中に任意の名前+.yamlのファイルを作ります。
中身はこんな感じにします。
name: example
on:
push:
jobs:
example:
runs-on: ubuntu-latest
steps:
- name: Test
run: |
echo "test"
nameはactions一覧などで表示されます。
onではどのようなタイミングでワークフローを実行するかを設定します。
jobsの中で実行内容を定義します。
今回はruns-onでubuntuの最新版を使って、stepsのTestでecho "test"してます
使ってみる
コンテナレジストリにアップロードする
vから始まるタグが打たれた場合Dockerイメージを作成し、コンテナレジストリにアップロードします。
name: Docker Build and Push
on:
push:
tags:
- "v*"
jobs:
BuildAndPush:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Extract tag name
run: |
tagname=${GITHUB_REF#refs/*/} && echo "TAG_NAME=${tagname#v}" >> $GITHUB_ENV
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to Harbor Registry
uses: docker/login-action@v3
with:
registry: registry.uniproject.jp
username: ayane
password: ${{ secrets.HARBOR_TOKEN }}
- name: Build and Push Docker image
uses: docker/build-push-action@v5
with:
context: .
file: ./Dockerfile
push: true
tags: registry.uniproject.jp/ayane/ayane-official-site:${{ env.TAG_NAME }}
Dockerfileなどはほかの記事を参照してみてください
最初のCheckout repositoryでチェックアウトしています。
そのあと、Extract tag nameでタグを取得しています。
Set up Docker BuildxでDockerをセットアップしています。
Login to Harbor Registryでは自分のサークルのコンテナレジストリを使用していますが、Docker Hubやさくらインターネットのコンテナレジストリなども使用できます。
Build and Push Docker imageでは、Dockerfileに従ってビルドし、プッシュします。
Goでbuildする
ビルドした成果物をArtifactsとしてダウンロードするようにしようと思います。
name: Go
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: '1.24'
- name: Build
run: go build -o main .
- name: Test
run: go test -v ./...
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: filename
path: main
今回も同様にチェックアウトし、Set up GoでGoをセットアップしています。
go-versionでGoのバージョンを指定できます。
BuildとTestはrunに書いてある通りのことを実行します。
Upload artifactでArtifactsとしてアップロードがします。
withのnameはファイル名です。

このような形で表示されます。
zipとしてダウンロードも可能ですし、削除もできます。
ここから、releaseに添付するなど、さまざまな用途に利用できます。
おわりに
Github Actionなら、そういうビルドなど自分でしないといけないことを自動化できるので、「この作業自動化できないかな?」というものを自動化してみてはどうでしょうか?
私はクベ関連のイメージの自動化などに使ってたりしています。