package git import ( "alpha.dagger.io/dagger" "alpha.dagger.io/os" ) // Commit & push to git repository #Commit: { // Git repository repository: { // Repository source code source: dagger.#Artifact // Repository remote URL remote: dagger.#Input & {string} // Authentication token (PAT or password) authToken: dagger.#Input & {*null | dagger.#Secret} // Git branch branch: dagger.#Input & {string} } // Username name: dagger.#Input & {string} // Email email: dagger.#Input & {string} // Commit message message: dagger.#Input & {string} // Content to commit content: dagger.#Artifact // Force push options force: dagger.#Input & {*false | bool} _ctr: os.#Container & { image: #Image command: #""" # Move changes into repository mv /input/content/* . # Commit changes git add . git -c user.name="$USER_NAME" -c user.email="$USER_EMAIL" commit -m "$COMMIT_MESSAGE" # Push git push "$OPT_FORCE" -u "$GIT_REMOTE" HEAD:refs/heads/"$GIT_BRANCH" # Retrieve commit hash git rev-parse --verify HEAD | tr -d '\n' > /commit.txt """# dir: "/input/repo" mount: { "/input/repo": from: repository.source "/input/content": from: content } env: { USER_NAME: name USER_EMAIL: email COMMIT_MESSAGE: message GIT_BRANCH: repository.branch GIT_REMOTE: repository.remote if force { OPT_FORCE: "-f" } } if repository.authToken != null { env: GIT_ASKPASS: "/get_authToken" files: "/get_authToken": { content: "cat /secrets/authToken" mode: 0o500 } secret: "/secrets/authToken": repository.authToken } } // Commit hash hash: { os.#File & { from: _ctr path: "/commit.txt" } }.contents & dagger.#Output }