この記事は さくらインターネット 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キーのアクセスシークレット
push
mainブランチに対して、pushを行ってください。
$ git push origin main
Actionsを確認
先ほどのmainブランチへのpushをトリガーにActionsが動いているはずです。
GitHub のリポジトリにアクセスして、Actions のタブを開きます。
実行が成功すると、以下のように緑のチェックマークがつき、URLが表示されます。

表示されたURLにアクセスすると、作成したWebページが表示されます。


