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

More than 1 year has passed since last update.

今年の振り返りAdvent Calendar 2023

Day 10

electronアプリをパイプラインでgitlabのパッケージに登録

Last updated at Posted at 2023-12-11

はじめに

この記事は2023年度の振り返りです。

前回の記事で、パイプライン上でminIOにデプロイするものを作成しました。
ただ、もしminIOが消えてしまったときのことを考慮して、gitlabそのものにもバックアップを取っておきたいというのが今回の趣旨になります。

CD(Code Deploy)

会社ではgitlabを利用してるので、gitlab-runnerを利用した内容になります

variables(一部抜粋)
variables:
  WIN_BINARY: "${APPNAME}-${VERSION}-setup.exe"
build_job(一部抜粋)
build_job:
  stage: build
  image: electronuserland/builder:18-wine
  rules:
    - if: $CI_COMMIT_TAG
  before_script:
    - curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
    - unzip awscliv2.zip
    - ./aws/install -i /usr/local/aws-cli -b /usr/local/bin
    - export AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID
    - export AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY
    - aws --version
    - cat /etc/*-release
    - npm install --force
    - rm -rf dist
  script:
    - sed "s/0.0.0/${CI_COMMIT_TAG}/g" package.json > _package.json && mv _package.json package.json
    - export VERSION=$(node -e "console.log(require('./package.json').version)")
    - echo "VERSION=$VERSION" >> variables.env
    - export APPNAME=$(node -e "console.log(require('./package.json').name)")
    - echo "APPNAME=$APPNAME" >> variables.env
    - cat variables.env
    - npm run build:win:publish
  artifacts:
    reports:
      dotenv: variables.env
    name: $CI_COMMIT_REF_SLUG
    paths:
      - $CI_PROJECT_DIR/dist/*.*
    expire_in: 1 month
    when: on_success
upload_job(一部抜粋)
upload_job:
  stage: upload
  needs:
    - job: build_job
      artifacts: true
  rules:
    - if: $CI_COMMIT_TAG
  before_script:
    - apk update
    - apk add curl
  script:
    - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file "./dist/${WIN_BINARY}" "${PACKAGE_REGISTRY_URL}/${WIN_BINARY}"'
    - 'curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file "./dist/latest.yml" "${PACKAGE_REGISTRY_URL_YML}/latest.yml"'
    - echo "${PACKAGE_REGISTRY_URL_YML}/latest.yml"
release_job(一部抜粋)
release_job:
  image: registry.gitlab.com/gitlab-org/release-cli
  needs:
    - job: build_job
      artifacts: true
    - job: upload_job
      artifacts: true
  stage: release
  rules:
    - if: $CI_COMMIT_TAG
  script:
    - echo "Release $VERSION"
    - |
      release-cli create --name "Release $VERSION" --tag-name $VERSION \
      --description 'Created using the release-cli. $CI_COMMIT_TITLE' --ref $CI_COMMIT_SHA \
      --assets-link "{\"name\":\"${APPNAME}\",\"url\":\"${PACKAGE_REGISTRY_URL}/${WIN_BINARY}\"}" \
      --assets-link "{\"name\":\"${APPNAME} Latest\",\"url\":\"${PACKAGE_REGISTRY_URL_YML}/latest.yml\"}"

ざっくり説明

  • build_job

    • ビルド→S3へアップロード(前記事)
    • 生成されたexeファイルをartifactsに登録
  • upload_job

    • build_jobでartifactsに保存されたものをパッケージとして登録
    • l_6814799_90_6cac23c68f6de62bfc06e2997303db63.png
  • release_job

    • upload_jobで作られたパッケージを元にリリースノートを生成
    • リリースノートにパッケージを紐づけする
    • l_6814799_91_8a0a65c8fb912c2f957f00b45d8dc51a.png

さいごに

フロントのCDは以上となります。
ここまで色々試行錯誤しましたが、無事に利用できるレベルまでできたので良かったです。
CI側がまだ薄いので、今後の課題として頑張っていきたいと思います。

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