Skip to content

Commit 7d33d00

Browse files
authored
Merge pull request blowfishpro#17 from blowfishpro/GithubActions
Move CI to Github Actions
2 parents 94a1675 + 281d8ae commit 7d33d00

9 files changed

Lines changed: 160 additions & 249 deletions

File tree

Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,147 @@
1+
name: Build and Test
2+
3+
on: [push, pull_request]
4+
5+
jobs:
6+
build-and-test:
7+
name: Build and Test
8+
runs-on: ubuntu-latest
9+
outputs:
10+
ksp-version: ${{ steps.set-ksp-version.outputs.ksp-version }}
11+
release-package-name: ${{ steps.set-release-package-name.outputs.release-package-name }}
12+
release-changelog: ${{ steps.extract-single-changelog.outputs.changelog-single }}
13+
steps:
14+
- name: Checkout code
15+
uses: actions/checkout@v2
16+
with:
17+
fetch-depth: 100
18+
- name: Fetch master
19+
run: git fetch --depth=100 origin master
20+
- name: Fetch tags
21+
run: git fetch --depth=1 --tags origin
22+
- name: Describe current revision with tags
23+
id: describe-tags
24+
run: |
25+
GIT_TAGISH="$(git describe --tags)"
26+
echo "${GIT_TAGISH}"
27+
echo "::set-output name=git-tagish::${GIT_TAGISH}"
28+
- name: Install Ruby
29+
uses: ruby/setup-ruby@v1
30+
- name: Install NuGet
31+
uses: nuget/setup-nuget@v1
32+
- name: Install Gems
33+
run: bundle install
34+
- name: Install NuGet packages
35+
run: nuget restore
36+
- name: Set KSP Version
37+
id: set-ksp-version
38+
run: |
39+
KSP_VERSION="$(cat ./KSP_VERSION)"
40+
echo "KSP Version: ${KSP_VERSION}"
41+
echo "::set-output name=ksp-version::${KSP_VERSION}"
42+
- name: Download KSP DLLs
43+
id: download-ksp-dlls
44+
run: |
45+
aws --region us-east-1 --no-sign-request s3 cp s3://blowfish-ksp-dlls/ksp-${{ steps.set-ksp-version.outputs.ksp-version }}.zip '/tmp/KSP_DLLs.zip'
46+
KSP_DLL_PATH="/opt/ksp/assembly/${{ steps.set-ksp-version.outputs.ksp-version }}"
47+
echo "::set-output name=ksp-dll-path::${KSP_DLL_PATH}"
48+
mkdir -p "${KSP_DLL_PATH}"
49+
unzip '/tmp/KSP_DLLs.zip' -d "${KSP_DLL_PATH}"
50+
rm '/tmp/KSP_DLLs.zip'
51+
- name: Run Rubocop
52+
run: bundle exec rubocop
53+
- name: Compile Project
54+
run: msbuild /p:Configuration=Release /p:ReferencePath="${{ steps.download-ksp-dlls.outputs.ksp-dll-path }}"
55+
- name: Extract Changelog
56+
run: |
57+
curl 'https://raw.githubusercontent.com/wiki/blowfishpro/SimpleAdjustableFairings/Changelog.md' -o "${RUNNER_TEMP}/SimpleAdjustableFairings-Changelog-all.md"
58+
bundle exec extract-changelog -u "$(git describe --tags)" -i "${RUNNER_TEMP}/SimpleAdjustableFairings-Changelog-all.md" -o "${RUNNER_TEMP}/SimpleAdjustableFairings-Changelog-current.md"
59+
- name: Extract changelog for current release
60+
id: extract-single-changelog
61+
if: startsWith(github.ref, 'refs/tags/v')
62+
shell: bash
63+
run: |
64+
CHANGELOG_SINGLE_CONTENT="$(bundle exec extract-changelog -s "${GIT_TAGISH}" -i "${RUNNER_TEMP}/SimpleAdjustableFairings-Changelog-all.md")"
65+
echo '--- Changelog for this version: ---'
66+
echo "${CHANGELOG_SINGLE_CONTENT}"
67+
echo '--- End changelog ---'
68+
CHANGELOG_SINGLE_CONTENT="${CHANGELOG_SINGLE_CONTENT//'%'/'%25'}"
69+
CHANGELOG_SINGLE_CONTENT="${CHANGELOG_SINGLE_CONTENT//$'\n'/'%0A'}"
70+
CHANGELOG_SINGLE_CONTENT="${CHANGELOG_SINGLE_CONTENT//$'\r'/'%0D'}"
71+
echo "::set-output name=changelog-single::${CHANGELOG_SINGLE_CONTENT}"
72+
- name: Create version file
73+
id: create-version-file
74+
run: |
75+
VERSION_FILE="${RUNNER_TEMP}/SimpleAdjustableFairings.version"
76+
bundle exec fill-version "${GITHUB_WORKSPACE}/templates/SimpleAdjustableFairings.version.erb" "${VERSION_FILE}"
77+
echo "::set-output name=version-file::${VERSION_FILE}"
78+
- name: Assemble Release
79+
id: assemble-release
80+
run: |
81+
RELEASE_DIR="${RUNNER_TEMP}/release"
82+
echo "Release dir: ${RELEASE_DIR}"
83+
mkdir -v "${RELEASE_DIR}"
84+
echo "::set-output name=release-dir::${RELEASE_DIR}"
85+
cp -v -R "${GITHUB_WORKSPACE}/GameData" "${RELEASE_DIR}"
86+
cp -v "${GITHUB_WORKSPACE}/README.md" "${RELEASE_DIR}"
87+
cp -v "${GITHUB_WORKSPACE}/LICENSE" "${RELEASE_DIR}"
88+
cp -v "${RUNNER_TEMP}/SimpleAdjustableFairings-Changelog-current.md" "${RELEASE_DIR}/CHANGELOG.md"
89+
cp -v "${GITHUB_WORKSPACE}/README.md" "${RELEASE_DIR}/GameData/SimpleAdjustableFairings"
90+
cp -v "${GITHUB_WORKSPACE}/LICENSE" "${RELEASE_DIR}/GameData/SimpleAdjustableFairings"
91+
cp -v "${RUNNER_TEMP}/SimpleAdjustableFairings-Changelog-current.md" "${RELEASE_DIR}/GameData/SimpleAdjustableFairings/CHANGELOG.md"
92+
cp -v "${{ steps.create-version-file.outputs.version-file }}" "${RELEASE_DIR}/GameData/SimpleAdjustableFairings/SimpleAdjustableFairings.version"
93+
- name: Set release package name
94+
id: set-release-package-name
95+
run: echo "::set-output name=release-package-name::SimpleAdjustableFairings_${{ steps.describe-tags.outputs.git-tagish }}"
96+
- name: Upload result as artifact
97+
uses: actions/upload-artifact@v1
98+
with:
99+
name: ${{ steps.set-release-package-name.outputs.release-package-name }}
100+
path: ${{ steps.assemble-release.outputs.release-dir }}
101+
release:
102+
name: Release
103+
needs: build-and-test
104+
if: startsWith(github.ref, 'refs/tags/v')
105+
runs-on: ubuntu-latest
106+
steps:
107+
- name: Download release package artifact
108+
id: download-release
109+
uses: actions/download-artifact@v2
110+
with:
111+
name: ${{ needs.build-and-test.outputs.release-package-name }}
112+
path: release/${{ needs.build-and-test.outputs.release-package-name }}
113+
- name: Upload .version file to S3
114+
env:
115+
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
116+
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
117+
run:
118+
aws s3 cp "${{ steps.download-release.outputs.download-path }}/GameData/SimpleAdjustableFairings/SimpleAdjustableFairings.version" "s3://blowfish-ksp-simpleadjustablefairings-avc/versions/$(git describe --tags)/SimpleAdjustableFairings.version"
119+
- name: Package release
120+
id: package-release
121+
working-directory: ${{ steps.download-release.outputs.download-path }}
122+
run: |
123+
RELEASE_FILENAME="${RUNNER_TEMP}/${{ needs.build-and-test.outputs.release-package-name }}.zip"
124+
echo "Release filename: ${RELEASE_FILENAME}"
125+
zip -v -r "${RELEASE_FILENAME}" *
126+
echo "::set-output name=release-package-filename::${RELEASE_FILENAME}"
127+
- name: Create release
128+
id: create-release
129+
uses: actions/create-release@v1
130+
env:
131+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
132+
with:
133+
prerelease: true
134+
tag_name: ${{ github.ref }}
135+
release_name: SimpleAdjustableFairings ${{ github.ref }} for KSP ${{ needs.build-and-test.outputs.ksp-version }}
136+
body: ${{ needs.build-and-test.outputs.release-changelog }}
137+
- name: Upload package to release
138+
uses: actions/upload-release-asset@v1
139+
env:
140+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
141+
with:
142+
upload_url: ${{ steps.create-release.outputs.upload_url }}
143+
asset_path: ${{ steps.package-release.outputs.release-package-filename }}
144+
asset_name: ${{ needs.build-and-test.outputs.release-package-name }}
145+
asset_content_type: application/zip
146+
- name: Print release url
147+
run: echo "Release successful! You can view it at ${{ steps.create-release.outputs.html_url }}"

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,3 +238,4 @@ $RECYCLE.BIN/
238238

239239
*.zip
240240
Properties/
241+
Gemfile.lock

.tool-versions

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
ruby 3.1.0

.travis.yml

Lines changed: 0 additions & 43 deletions
This file was deleted.

Gemfile

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# frozen_string_literal: true
2+
3+
source 'https://rubygems.org'
4+
5+
gem 'bundler'
6+
gem 'ksp-ci', git: 'https://github.com/blowfishpro/ksp-ci.git', ref: 'v3.0.0'
7+
gem 'rubocop', '~> 0.76.0'

SimpleAdjustableFairings/SimpleAdjustableFairings.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@
6969
</PropertyGroup>
7070
<PropertyGroup>
7171
<PreBuildEvent>
72-
sh -e -c "cd '$(SolutionDir)' &amp;&amp; 'bin/fill-version' '$(SolutionDir)/templates/AssemblyInfo.cs.erb' '$(ProjectDir)/Properties/AssemblyInfo.cs'"
72+
sh -e -c "cd '$(SolutionDir)' &amp;&amp; bundle exec fill-version '$(SolutionDir)/templates/AssemblyInfo.cs.erb' '$(ProjectDir)/Properties/AssemblyInfo.cs'"
7373
</PreBuildEvent>
7474
</PropertyGroup>
7575
<PropertyGroup>

0 commit comments

Comments
 (0)