53ningen.com

@gomi_ningen's Website

GitLab での CI/CD 入門

GitLab の CI/CD を学んだ記録

Hello, World!

  1. Repository のルートに .gitlab-ci.yml を作成
  2. ジョブの定義を行うと Hello, World! できる
stages: - dev hello-job1: stage: dev script: - echo "Hello, $GITLAB_USER_LOGIN!" - echo "This is $CI_COMMIT_BRANCH branch." - sleep 5 hello-job2: stage: dev script: - echo "Hello, World!"

イメージの指定

image で指定できる

default: image: ruby:2.7.2 stages: - dev hello-job: stage: dev script: - ruby -v

アーティファクトの指定

生成物は artifact で指定できる

stages: - dev generate-file: stage: dev artifacts: paths: - hoge.txt script: - echo hoge > hoge.txt

このあたりまでおさえれば基本的なことはできそうなので、この記事ではあまり深追いしないこととする

便利な事例集

Markdown テキストから marp での PDF 生成

default: image: marpteam/marp-cli:latest stages: - build generate-pdf: stage: build artifacts: paths: - slide.pdf script: - /home/marp/.cli/docker-entrypoint --pdf slide.md -o slide.pdf --allow-local-files

AWS SAM アプリケーションのデプロイ

  • 公式にチュートリアルがあるのでそのとおりにやればよい: Deploying AWS Lambda function using GitLab CI/CD | GitLab
  • Variables を protected にすると、protected な Branch や Tag でしか環境変数の読み出しができないようになるので注意
    • AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION を設定する
image: python:3.8 stages: - deploy production: stage: deploy before_script: - pip3 install awscli --upgrade - pip3 install aws-sam-cli --upgrade script: - sam build - sam package --output-template-file packaged.yaml --s3-bucket $S3_BUCKET_NAME - sam deploy --template-file packaged.yaml --stack-name hoge-fuga-piyo --s3-bucket $S3_BUCKET_NAME --capabilities CAPABILITY_IAM

Copyright © 53ningen.com