Skip to content

Commit

Permalink
Github actionsでの自動ビルドとリリース (#3)
Browse files Browse the repository at this point in the history
* Fix build script for Github actions

* Add snapshot build workflow on Github actions

* fix directory name

* fix deleting release

* fix version of github-script

* fix typo

* fix tag re-creating

* fix typo

* fix error

* fix workflow

* test for ci

* delete error handling

* add deploy job

* スクリプトの変更

* add error handling

* fix typo

* Enabling LFS

* Set false to lfs for test

* add slack alert test

* alert test

* Split build and test jobs into the reusable workflow

* add job section

* fix typo

* set snapshot release name

* add release workflow

* add pullrequest workflow

* chaching pip dependency

* add register to actlab site

* set lfs true

* fix secret name SLACK_WORKFLOW_WEBHOOK_URL to SLACK_ALERT_WEBHOOK_URL

* Add support for Japanese Standard Time in makeSnapshotVersionNumber()

* test register to beta server

* fix import error

* fix import error

* install WX for register actlab site

* fix urllib error

* built version output

* fix typo

* Fixed missing parentheses

* add imports

* fixed github output path

* add quotation

* delete test code

* turn off LFS function of checkout

* Remove checkout step in release and snapshot deploy jobs

* Remove Appveyor configuration files
  • Loading branch information
guredora403 authored Jan 4, 2024
1 parent e04da26 commit 45ac553
Show file tree
Hide file tree
Showing 7 changed files with 224 additions and 145 deletions.
10 changes: 10 additions & 0 deletions .github/workflows/pullRequest.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
name: check for pull request into master

on:
pull_request:
branches:
- master

jobs:
build:
uses: ./.github/workflows/testAndBuild.yml
49 changes: 49 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: Build and release for official

on:
push:
tags:
- "*.*.*"

jobs:
build:
uses: ./.github/workflows/testAndBuild.yml
with:
official_release: true

deploy:
needs: build
runs-on: windows-latest

steps:
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: ${{ github.event.repository.name }}
path: ./

- name: Deploy to GitHub
uses: softprops/action-gh-release@v1
with:
body: ${{ github.event.repository.name }} official release
draft: true
files: |
./${{ github.event.repository.name }}-*.zip
./${{ github.event.repository.name }}-*.json
error_notify:
runs-on: ubuntu-latest
needs: deploy
if: ${{ failure() }}
steps:
- name: Send GitHub Action trigger data to Slack workflow
uses: slackapi/slack-github-action@v1
with:
payload: |
{
"text": "Github actions build failed! <${{ github.server_url }}/${{ github.repository }}|${{ github.event.repository.name }}>のofficial releaseビルドが失敗しました。\n<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|対象のrun>お確認し、対応着手時・完了後は、本チャンネルにて経緯を報告ください。"
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_ALERT_WEBHOOK_URL }}
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK

83 changes: 83 additions & 0 deletions .github/workflows/snapshot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
name: Build and release for snapshot

on:
push:
branches:
- master

jobs:
build:
uses: ./.github/workflows/testAndBuild.yml

deploy:
needs: build
runs-on: windows-latest

steps:
- name: Download artifact
uses: actions/download-artifact@v4
with:
name: ${{ github.event.repository.name }}
path: ./

- name: Re-create the tag
uses: actions/github-script@v7
with:
script: |
const { owner, repo } = context.repo
const tagName = repo + "-latestcommit"
try {
// Fetch the release by its tag
const { data: release } = await github.rest.repos.getReleaseByTag({ owner, repo, tag: tagName })
// Delete the release if exists
await github.rest.repos.deleteRelease({ owner, repo, release_id: release.id })
console.log("deleted release");
} catch(err) {
if(err.status !== 404){
throw err;
}
console.log('No release found for deletion');
}
try {
await github.rest.git.deleteRef({owner, repo, ref: "tags/" + tagName})
console.log("deleted tag");
} catch(err) {
console.log('Failed to delete tag'+err.message);
}
try {
await github.rest.git.createRef({owner, repo, ref: "refs/tags/" + tagName, sha: context.sha})
console.log("created tag");
} catch(err) {
console.log('Failed to create tag'+err.message);
}
- name: Deploy to GitHub
uses: softprops/action-gh-release@v1
with:
name: Snapshot
tag_name: ${{ github.event.repository.name }}-latestcommit
body: Automatic build from master branch
files: |
./${{ github.event.repository.name }}-*.zip
./${{ github.event.repository.name }}-*.json
- name: register snapshot to actlab site
run: |
curl "https://actlab.org/api/addAlphaVersion?repo_name=${{ github.repository }}&commit_hash=${{ github.sha }}&version=${{ needs.build.outputs.build_version }}&password=${{ secrets.SCRIPT_PASSWORD }}"
error_notify:
runs-on: ubuntu-latest
needs: deploy
if: ${{ failure() }}
steps:
- name: Send GitHub Action trigger data to Slack workflow
uses: slackapi/slack-github-action@v1
with:
payload: |
{
"text": "Github actions build failed! <${{ github.server_url }}/${{ github.repository }}|${{ github.event.repository.name }}>のビルドが失敗しました。\n<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|対象のrun>お確認し、対応着手時・完了後は、本チャンネルにて経緯を報告ください。"
}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_ALERT_WEBHOOK_URL }}
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK

67 changes: 67 additions & 0 deletions .github/workflows/testAndBuild.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
name: Test and build

on:
workflow_call:
inputs:
official_release:
description: Whether this is an official release
default: false
type: boolean
outputs:
build_version:
description: Version of the built package
value: ${{ jobs.build.outputs.build_version }}

jobs:
build:
runs-on: windows-latest
outputs:
build_version: ${{ steps.output_version.outputs.version }}

steps:
- name: Check out repository
uses: actions/checkout@v4

- name: Set up Python
uses: actions/setup-python@v5
with:
architecture: x86
python-version: 3.8
cache: pip

- name: Install requirements
run: |
python -m pip install -r requirements.txt
- name: Test
run: |
python -m unittest discover test
- name: Set tag name if This is an official release
run: echo "TAG_NAME=$($env:GITHUB_REF.Replace('refs/tags/', ''))" >> $env:GITHUB_ENV
if: ${{ inputs.official_release }}

- name: Build
run: |
python tools\build.py
env:
COMMIT_TIMESTAMP: ${{ github.event.head_commit.timestamp}}

- name: output version
id: output_version
shell: python
run: |
import os, sys
sys.path.append(os.getcwd())
import constants
with open(os.environ["GITHUB_OUTPUT"], mode = "a") as f:
f.write("version="+constants.APP_VERSION)
- name: Archive production artifacts
uses: actions/upload-artifact@v4
with:
name: ${{ github.event.repository.name }}
path: |
./${{ github.event.repository.name }}-*.zip
./${{ github.event.repository.name }}-*.json
53 changes: 0 additions & 53 deletions appveyor-release.yml

This file was deleted.

71 changes: 0 additions & 71 deletions appveyor.yml

This file was deleted.

Loading

0 comments on commit 45ac553

Please sign in to comment.