4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

この記事は デジタル創作サークル 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のバージョンを指定できます。
BuildTestはrunに書いてある通りのことを実行します。
Upload artifactArtifactsとしてアップロードがします。
withnameはファイル名です。
image.png
このような形で表示されます。
zipとしてダウンロードも可能ですし、削除もできます。
ここから、releaseに添付するなど、さまざまな用途に利用できます。

おわりに

Github Actionなら、そういうビルドなど自分でしないといけないことを自動化できるので、「この作業自動化できないかな?」というものを自動化してみてはどうでしょうか?
私はクベ関連のイメージの自動化などに使ってたりしています。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?