2
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?

この記事は さくらインターネット Advent Calendar 2025 21日目の記事です。

はじめに

先日正式リリースされた AppRun共用型をGitHub ActionsでCI/CDを実現する方法を紹介します。
今回はGoで作成した簡単なWebサイトをデプロイします。

また、AppRun共用型とは何かは以下の記事をご参考ください。

サンプルコードをクローン

上記のコードをクローンします。

git clone https://github.com/sundaypeople/qiita-apprun-github-actions-guide.git

GitHubで新たなリポジトリを作成し、remote URLを変更します。

git remote set-url origin ${new_repository_url}

サンプルコードの解説

ディレクトリ構成

main.go は、8080 番ポートで動作する Web サービスのバックエンド処理を実装した Go プログラムです。

また、Dockerfileは、マルチステージビルドを利用してDockerイメージを作成するための定義ファイルになっています。

├── .github
│   └── workflows # ワークフローの定義ファイル
│       └── release.yml
├── .gitignore
├── Dockerfile # Dockerイメージを作成するための定義ファイル
├── go.mod
└── main.go # アプリケーションのソースコード

release.yml

.github/workflows/release.ymlに記述しているコードです。
詳細なパラメータに関しては、各Actionのドキュメントをご参照ください。

利用するAppRun共用型のActionは以下のものを利用します。

さくらのコンテナレジストリはDocker Hub互換のレジストリサービスであるため、Docker 用に提供されている GitHub Actions をそのまま利用できます。

name: Release

on:
  push:
    branches:
      - main # mainブランチにpush mergeされた際に実行されます
  workflow_dispatch: # 手動実行

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
        - uses: actions/checkout@v6 # コードをactions環境にクローンします

        - name: Login to Docker Hub
          uses: docker/login-action@v3
          with:
            registry: ${{ vars.CONTAINER_REGISTRY_URL }}
            username: ${{ vars.CONTAINER_REGISTRY_USERNAME }}
            password: ${{ secrets.CONTAINER_REGISTRY_PASSWORD }}

        - name: Build and push
          uses: docker/build-push-action@v6
          with:
            context: "."
            push: true
            tags: ${{ vars.CONTAINER_REGISTRY_URL }}/qiita-apprun-github-actions-guid:${{ github.sha }}

        - name: Deploy on AppRun Shared
          id: apprun
          uses: sundaypeople/sakura-apprun-deploy@v0.0.4
          with:
            access_token: ${{ secrets.APPRUN_ACCESS_TOKEN }} # apiキー作成時に発行されるaccess token(後述)
            access_secret: ${{ secrets.APPRUN_ACCESS_SECRET }} # apiキー作成時に発行されるsecret token(後述)
            application_name: qiita-apprun-github-actions-guid # application名(すでにAppRun共用型上に存在するものですと更新処理が走ります)
            image: ${{ vars.CONTAINER_REGISTRY_URL }}/qiita-apprun-github-actions-guid:${{ github.sha }} # コンテナイメージのタグにgitのコミットハッシュを使用しています。
            container_registry_username: ${{ vars.CONTAINER_REGISTRY_USERNAME }} # コンテナレジストリのユーザ名(後述)
            container_registry_password: ${{ secrets.CONTAINER_REGISTRY_PASSWORD }} # コンテナレジストリのパスワード(後述)

            port: 8080
            min_scale: 0
            max_scale: 1

        - name: Show URL
          run: echo "URL = ${{ steps.apprun.outputs.public_url }}"

sundaypeople/sakura-apprun-deploy@v0.0.4で指定しているパラメータについて解説します。

パラメータ 説明
access_token apiキー作成時に発行されるaccess token(後述)
access_secret apiキー作成時に発行されるsecret token(後述)
application_name application名(すでにAppRun共用型上に存在するものですと更新処理が走ります)
image コンテナイメージのタグにgitのコミットハッシュを使用しています。
container_registry_username コンテナレジストリのユーザ名(後述)
container_registry_password コンテナレジストリのパスワード(後述)
port アプリケーションが使用しているPortを指定します
min_scale 最小スケール値
max_scale 最大スケール値

その他にも、パケットフィルターや環境変数なども指定できます。

AppRun共用型は、最後にデプロイしたアプリケーションの構成情報と今回の構成情報が同一の場合は、新しいバージョンは作成されません。
そのため、DockerイメージのタグにGitのコミットハッシュを使用することで、コード変更と共にコンテナイメージが必ず更新されるように設定しています。

注意
AppRun共用型向けアクション(sakura-apprun-deploy)は、指定されたアプリケーション名が存在しない場合は新規作成し、既に存在する場合は更新を行います。

そのため、すでにAppRun共用型をご利用中の方は、意図しない上書きを防ぐため、指定する application 名が既存のアプリケーション名と重複していないかあらかじめご確認ください。

実際に動かしてみます

APIキーの作成

GitHub Actionsを利用して、アプリケーションを作成するためには、APIキーが必要です。
https://manual.sakura.ad.jp/cloud/api/apikey.html
上記のマニュアルを参考に作成してください。

項目 内容
APIキーの種類 リソース操作APIキー
アクセスレベル 作成・削除
サービスへのアクセス権 AppRun

アクセストークンとアクセスシークレットを控えておいてください。

コンテナレジストリを作成

上記のマニュアルを参考にコンテナレジストリを作成してください。
また、push権限を持つユーザを作成し、ホスト名とユーザ名とパスワードを控えておいてください。

必要な変数、シークレットをGitHubに保存

GitHubのsettingsの中にあるActionsからsecretsとvariablesを先ほど作成したものを登録していきます。

  • variables
    • CONTAINER_REGISTRY_URL: コンテナレジストリのホスト名
    • CONTAINER_REGISTRY_USERNAME: コンテナレジストリのユーザ名
  • secrets
    • CONTAINER_REGISTRY_PASSWORD: コンテナレジストリのパスワード
    • APPRUN_ACCESS_TOKEN: APIキーのアクセストークン
    • APPRUN_ACCESS_SECRET: APIキーのアクセスシークレット

スクリーンショット 2025-12-18 10.31.40.png

push

mainブランチに対して、pushを行ってください。

$ git push origin main

Actionsを確認

先ほどのmainブランチへのpushをトリガーにActionsが動いているはずです。
GitHub のリポジトリにアクセスして、Actions のタブを開きます。
実行が成功すると、以下のように緑のチェックマークがつき、URLが表示されます。
スクリーンショット 2025-12-18 2.40.07.png
表示されたURLにアクセスすると、作成したWebページが表示されます。
スクリーンショット 2025-12-18 3.00.59.png

また、AppRunのコントロールパネルへアクセスすると、アプリケーションが反映されています。
スクリーンショット 2025-12-18 2.44.16.png

2
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
2
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?