2021-07-27 18:30
2021-07-27 18:30

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