master #1

Open
201wita20 wants to merge 8 commits from 201wita20/htlle-da-vorlage:master into master
7 changed files with 186 additions and 22 deletions
Showing only changes of commit e8f727955b - Show all commits

30
.github/workflows/image-build.yml vendored Normal file
View File

@ -0,0 +1,30 @@
name: Build and push docker image
on:
push:
branches:
- main
paths:
- tools/docker/Dockerfile
workflow_dispatch:
jobs:
build-push:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Docker hub login
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v6
with:
context: tools/docker
push: true
tags: ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_REPOSITORY }}:latest

28
.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,28 @@
name: Release
on:
push:
tags:
- v*
permissions:
contents: write
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Create release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref_name }}
release_name: ${{ github.ref_name }}
draft: false
prerelease: false

77
action.yml Normal file
View File

@ -0,0 +1,77 @@
name: Build and send diploma thesis
description: GitHub action to build and send a diploma thesis using the corresponding docker image from school HTL Leoben
author: bitsneak
branding:
icon: mail
color: yellow
inputs:
thesis-path:
description: The path to the filled out diploma thesis folder. If not set it will default to Diplomarbeit
default: Diplomarbeit
required: false
smtp-server:
description: The smtp server of your sending email
required: true
smtp-port:
description: The smtp server port of your sending emai'
required: true
mail-address:
description: The sending email address
required: true
mail-address-password:
description: The password for the sending email address
required: true
teams-mail:
description: The email address of the teams channel the diploma thesis is sent to
required: true
runs:
using: composite
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Cache Docker image
id: cache-docker
uses: actions/cache@v4
with:
path: /tmp/.docker
key: ${{ runner.os }}-docker-${{ hashFiles('**/HTLLE-DA-Vorlage/tools/docker/Dockerfile') }}
restore-keys: |
${{ runner.os }}-docker-
- name: Create Docker cache directory
if: steps.cache-docker.outputs.cache-hit != 'true'
shell: bash
run: mkdir -p /tmp/.docker
- name: Load cached Docker image
if: steps.cache-docker.outputs.cache-hit == 'true'
shell: bash
run: docker load -i /tmp/.docker/image.tar
- name: Pull Docker image
if: steps.cache-docker.outputs.cache-hit != 'true'
shell: bash
run: |
docker pull ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_REPOSITORY }}
docker save ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_REPOSITORY }} -o /tmp/.docker/image.tar
- name: Build diploma thesis
shell: bash
run: docker run -v ${{ github.workspace }}/${{ inputs.thesis-path }}:/workspace ${{ secrets.DOCKERHUB_USERNAME }}/${{ secrets.DOCKERHUB_REPOSITORY }}
- name: Send diploma thesis
uses: dawidd6/action-send-mail@v4
with:
server_address: ${{ inputs.smtp-server }}
server_port: ${{ inputs.smtp-port }}
username: ${{ inputs.mail-address }}
password: ${{ inputs.mail-address-password }}
subject: "Diploma thesis"
body: " "
to: ${{ inputs.teams-mail }}
from: ${{ inputs.mail-address }}
attachments: ${{ inputs.thesis-path }}/diplomarbeit.pdf

View File

@ -1,3 +1,7 @@
# docker tools
The provided Dockerfile allows one to create a docker container taht builds the diploma thesis.
The provided Dockerfile allows one to create a docker container that builds the diploma thesis.
# github tools
The provided GitHub action allow one to build the diploma thesis in an automated workflow.

View File

@ -1,23 +1,8 @@
# Github tools
## General
# GitHub actions
The workflow `Build and send diploma thesis` allows the user to build the diploma thesis via a github workflow and send it to a Microsoft Teams channel.
## Setup
### Microsoft Teams
1. Create a new channel in your Team named `build`.
2. Go to the channel settings of `build` and go to `Get email address`.
![Github Headbar](img/teams-channel-settings.png)
3. Copy the email address which is inside of the sharp brackets.
### GitHub
#### Settings
## Create GitHub secrets
In your GitHub repository you first need to create the secrets the action needs. For that, go to the `Settings` Tab of your repository and under the section `Security` go to `Secrets and variables` and choose to the option `Actions`.
@ -41,7 +26,47 @@ Now it should look like this:
![Github action secret overview](img/github-action-secret-overview.png)
#### Repo
## Setup with published action
In the repo that should use this workflow create a file `.github/workflows/thesis.yml` and paste following contents into it. Do not forget to create the secrets.
```yml
name: Build and send diploma thesis
on:
push:
workflow_dispatch:
jobs:
build-and-send:
runs-on: ubuntu-latest
steps:
- name: Build and send diploma thesis
uses: bitsneak/TestingDABuild@v0.1.3
with:
# if the folder where the template is filled out has a different name than 'Diplomarbeit'
#thesis-path: folder_name
smtp-server: ${{ secrets.SMTP_SERVER }}
smtp-port: ${{ secrets.SMTP_PORT }}
mail-address: ${{ secrets.MAIL }} # do not use school email address
mail-address-password: ${{ secrets.MAIL_PASSWORD }} # when using gmail an app password must be used
teams-mail: ${{ secrets.TEAMS_MAIL }}
```
## Setup without published action
### Microsoft Teams
1. Create a new channel in your Team named `build`.
2. Go to the channel settings of `build` and go to `Get email address`.
![Github Headbar](img/teams-channel-settings.png)
3. Copy the email address which is inside of the sharp brackets.
### GitHub
Create a folder `.github/workflows` in the root of your repository. You can now choose between `diploma-thesis-docker.yml` and `diploma-thesis-manual.yml` to paste into the newly created folder. The difference between them is, that the **-docker** uses the Docker image (for new diploma theses) and the **-manual** installs all the dependencies in the action itself (for old diploma theses).
@ -50,7 +75,7 @@ Create a folder `.github/workflows` in the root of your repository. You can now
- Sending the diploma thesis, and therefore automated emails, using a school email address is not supported. Therefore use an email address that does not correspond to your school email address.
- If you use Gmail as a sending email address, you have to generate an app password and use this instead of your normal password. [Manual](https://knowledge.workspace.google.com/kb/how-to-create-app-passwords-000009237)
# Credentials
## Credentials
- ducumentation
- Schrempf Marko

View File

@ -9,7 +9,7 @@ on:
workflow_dispatch:
jobs:
build:
build-send::
runs-on: ubuntu-latest
steps:

View File

@ -9,7 +9,7 @@ on:
workflow_dispatch:
jobs:
build:
build-send::
runs-on: ubuntu-22.04
steps: